Linux: ルートパーティションを別ディスクに移動
Debian GNU/Linux 5.0 において、PC カードスロットの USB 2.0 インタフェースカードに接続しているデバイス (今回はフラッシュメモリ) をルートパーティションとして使用できるか試したかったので、「Momonga Linux/ルートパーティションの移動 - yohgaki's wiki」を参考にさせてもらい、実際にやってみた。
※ここで記載していることは、ほとんど無検証である。たまたま上手くいっただけかも知れず、あくまでも備忘録という扱いである。
※この情報を利用される際はくれぐれも自己責任で。
検証用マシンのディスク構成は下記の通り。
・ルートパーティション移動前
/dev/hda1 -> /boot
/dev/hda2 -> /
/dev/hda4 -> Swap
・ルートパーティション移動後
/dev/hda1 -> /boot
/dev/sda1 -> /
/dev/sda2 -> Swap
上記のようなかたちで作業を行ったところ、フラッシュメモリのパーティションをルートパーティションとして起動することができた。
だたし、フラッシュメモリで運用するのはちょっと怖いので、そのうち HDD に再度移行しようかと思っている。
※ここで記載していることは、ほとんど無検証である。たまたま上手くいっただけかも知れず、あくまでも備忘録という扱いである。
※この情報を利用される際はくれぐれも自己責任で。
検証用マシンのディスク構成は下記の通り。
・ルートパーティション移動前
/dev/hda1 -> /boot
/dev/hda2 -> /
/dev/hda4 -> Swap
・ルートパーティション移動後
/dev/hda1 -> /boot
/dev/sda1 -> /
/dev/sda2 -> Swap
- カーネル再構築を行い、PCMCIA をカーネルに組み込むようにし、そのカーネルを該当 Linux マシンにインストールする。
※該当マシンの処理速度が遅いので、カーネル再構築は VMware Fusion 上にインストールした Debian GNU/Linux 5.0 にて行ったのだが、無論実機でも良いはず。
※参考までに、実際に作成した .config ファイルをここに置いておく。(ACPI 関係と、機種固有と思われるいくつかのモジュールは外してある。また、Processor family は Pentium-III/Celeron(Coppermine)/Pentium-III Xeon とし、High Memory Support は OFF としている。) - インストールしたカーネルでシングルユーザモードにて起動し、あらかじめ初期化などをして準備しておいたフラッシュメモリに /proc, /sys, /dev を除いた全てのファイル・ディレクトリを所有権・権限ともに保ったままコピー。
/dev/sda1 を /mnt/dst にマウントして、下記のコマンドで行った。
# rsync -a --exclude /proc --exclude /sys --exclude /dev --exclude /mnt/dst / /mnt/dst - /mnt/dst に chroot する。
※これより下記は、chroot 環境下での作業。(ファイルパスなどに注意。) - /etc/fstab と /boot/grub/menu.lst にてルートパーティションを指定しているデバイスの部分を、新しくルートパーティションにしたいデバイス (現在 chroot となっているデバイス) に変更する。
※今回は Swap パーティションも移動しているので、fstab ではそれも変更している。 - /dev, /proc, /sys をマウントする。
# mkdir /dev
# mkdir /proc
# mkdir /sys
# mount /dev
# mount /proc
# mount /sys - udev を再起動する。
# /etc/init.d/udev stop
# /etc/init.d/udev start - initrd を作成する。
# mkinitramfs -o /boot/initrd.img-<カーネル名> <カーネル名> - chroot 環境下から抜ける。
※これより下記は、chroot 環境下から抜けた状態での作業。(ファイルパスなどに注意。) - /mnt/dst/boot を /mnt/dst/boot.org にリネームする。
- /mnt/dst/boot.org/grub/menu.lst を /boot/grub にコピーする。
- /mnt/dst/boot.org/initrd.img-<カーネル名> を /boot にコピーする。
- 再起動して、フラッシュメモリのパーティションをルートパーティションとして起動できるか確認する。
上記のようなかたちで作業を行ったところ、フラッシュメモリのパーティションをルートパーティションとして起動することができた。
だたし、フラッシュメモリで運用するのはちょっと怖いので、そのうち HDD に再度移行しようかと思っている。
