web-dev-qa-db-ja.com

Linuxディスク全体を縮小、複製して起動するにはどうすればよいですか?

私は1024 GBのディスク(ディスクA)でUbuntu 14.04を実行しており、最大130 GBのスペースしか使用していませんでした。 256 GB SSDディスク(ディスクB)にクローンを作成します。しかし失敗した。

gpartedを使用して、ディスクBを正常に準備するために、ディスクAのパーティションを約180 GBに縮小しました。

どこが間違っていたか教えていただけますか?

1)パーティションテーブルを復元します

ディスクAのパーティションテーブルをバックアップしました。

└──╼ $ Sudo sfdisk -d /dev/sda
# partition table of /dev/sda
unit: sectors

/dev/sda1 : start=     2048, size=   997376, Id=83, bootable
/dev/sda2 : start=   999424, size= 15624192, Id=82
/dev/sda3 : start= 16623616, size=337020928, Id=83
/dev/sda4 : start=        0, size=        0, Id= 0

チップ

/dev/sda1/boot/dev/sda2swap/dev/sda3/

パーティションテーブルを保存

Sudo sfdisk -d /dev/sda > partition.table

次に、パーティションテーブルをディスクB(このシナリオでは/dev/sdc)に復元しようとしました。

ファイルpartition.tablesdasdcに置き換えました。その後、次のようになります。

# partition table of /dev/sdc
unit: sectors

/dev/sdc1 : start=     2048, size=   997376, Id=83, bootable
/dev/sdc2 : start=   999424, size= 15624192, Id=82
/dev/sdc3 : start= 16623616, size=337020928, Id=83
/dev/sdc4 : start=        0, size=        0, Id= 0

次に、復元を正常に実行します。

Sudo sfdisk /dev/sdc < partition.table

2)ディスクパーティションのコンテンツの移行

Sudo dd if=/dev/sda1 of=/dev/sdc1

Sudo dd if=/dev/sda2 of=/dev/sdc2

Sudo dd if=/dev/sda3 of=/dev/sdc3

移行後、/ dev/sdc上のパーティションをマウントして表示できます。

Failure

しかし、SSDディスク(ディスクB)をラップトップに差し込んだ場合、Thinkpad BIOSの出力後に起動しません。エラーは出ませんでしたが、カーソルが点滅しています...

起動時にBIOSがディスクBの/bootを検出しなかったに違いありません。

手伝って頂けますか?どうもありがとう!


更新

トリックを行うためにgrub-install /dev/sdcを使用するように勧められた人がいます。

grub-installの機能を検索しました link 試してみましょう。そして、私はディスクA(MBRがインストールされていた)をかなり確信しています。


更新

dd if=/dev/sda of=/dev/sdc bs=512 count=1を実行した後、ディスクBのみを挿入します。それでも、点滅しているカーソルは同じです。 BIOSの後には何もありません。

grub-install --boot-directory=/mnt/mypartition/boot /dev/sdcを実行した後、ディスクBのみを起動しました。

しかし、grubコンソールが出てきました。そして報告された

enter image description here


更新

今それは働いています!!!

OSとしてディスクAを実行し、USBハードドライブとしてディスクB(/dev/sdc)を実行しているPCで、これを実行した方法を次に示します。

Sudo mount /dev/sdc3 /mnt
Sudo mount /dev/sdc1 /mnt/boot

Sudo grub-install --boot-directory=/mnt/boot /dev/sdc3

次に/mnt/boot/grub/grub.cfgに移動し、ファイルgrub.cfgの2つの項目を置き換えました。 (ファイルgrub.cfgへの書き込み権限を与えることを忘れないでください)

hd1hd0に置き換えます

/dev/sdc3/dev/sda3に置き換えます

次に、ファイルを保存します。 ->コンピュータの電源をオフにします-> SATA経由でディスクBを挿入し、ディスクAを永久に取り出します。 ->起動-> grubエラーが表示されるが起動する

エラーError: invalid environment block. Press any key to continueが発生した場合は、これを確認して解決してください。任意のキーを押すと、システムが起動します。 https://askubuntu.com/questions/191852/error-invalid-environment-block-press-any-key-to-continue

Sudo -i

次に、各コマンドを1つずつ実行します。

cd /boot/grub
rm grubenv
grub-editenv grubenv create
grub-editenv grubenv set default=0
grub-editenv grubenv list
update-grub

今すぐ再起動してください、それはうまくいきます!

これが1024GBのディスクハードドライブを縮小し、システム全体を新しい256GB SSDディスクに移行した方法です。

3
dotslash

私はsfdiskに精通していませんが、ddを使用してパーティションテーブルとMBRをバックアップすることで、同じことを実現できます。

これは私のメモにあり、私は作者ではありません...

MBRのバックアップ

MBRはディスクの最初の512バイトに格納されます。 3つの部分で構成されています。

  • 最初の446バイトにはブートローダーが含まれています。
  • 次の64バイトには、パーティションテーブルが含まれます(各16バイトの4つのエントリ、各プライマリパーティションに1つのエントリ)。
  • 最後の2バイトには識別子が含まれています

MBRをmbr.imgとしてクローンします。

dd if=/dev/sdX of=/path/mbr_file.img bs=512 count=1

パーティションをpX.imgとしてクローン

dd if=/dev/sdX of=/path/pX.img bs=1024

MBRを新しいディスクに復元する

dd if=/path/mbr_file.img of=/dev/sdY bs=512

パーティションを新しいディスクに復元

dd if=/path/pX.img of=/dev/sdX bs=1024

[〜#〜]または[〜#〜]

clonezillaを使用してOSのイメージを作成し、すでにパーティションが作成されているディスクにそれを復元できます。

この方法では、新しいディスクにGRUBを再インストールする必要があるかもしれません

grub-install

grub-mkconfig

そして、スワップパーティションを「新しい」OSに設定します。

mkswap

swapon
2
jc__