web-dev-qa-db-ja.com

Debian / Grub2:ルートパーティションを新しいドライブに移動していますか?

ルートパーティションを新しいドライブに移動し、そのドライブで起動するように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
_

最後に、devsysprocを新しいルートと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
_
32
Janus

基本的なファイルシステムをマウントし、chroot中に次のようにファイルをコピー/変更します。

  • / dev(mount -o bind /dev/ /path/to/chroot/dev
  • / proc(mount -t proc none /path/to/chroot/proc
  • / sys(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など)
23

chrootせずにライブディストリビューションからgrubをインストールできます。

grub-install /dev/hda --root-directory=/mnt/guest/
3
jet

ところで、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で起動していた)から起動すると、もう一方のパーティションが認識されます。

0
user129087