ルートパーティションを新しいドライブに移動し、そのドライブから起動するようにgrub2を設定する方法について提案がある人はいますか? grub-mkconfigに私が望むタスクを指示する幸運がないようです(たとえば、新しいルートにchroot'intを入力すると、すべてのスクリプトが混乱します)。
背景私はヘッドレス低電力NASでDebian Squeezeを実行しています。現在の設定は/
オンsda0
と/boot
オフ(CFカード)です。回転が遅れるため、別途sde0
設定が必要です。これで、すべての大きなディスクを回転させるために使用できる古い2.5インチIDEディスクが見つかりました。/boot
sd[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
にマウントします。sys
proc
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で起動)から起動すると、他のパーティションについて知ることができます。