ルートパーティションを新しいドライブに移動し、そのドライブで起動するようにgrub2を設定する方法についての提案はありますか?私が何をしたいのかをgrub-mkconfigに指示するのは運が悪いようです(たとえば、新しいルートへのchroot'intがすべてのスクリプトを混乱させるだけです)。
背景ヘッドレス低電力NASでDebian Squeezeを実行しています。私の現在のセットアップは_/
_の_sda0
_および_/boot
_(CFカード)の_sde0
_です:_/boot
_が必要なため、別の_sd[a-d]
_が必要ですスピンアップを遅らせます。さて、古い2.5 "IDEディスクを_/
_として使用し、_/boot
_を含めてすべての大きなディスクをスピンダウンできるようにしました。
私が試したこと基本的に私は行きました
_mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
_
それから私は試しました
_chroot /mnt/newroot
update-grub
_
しかし、rootがマウントされているかどうかをgrubが尋ねると失敗しました。次に、_/mnt/newroot/grub/grub.cfg
_でカーネルイメージを検索するように_sdf5
_を設定する中途半端な試みを行い、次に_grub-install --root-directory=/mnt/newroot /dev/sdf
_を続けました。しかし、sdf
から起動しようとしたとき、これは私に重大な救助のプロンプトを表示しました。
私のバックアップ計画は単に再インストールするだけなので、おまけの質問(このチェックマークはありません):lvm2とmdadmの構成を取得するにはどうすればよいですか?すべてファイルシステムに保存されていますか(自動的に検出されますか)、それとも自分で取得する必要がありますか?
解決策(Maciej Piechotkaに感謝):Maciejが指摘するように、すべてのgrubツールを機能させるには、適切なchrootを実行する必要があります。参考までに、これは私がそれをした方法です:
_janus@nasguld:/mnt/newroot$ Sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ Sudo cp -ax /boot /mnt/newroot
_
これですべてのファイルがコピーされました(コピー戦略の説明については here を参照してください)。新しい_etc/fstab
_を修正して、新しいルートを指すようにします。
_janus@nasguld:/mnt/newroot$ diff -u etc/fstab.old etc/fstab
-UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 / ext3 errors=remount-ro 0 1
-UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults 0 2
+UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 / ext3 noatime,errors=remount-ro 0 1
_
最後に、dev
、sys
とproc
を新しいルートとchrootにマウントします。
_janus@nasguld:/mnt/newroot$ Sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ Sudo mount -t proc none /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ Sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ Sudo parted /dev/sdb set 5 boot on
janus@nasguld:/mnt/newroot$ Sudo chroot .
_
これで、見た目どおりに、将来のルートにchrootされました。 Maciejによると、単に_grub-install
_を呼び出しても問題ありませんが、ブートローダーをインストールする前に、生成された_update-grub
_を確認するために、最初に_/boot/grub/grub.cfg
_を実行しました。自動的に更新されるかわかりませんか?
_root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
_
基本的なファイルシステムをマウントし、chroot中に次のようにファイルをコピー/変更します。
mount -o bind /dev/ /path/to/chroot/dev
)mount -t proc none /path/to/chroot/proc
)mount -t sysfs none /path/to/chroot/sys
)ArchにGrub 2をインストールしている間、そしてGentooに何度もインストールしたIIRC。その後、chrootした後、/path/to/chroot
コマンドは単純でした:
grub-install /dev/<boot_disk>
Lvm2(およびmadmを使用していますが、使用していません)以降、構成はディスクに保存されます。デバイスを検出するために読むべき設定があります。デバイスが標準の場所にあると想定します(/dev/sd*
または/dev/hd*
)問題はないはずです。
PS。ライブシステムの単純なcpは信頼できません。問題が発生する可能性のある箇所がいくつかあるからです。
/etc/fstab
およびその他の便利なファイル/tmp
など)chrootせずにライブディストリビューションからgrubをインストールできます。
grub-install /dev/hda --root-directory=/mnt/guest/
ところで、grubでブートセクターに書き込みたくないパーティション(Windowsなど)を追加しているが、コンピューターの起動時にそれをgrubに知らせたい場合は、パーティションを再スキャンして生成できます。端末セッションで次のようにgrub_mkconfigコマンドを使用して、新しいgrub.cfgファイル
cd/boot/grub
Sudo cp grub.cfg ./grub.cfg.old
Sudo grub_mkconfig -o ./grub.cfg
現在のLinuxパーティション(GRUBで起動していた)から起動すると、もう一方のパーティションが認識されます。