ルートパーティションを新しいドライブに移動し、そのドライブで起動するようにgrub2を設定する方法について誰かが提案していますか? grub-mkconfigに何をしたいのかを指示するのはうまくいかないようです(たとえば、新しいルートへのchroot’intは、すべてのスクリプトを混乱させるだけです)。
背景 ヘッドレス低電力NASでDebianSqueezeを実行しています。私の現在の設定は/
です sda0
で および/boot
sde0
で (CFカード):別の/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
しかし、ルートがマウントされているかどうかを尋ねるgrubで失敗しました。
次に、/mnt/newroot/grub/grub.cfg
の設定を中途半端に試みました。 sdf5
でカーネルイメージを検索するには 、続いてgrub-install --root-directory=/mnt/newroot /dev/sdf
。しかし、sdf
から起動しようとすると、grubレスキュープロンプトが表示されました。 。
私のバックアップ計画は再インストールするだけなので、ボーナスの質問(これにはチェックマークはありません):lvm2とmdadmの構成を取得するにはどうすればよいですか?それはすべてファイルシステムに保存されていますか(そして自動的に検出されますか)、それとも自分で取得する必要がありますか?
解決策 (Maciej Piechotkaに感謝します):Maciejが指摘しているように、すべてのgrubツールが機能するには、適切なchrootを実行する必要があります。参考までに、これが私がやった方法です:
[email protected]:/mnt/newroot$ sudo cp -ax / /mnt/newroot
[email protected]:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
これですべてのファイルがコピーされます(コピー戦略の説明については、ここを参照してください)。新しいetc/fstab
を修正します 新しいルートを指すには:
[email protected]:/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へ:
[email protected]:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
[email protected]:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
[email protected]:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
[email protected]:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
[email protected]:/mnt/newroot$ sudo chroot .
これで、見た目どおりに将来のルートにchrootされます。 Maciejによると、grub-install
を呼び出すだけで問題ないはずです。 、しかし私はupdate-grub
を実行しました 最初に、生成された/boot/grub/grub.cfg
を確認します。 ブートローダーをインストールする前に。自動的に更新されるかわかりませんか?
[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
承認された回答:
基本的なファイルシステムをマウントし、次のように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
)
Grub 2をarchにインストールし、Gentooに何度もインストールしているときに機能したIIRC。次に、chrootの後に/path/to/chroot
に移動します コマンドは単純でした:
grub-install /dev/<boot_disk>
lvm2の時点で(そして私はmadmを信じていますが、使用していません)、構成はディスクに保存されています。デバイスを検出するために読み取る必要のある構成があります。デバイスが標準の場所(/dev/sd*
)にあると仮定します または/dev/hd*
)問題はないはずです。
PS。ライブシステムの単純なcpは、うまくいかない可能性のある場所がいくつかあるため、信頼できません。
-
/etc/fstab
を変更するのを忘れた およびその他の有用なファイル - アクセス中に変更されたファイル
- ゴミの処理(
/tmp
など)