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


30

ルートパーティションを新しいドライブに移動し、そのドライブで起動するようにgrub2をセットアップする方法についての提案はありますか?私はgrub-mkconfigにそれが何をしたいのかを指示する運がないようです(例えば、新しいルートにchroot'intするだけですべてのスクリプトが混乱します)。

背景私は、ヘッドレスの低電力NASでDebian Squeezeを実行しています。現在の設定は/オン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、でカーネルイメージを見つけるためのセットアップを中途半端に試みましsdf5grub-install --root-directory=/mnt/newroot /dev/sdf。しかし、これは、から起動しようとしたときにgrubレスキュープロンプトを表示しました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新しいルートを指すように新しいを修正します。

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

最後に、マウントdevsysおよび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

のコンテンツと/etc/default/grubからの正確なトランスクリプトを投稿しupdate-grubます。
ジル 'SO-悪であるのをやめる'

(解決策を追加した後の考え):実際には、問題は、私が更新/etc/fstabしていないということかもしれませんchroot(これはupdate-grub、「\がマウントされていません」という苦情と一致します)。もう一度これを実行する場合は、特別なファイルシステムをchrootにマウントすることなく、最初に試してみます。
ヤヌス

注:再起動する前に/ mnt / newrootをアンマウントすることを忘れないでください!
ジャコモテシオ

ここでは、/ homeをhddに保持したまま、ルートパーティション/を新しいnvmeドライブに移動する方法について説明します。lucasmanual.com/blog/…–
ルーカス

回答:


20

次のような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 to /path/to/chrootcommandは単純に次のとおりでした。

grub-install /dev/<boot_disk>

lvm2の時点で(そして私はmadmを信じていますが、使用していません)、構成はディスクに保存されます。デバイスを検出するために読み込む必要がある設定があります。デバイスが標準の場所(/dev/sd*または/dev/hd*)にある場合、問題はないはずです。


PS。ライブシステムの単純なcpは信頼できません。エラーが発生する可能性のある場所がいくつかあるためです。

  • 変更するの/etc/fstabを忘れた、その他の便利なファイル
  • アクセス中に変更されたファイル
  • ゴミの処理(/tmpなど)

ありがとう。だから基本的に、あなたは私がずさんなchrootをしていると言っている:)適切なchrootで試してみよう。cp -axこの古いHOWTOに従って、(おそらくシングルユーザーランレベルにドロップした後)正常である必要があります:tldp.org/HOWTO/Hard-Disk-Upgrade/copy.html-
ヤヌス

魅力を発揮しました!助けてくれてありがとう。
ヤヌス

1
@ヤヌス:安全のために、Liveディストリビューションからデータをコピーします。うまくいったのですが、うれしいです。
マチェイピエチョトカ

update-grub前にやらなければならなかったinstall-grub
アリーエレイブタウログ

3

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

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

ありがとう。これがここで機能するかどうかはわかりません。理解しているようにgrub-install、grubイメージファイルを更新し、MBRを書き込むだけgrub.cfgです。特に、更新されません。上でコメントしたように、特別なディレクトリをマウントするのはやり過ぎかもしれませんが、chrootはgrub.cfg簡単な方法で更新する方法だとまだ思いますか?
ヤヌス

はい、これも私にはうまくいきませんでした。あなたはupdate-grub仕事に取り掛かる必要があり、その人は--root-directory何も持っていない、いや?
ミタール

0

ところで、ブートセクタに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でブートしていた)からブートすると、他のパーティションが認識されるようになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.