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

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

ルートパーティションを新しいドライブに移動し、そのドライブから起動するようにgrub2を設定する方法について提案がある人はいますか? grub-mkconfigに私が望むタスクを指示する幸運がないようです(たとえば、新しいルートにchroot'intを入力すると、すべてのスクリプトが混乱します)。

背景私はヘッドレス低電力NASでDebian Squeezeを実行しています。現在の設定は/オンsda0/bootオフ(CFカード)です。回転が遅れるため、別途sde0設定が必要です。これで、すべての大きなディスクを回転させるために使用できる古い2.5インチIDEディスクが見つかりました。/bootsd[a-d]//boot

私が試したこと基本的に私は行きました

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot

それから試しました。

chroot /mnt/newroot
update-grub

しかし、これが失敗した場合、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

これですべてのファイルがコピーされました(参照:ここ複製戦略についての議論)。etc/fstab新しいルートを指すようにnewを変更します。

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

最後に、新しいルートとchrootdevにマウントします。sysproc

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 .

今、私たちは見たように将来のルートにルートを変更しました。 Maciejによると、呼び出しだけで大丈夫ですが、ブートローダをインストールgrub-installする前に、update-grub最初に作成された内容を見ました。/boot/grub/grub.cfg自動的に更新されるかどうかわかりませんか?

root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb

答え1

デフォルトのファイルシステムをマウントして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)

IIRCはGrub 2をアーチにインストールし、Gentooに何度もインストールしたときに私に効果的でした。その後、chroot以降のコマンドは/path/to/chroot非常に簡単です。

grub-install /dev/<boot_disk>

lvm2(私はmadmを信じていますが使用しない)から、設定はディスクに保存されます。デバイスを検索するには、読む必要があるいくつかの設定があります。デバイスが標準位置(/dev/sd*または/dev/hd*)にあると仮定すると、問題はありません。


PS。私はリアルタイムシステムのための単純なcpを信頼しません。なぜなら間違っているかもしれないいくつかのことがあるからです:

  • 変更/etc/fstabやその他の便利なファイルを忘れてしまいました。
  • アクセス中にファイルが変更されました
  • ごみ処理(/tmp等)

答え2

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

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

答え3

ただし、Windowsなどのパーティションを追加している場合は、grubが起動セクタに書き込もうとはしませんが、コンピュータの起動時にgrubがこれを知るようにするには、パーティションを再スキャンして端末から作成できます。セッションのように grub_mkconfig コマンドを使用して、新しい grub.cfg ファイルを生成します。

CD /ブート/grub

sudo cp grub.cfg ./grub.cfg.old

sudo grub_mkconfig -o ./grub.cfg

現在のLinuxパーティション(grubで起動)から起動すると、他のパーティションについて知ることができます。

関連情報