複数のLinuxシステム(ライブバージョンを除く)を含むように分割されたUSBスティックを設計したいと思います。具体的には、同じUSBスティックに少なくとも2つの異なるバージョンのFedora、つまり64ビットアーキテクチャ用のFedora 24と32ビットアーキテクチャ用のFedora 8があります。私の意図は、ラップトップのスペースを消費せずに(他のパーティションや仮想マシンを介して)作業に必要なマシン環境を複製し、USBスティックをラップトップに接続してOSを起動することです。
これまで、GRUB2と一緒に32 Go USBスティックにFedora 24をインストールして、Fedora 24ブートとラップトップオペレーティングシステムのいずれかを選択してブートすることができました。どちらもそれぞれ10,01 Gioと500 Mioの2つのパーティションを使用しているため、他のLinuxディストリビューションで使用する予定の未割り当て領域は20 Go未満です。 USBスティックの現在の状態をよりよくプレビューできるように、GPartedを使用してUSBスティックを読み取るときに見た内容は次のとおりです。
問題は、USBスティックを挿入するときに起動メニューからFedora 8を選択できるようにGRUB2を更新するときにFedora 8をUSBスティックに安全に追加する方法がわからないことです(特に私が覚えているように、Fedora 8は以前のGRUB2よりも少し古いです)。特に、次のような質問があります。
- 後でより多くのオペレーティングシステムのためのスペースを確保するために、Fedora 24を持つパーティションのサイズを変更するのは安全ですか?
- USBスティックに新しいパーティションを作成し、ライブバージョンではなく新しいOSをインストールするために従う必要がある一般的な手順は何ですか? (必要に応じて、ライブバージョンで2番目のUSBスティックを使用できます。)
- リストに新しいオペレーティングシステムを表示するためにUSBスティックのGRUB2をどのように更新しますか?
回答いただきありがとうございます。
答え1
USBフラッシュドライブに複数のLinuxディストリビューションをインストールする方法は?
考える:
- USBドライブからBIOSを起動する
- マスターブートレコードパーティション
- GRUB ブートローダ
ツール:
- super_grub2_disk_hybrid_2.02s9.iso
- pmagic_2013_08_01.iso(最後の無料版には32ビットと64ビットが含まれています)
- ストレージディスク必要な唯一のファイルは、プリコンパイルされたバイナリメモリディスクです。
archive/bios/memdisk
- 仮想マシンを備えた業務用コンピュータ
概要:
- USBドライブのパーティションテーブルとブート履歴を消去する
- USBドライブにパーティションを作成する
- 仮想マシンでUSBドライブ用のオペレーティングシステムを作成する
- clonezillaを使用した新しいオペレーティングシステムの複製
- オペレーティングシステムをUSBドライブに復元する
- GRUB2のアップデートとカスタマイズ
ステップ1
ツールを準備し、USBに挿入するオペレーティングシステム、パーティションサイズ、スワップパーティションを使用するかどうかを決定します。
USBは合計32GBのようです。
パーティションを設定してみましょう。
Microsoft の相互運用性に使用される NTFS 16GB パーティション。
Ubuntu14 32ビットサーバー4GB ext4(1GBスワップパーティションを含む)
Ubuntu16 64ビットサーバー8GB ext4(4GBスワップパーティションを含む)
メモ:両方のオペレーティングシステムでスタンバイモードまたは休止状態モードを使用しない場合は、スワップパーティションを共有するか、各オペレーティングシステムパーティションでスワップファイルを使用することもできます。
パーティションレイアウト:
- P1 - 15GB NTFS
- P2 - 4GB拡張4
- P3 - 8GB拡張4
- P4 - 拡張
- E1 - 4GBスワップ
- E2 - 1GBスワップ
メモ:BIOSとMBRは4つのプライマリパーティションしか表示できません。この制限を克服するには、単一のプライマリパーティションの代わりに拡張パーティションを使用します。
ステップ2
USBドライブを準備してください。
「test」という新しい仮想マシンを作成します。この仮想マシンはハードドライブを必要とせず、必要もありません。これによりUSBドライブが作成されます/dev/sda
。これにより、後で作業が簡単になります。
Parted Magic ISOをVMに接続し、ISOから起動します。
USBドライブを接続し、「仮想マシンに転送」
USBがVMに表示されていることを確認し、デバイス番号をメモします。
デスクトップアイコンからPartition Editorを起動します。
私の設定のUSBドライブは次のとおりです。/dev/sda
パーティションテーブルを0にします。これにより、デバイスのすべての情報が削除されます。アーカイブするデータをコピーすることから始めます。
- 誤ったデバイスを初期化するとコンピュータが起動しない可能性があるため、正しいデバイス(たとえば/ dev / sda)が必要です。
dd if=/dev/zero of=/dev/sda bs=512 count=4
GPartedでドライブリストを更新する(ctrl + R)
デバイス - > "msdos"パーティションテーブルの作成
パーティションの作成:
メモ:最後に、残りのスペースを「使用」するためにNTFSパーティションを作成しました。
- スペースのバックエンドに拡張パーティションを作成します。 5GBまたは5120
- 拡張パーティションに2つのスワップパーティションを作成します。 Linux スワップを入力します。 4GB、1GB。拡張パーティションがほぼいっぱいです。
- 未割り当て領域の末尾に2つのオペレーティングシステムパーティションを作成します。 ext4と入力してください。 4GB、8GB。
- 4GBに「Ubuntu14」というラベルを付けます(復元時にラベルが変更されるため、識別に役立ちます)。
- 8GBに「Ubuntu16」というラベルを付けます(復元時にラベルが変わるため、識別に役立ちます)。
- ドライブの先頭に割り当てられていない残りの領域を使用してNTFSデータパーティションを作成します。 NTFSと入力してください。
- NTFSを「データ」としてマーク
変更承認。この程度に近いと見なければなりません。私のUSBドライブは1TBなので、NTFSパーティションははるかに大きいです。
ステップ3
USBドライブに復元するオペレーティングシステムを準備します。
新しい仮想マシンを作成し、オペレーティングシステムをインストールします。この例では、Ubuntu14サーバーは32ビットです。 VMインストールドライブをUSBのパーティションサイズより小さく設定しました。 4GB。インストール中にLVMの代わりにMBRを使用し、インストール時にスワップパーティションが作成されるようにしました。
新しい仮想マシンを作成し、追加のオペレーティングシステムをインストールします。この例では、Ubuntu16サーバーは64ビットです。 VMインストールドライブをUSBのパーティションサイズより小さく設定しました。 8GB。インストール中にLVMの代わりにMBRを使用し、インストール時にスワップパーティションが作成されるようにしました。
各オペレーティングシステムに必要な変更、更新、インストールを実行します。
新しい仮想マシンのシャットダウン
新しい仮想マシンの複製を開始します。
各新しいVMに接続し、pmagic_2013_08_01.iso
ISOから起動します。
各仮想マシンのパーティションを表示します。インストールされているオペレーティングシステムの場所を記録してください。両方でなければなりません/dev/sda1
。 (時間に合わせて調整していない場合)
次に、デスクトップアイコンでclonezillaを使用して各オペレーティングシステムを複製します。クローンされたイメージをSSH経由でデスクトップに配置するので、clonezillaを起動する前にネットワークを設定してください。
クローンジラオプション:
- device-image - デバイス/dev/sda1をイメージに複製します。
- ssh_server - 私のデスクトップに画像を配置します。手の届くところに保管してください。
- 初心者モード - ほとんどのデフォルト値が機能します。
- saveparts - OSパーティションのみが必要です。
- 後で認識できる名前を画像に割り当てます。
- sda1 - オペレーティングシステムのパーティションを選択します。ただ選択肢でなければなりませんが、そうではありません。
- ソースファイルシステムのスキャン/修復をスキップする - VMはすべて清潔で使用可能にする必要があります。
- はい、保存した画像を確認してください。複製されたイメージが正しいファイルであることを確認してください。プロンプトに従ってください。
- 待つ。
- 完全! - このとき電源を切ってください。
ステップ4
オペレーティングシステムイメージをUSBドライブに復元します。
仮想ドライブが接続されていない「テスト」VMに戻ってから起動しますpmagic_2013_08_01.iso
。
USBドライブを「テスト」仮想マシンに転送します。
デスクトップアイコンからPartition Editorを起動します。我々は再びここに戻った。スクリーンショットをご覧ください。
USBパーティションを持つオペレーティングシステムをイメージパーティションと一致させます。
Ubuntu 14:
- ミラーパーティション--/dev/sda1
- USBパーティション--/dev/sda3
Ubuntu 16:
- ミラーパーティション--/dev/sda1
- USBパーティション--/dev/sda2
メモ:
デフォルトでは、このバージョンのclonezillaはイメージを元のものと同じパーティションに復元します。/dev/sda1
到着する/dev/sda1
。これは私たちが望むものではないので、このハッキングは画像をUSBパーティションに復元します。
別のクローン作成されたパーティションにイメージを復元するclonezillaハック:
新しいパーティションIDを使用して、イメージディレクトリのすべてのファイル名を変更します。
/home/jc/clonezilla_images/ubuntu14/sda1*から/home/jc/clonezilla_images/ubuntu14/sda3*へ
/home/jc/clonezilla_images/ubuntu14/parts ファイルの内容を変更します。 「sda1」を「sda3」に交換
Ubuntu16と同じで、数値sda2を調整します。
メモ:VMとUSBのデバイスsdaで始まりました。他のデバイス(例:/ dev / sdb)を使用している場合は、より多くのファイルを変更する必要があります。同じデバイスで両方を使用する方が簡単です。 /dev/sda。
clonezilla経由で画像をUSBドライブに復元する
クローンジラオプション:
- device-image - イメージからデバイス/ dev / sda1を復元します。
- ssh_server - イメージをどこに置いても構いません。
- 初心者モード - ほとんどのデフォルト値が機能します。
- Restoreparts - 個々のパーティションを復元します。
- 回復する画像を選択
- イメージの正しいUSBパーティションを選択してください - Ubuntu14からsda3まで。
- プロンプトに従ってください。
- 待つ。
- コマンドラインプロンプトを入力します。 - 回復する画像があります。
clonezillaを再起動し、すべての画像に対して繰り返します。
復元の間、私のUSBは仮想マシンからマウント解除されたので、USBドライブを再度通過する必要がありました。
ステップ5
USBドライブにGRUBを取り付ける
Grubブートローダは、USBドライブの最初の512バイトにインストールされます。ローダーはgrub.cfgファイルを指します。 Ubuntu16パーティションにパーティションを配置しましょう。することができますどこかにグラップはそれを読むことができます。
これにはホストオペレーティングシステムを使用します。
仮想マシンでリアルタイムオペレーティングシステムを使用してこれを行うことができます。
grub2を含む最新のLinuxオペレーティングシステムを使用する必要があります。
USBを接続します。
私のUSBドライブは現在デバイスとしてマウントされています/dev/sdf
。お使いのデバイスは異なります。
grub.cfg
パーティションが存在する場所にパーティションをインストールします。
メモ:回復された各オペレーティングシステムには、仮想マシンから起動可能なオペレーティングシステムであるため、grub.cfgファイルがあります。 USB ブートローダが指す grub.cfg を指して修正することを確認します。
Ubuntu16 ext4
sudo mount /dev/sdf2 /media/usb_u16
USBデバイスにgrubブートローダをインストールする
sudo grub-install --recheck --boot-directory=/media/usb_u16/boot /dev/sdf
これにより、設定ファイルポインタがUbuntu16パーティションブートディレクトリに配置されます。 Ubuntuのユニバーサルロケーション。どこにいても構いません。
インストールが完了しました。エラーは報告されていません。
grub.cfg
ファイルをテンプレートにします。
sudo grub-mkconfig --output=/media/usb_u16/boot/grub/grub.cfg
ここで重要なのは、grub-mkconfig
USBドライブを検出し、USBドライブにインストールしたオペレーティングシステムの起動エントリを作成することです。不要なのは、ホストにマウントされているすべてのドライブを調べて、そのドライブのエントリを作成することです。
今すべてを削除し、USBブートをテストします。
すべてが正常な場合は、USBオペレーティングシステムから起動できます。戻らないと…
ステップ6 カスタムUSBドライブのgrub.cfg
このUSBドライブを起動すると、USBが別のPCから起動しても、ホストPCにオペレーティングシステムが表示されます。この問題を解決しましょう。
より多くの情報を集めましょう。
各パーティションにはUUID番号が割り当てられます。 USBドライブのUUIDを取得します。
blkid
/dev/sdf2: UUID="078ecc53-f73c-4cc7-9d45-f78aa534b7c5" TYPE="ext4" PARTUUID="00005785-02"
/dev/sdf3: UUID="a4654333-ee62-4dac-8c09-79a034e3125d" TYPE="ext4" PARTUUID="00005785-03"
/dev/sdf4: LABEL="data" UUID="667308CA28B6BB86" TYPE="ntfs" PARTUUID="00005785-04"
/dev/sdf5: UUID="8646e3f8-4f5c-40d4-a409-c4d65bf98d21" TYPE="swap" PARTUUID="00005785-05"
/dev/sdf6: UUID="61b8680c-22c9-4efc-98a1-2aaaa4a7f304" TYPE="swap" PARTUUID="00005785-06"
あなたは違うでしょう。
後で使用するために2つのスワップパーティションUUIDを保存します。/etc/fstab
起動時に自動的にインストールされるようにファイルに追加します。
2つのオペレーティングシステムパーティションUUID:
/dev/sdf2: UUID="078ecc53-f73c-4cc7-9d45-f78aa534b7c5" -- Ubuntu16
/dev/sdf3: UUID="a4654333-ee62-4dac-8c09-79a034e3125d" -- Ubuntu14
これら2つのファイルをgrub設定ディレクトリmemdisk
にコピーし、イメージがある場合はイメージをコピーします。super_grub2_disk_hybrid_2.02s9.iso
splash.jpg
Ubuntu16 ext4
sudo mount /dev/sdf2 /media/usb_u16
sudo cp ./memdisk /media/usb_u16/boot
sudo cp ./super_grub2_disk_hybrid_2.02s9.iso /media/usb_u16/boot
sudo cp ./splash.jpg /media/usb_u16/boot
すでに作成されたバックアップコピーを作成します。grub.cfg
sudo mv /media/usb_u16/boot/grub/grub.cfg /media/usb_u16/boot/grub/grub.cfg.orginal
カスタムメイドgrub.cfg
sudo vi /media/usb_u16/boot/grub/grub.cfg
簡単に言えば、grub.cfg.orginalから最小限のものをコピーするだけです。 grubはinsmod ...コンテンツを設定し、gfxmode = ...コンテンツとブートエントリを表示します。上記のUUID番号を検索すると、スタートアップアイテムを見つけることができます。サブメニュー項目を含むすべての項目をコピーするか、基本項目のみをコピーします。
起動エントリがなくても、ホスト上のすべてのオペレーティングシステムから起動できますmemdisk
。super_grub2_disk_hybrid_2.02s9.iso
これが正しいアプローチではない理由はいくつかありますが、効果があります。
例を修正グラップ構成ファイルこのUSBドライブの場合。
grub.cfg
カスタムファイルを上書きしようとするので、カスタムファイルをバックアップしてください。
sudo cp /media/usb_u16/boot/grub/grub.cfg /media/usb_u16/boot/grub/grub.cfg.custom
ステップ7
インストールされたオペレーティングシステムの調整
- スワップパーティションUUIDを次に追加します。
/etc/fstab
- USB(NTFSデータ、その他OS ext4)のすべての自動マウントパーティション
/etc/fstab
- Ubuntu では、変更に基づいてデフォルトの grub エントリを調整してオペレーティングシステムが更新されると、変更は新しい grub メニューに伝播されます。
テストを見て!
答え2
jc__チュートリアルに関するいくつかの提案とコメント
まず、私の元の投稿に指定された目標を達成する方法についてのチュートリアルを投稿してくれたjc__(もう一度)に感謝します。インストールされているオペレーティングシステムを起動するときは、いくつかの追加のトラブルシューティングを実行する必要があるかもしれませんが、この方法が機能することを確認できます。これが、このチュートリアルに従う際に考慮できるいくつかの点を列挙するためにこの回答を書いた理由です。
0. 以前のディストリビューションを選択した場合は、もう一度確認してください。できる完全に始めましょう
私は、Fedora 8が現在のノートブックのような最新のハードウェアから起動するには古すぎるという事実を悟りました。 (ちなみにFedora 8は2007年頃に発売され、私のノートパソコンは2010年代に制作されました。)そうだったので結局Fedoraをあきらめるようになりました。 8を使ってFedora 14に切り替えました(うまく機能しました)。
しかし、どのようにディストリビューションがコンピュータから正しく起動していることを確認できますか?簡単な方法は、ターゲットディストリビューションのライブバージョンを使用してUSBから起動することです。ライブバージョンですべてが正しく起動したら、VM経由でディストリビューションをインストールし、そのパーティションをUSBスティックに複製し、USBから起動することに問題はありません。
私の場合YUMI - マルチブートUSBジェネレータ私のラップトップで古いFedoraのいくつかのライブバージョンをテストします。もちろん、このアドバイスは、私と同じように以前のディストリビューションを使用する必要がある場合にのみ適用されます。
1. データ分割に FAT32 または ext3/ext4 の使用を検討します。
ある時点で、Ubuntu 16.04はNTFS形式のデータパーティションを処理するのに問題がありました。結局、私はすべてのLinuxディストリビューションで動作する以前のフォーマットであるFAT32で再フォーマットしました。 Linuxだけを使用している場合は、ext3 / ext4も問題ありません(私が知っている限り、Windowsはこれらのファイルシステムを処理できません)。しかし、自分でテストしたことはありませんでした。
これで、USBのOSとホストのOSの間でデータを簡単に共有する方法として、データパーティションを使用します。
2.パーティションの複製にセカンダリUSBスティックを使用することを検討してください。
最初のステップでは、2番目のUSBスティックを持つことがストレージに使用できるため、非常に実用的ですclonezilla
。フォルダをどこに置くかをclonezilla
尋ねる/home/partimag/
メッセージが表示されたら、2番目のUSBを接続せずにメニュー(上記のssh_serverのすぐ下)から最初のオプションを選択します。コンピュータに差し込み、接続して約5秒待ってからEnterキーを押し、フォルダオプションをclonezilla
列挙するときに2番目のUSBスティックを選択します/home/partimag/
。以降の操作はjc__列挙と同じです。
もちろん、このアプローチは結果を変更せず、ホストのUSBスティックパーティションとターゲットオペレーティングシステムを持つパーティションの複製/回復をまったく含まないという利点があります。ディスクをパーティション化するかどうかわからない場合は、次のことを試すことができます。
3.カーネルのロード後にUSBオペレーティングシステムの起動に失敗した場合は、再構築initrd
/initramfs
イメージを実行します。
dracut
ターゲットオペレーティングシステムによっては、Fedora 24を起動すると、キューのタイムアウトなど、このトピックに関するいくつかのコメントで私が要求したのと同様の問題が発生する可能性があります。
私の場合、Fedora 8の特別なケース(項目0を参照)を除いて、画像を再構築して問題を解決しましたinitrd
。ディストリビューションと最新バージョンによっては、イメージにプレフィックスを使用することもinitramfs
できますinitrd
。名前に関係なく、このファイルの目的は同じです。つまり、実際のファイルシステムがマウントされる前に、起動時に一時ファイルシステムを維持することです。このファイルが破損しているか、正しくない、または欠落していると、システムを正しく起動できません。
すべてのLinuxディストリビューションにこのイメージを再構築するためのユーティリティが提供されていることを願っています。私の(簡単な)経験から:
- 以前のディストリビューション:
mkinitrd
- 最近のUbuntuディストリビューション:
mkinitramfs
- 最近のFedoraリリース:
dracut
メモ:イメージを(再)ビルドするときは、すべてのユーティリティでこのファイルを考慮してください/etc/fstab
。すでにこれを活用してください協会USB オペレーティングシステムでパーティションを交換します。では、/etc/fstab
anを使用してUUID
パーティションを表すことができるので、およびを使用して目的のfdisk
スワップblkid
パーティションのUUIDを取得し、/etc/fstab
それに応じて更新します。
chroot
私がリストした3つのコマンドのいずれかを使用してイメージを再構築するには、まず再構築したいオペレーティングシステムinitrd
/initramfs
イメージに移動する必要があります。私は基本的にこれと同じアプローチに従います。地図時間これには、障害のあるオペレーティングシステム(USBオペレーティングシステムの1つなど)があるホストにパーティションをインストールし、いくつかのバインドコマンドを使用してそのパーティションにchroot
正しくインストールすることが含まれます。/mnt
必要に応じて、フォルダ内にサブフォルダを作成できます。私の場合、Fedora 14にchrootするために次のコマンドを使用しました。
sudo mkdir /mnt/usb_f14
sudo mount /dev/sdb3 /mnt/usb_f14
sudo mount --bind /proc /mnt/usb_f14/proc
sudo mount --bind /dev /mnt/usb_f14/dev
sudo mount --bind /sys /mnt/usb_f14/sys
sudo chroot /mnt/usb_f14
/dev/sdX
パーティションが何であるかを事前に確認することを忘れないでくださいfdisk
。 USBオペレーティングシステムへのrootアクセス権がある場合は、この/boot
フォルダに移動します。必要に応じて、old-
新しい画像を作成する前に既存の画像(存在する場合)の名前を変更して保存してください(たとえば、プレフィックスを付けることができます)。その後実行
ls /lib/modules/
これにはUSB OSのさまざまなカーネルがリストされています(ほとんどの場合は1つだけが必要です)。実際、上記のコマンドを使用するには、イメージを構築するために使用されるカーネルを提供する必要があります。その後、アクセス可能なユーティリティに応じて、次の3つのコマンドのいずれかを実行する必要があります(リストされているmy-kernel
カーネルの1つを意味しますls /lib/modules/
。必要に応じて、イメージに別の名前を使用できます)。
mkinitrd initrd-my-kernel.img my-kernel
mkinitramfs -o initramfs-my-kernel.img my-kernel
dracut initramfs-my-kernel.img my-kernel
オペレーティングシステムによっては、欠落しているモジュールに関するいくつかのメッセージが表示されることがあります。画像が作成されている限り、これは無視できます(Fedora 14用の画像を再構築したときに一部が取得されたため、まだ正常に起動します)。
また、前の画像を直接置き換える場合は、強制的に上書きするためにコマンドにフラグを追加する必要があります。たとえば、場合を追加する必要がdracut
あります--force
。その他のコマンドについては、マニュアルを参照してください。完了したら、USBオペレーティングシステムパーティションをアンマウントし、コンピュータを再起動して、起動順序を最初にUSBから起動するように設定します。これでUSBオペレーティングシステムが正常に起動します。
最後に、新しい画像に指定した名前(初期画像名と異なる場合)を記録しておくことを忘れないでください。grub.cfg
新しいイメージを考慮するにはファイルを更新する必要があるためです。
4. 仮想マシンのパーティションを再確認します。
パーティションを直接選択できない状態で仮想マシンに特定のターゲットオペレーティングシステムをインストールした場合(Fedora 14でこの問題が発生した場合)、2つのパーティションで終了できます。ext4
1 つはフォルダーを含み/boot
、もう 1 つはこのフォルダーに残りを含むファイル システムの。この場合は、jc__で説明されている方法を使用して大きなパーティションを複製し、仮想マシンを再起動し、フォルダを場所(セカンダリUSBドライブなど)にコピーしてから、複製したパーティションに復元して/boot
から挿入します。 。元のファイルにはまだ1つではない2つのパーティションがリストされている可能性があるため、イメージを/etc/fstab
再構築する前にファイルを更新することを忘れないでください(3を参照)。initrd
ext4
5. USB GRUBを終了します。簡単な方法です。
jc__が推奨さsuper_grub2_disk_hybrid_2.02s9.iso
れ、memdisk
ホストからすべてのオプションを取得しますが、以下でも使用できますgrub.cfg
。
menuentry 'Continue to host machine' {
exit
}
これにより、USBスティックのGRUBが終了し、ホストの起動順序が復元されます。私の場合、ホストコンピュータはデュアルブートノートブックなので、このメニュー項目を選択するとすぐにコンピュータのGRUBメニューが表示されます。
それは私のコメントのすべてです。私はLinuxのトラブルシューティングの経験が少ないので、この記事にコメントしてエラーや不正確な説明を指摘してください。
答え3
長くて冗長なので、答えの場所に置いてください。回答に修正または追加が必要な場合、その回答は修正および削除されます。
"grub.cfg(私はこれをFedora 24パーティションに入れたので/dev/sda2/"
「FC24は/dev/sda2です。」
「FC8は/dev/sda3です。」
いいですね。トラブルシューティングに役立ついくつかの作業を行います。
USBパーティションレイアウトの表示
GPartedグラフィカルユーザーインターフェースまたはsudo fdisk -l
USBパーティションのUUID番号を表示
blkid
grub のインストールに使用されるコマンドを表示します。grub-install
そしてgrub-mkimage
手順5で使用したVMがハードディスク(VHD)から起動したか、ライブオペレーティングシステムから起動したか。どのオペレーティングシステムが使用されますか?
「誤ってパーティションを復元しましたか、それとも両方のオペレーティングシステムを「救出」できますか?」
これは回復の問題ではなく、grubのインストールの問題だと思います。
grub.cfgをチェックしてください。
Entry:
Fedora (4.5.5-300.fc24.x86_64) 24 (Workstation Edition)
search ... --hint='hd0,msdos1' 913f30c2-4a22-44eb-a93d-9fad95764f5d
first HD and first partition. --hint='hd0,msdos1
partition UUID 913f30c2-4a22-44eb-a93d-9fad95764f5d
This tells us: /dev/sda1 and was probably the HD not USB.
Expected.
Entry:
Fedora release 24 (Twenty Four) (on /dev/sda2)
search ... --hint-bios=hd0,msdos2 d4be737a-c4ea-44cd-a22d-781086854ec8
first HD and second partition --hint-bios=hd0,msdos2
partition UUID d4be737a-c4ea-44cd-a22d-781086854ec8
This tells us: /dev/sda2 and is the second partition on the HD not USB.
Not expected if this OS is on the USB.
Expecting second HD (the USB) NOT the same as the booted OS. Perhaps /dev/sdb2
Entry:
Fedora release 8 (Werewolf) (on /dev/sda3)
search ... --hint-bios=hd0,msdos3 8bc6e37c-53b1-4fe9-b242-5b0b9c8c575e
first HD and 3rd partition. --hint-bios=hd0,msdos3
partition UUID 8bc6e37c-53b1-4fe9-b242-5b0b9c8c575e
Not expected if this OS is on the USB.
Expectiong second HD (the USB) NOT the same as the booted OS. Perhaps /dev/sdb3
最初のハードドライブ(またはホストOSがインストールされているハードドライブ)以外の別のハードドライブを期待する理由は、コンピュータがOS(ISO以外のハードドライブの場合)から起動し、USBドライブが接続され、次のHDがリリースされる予定です。です。 /dev/sdX X はドライブ文字です。
この時点では、起動したオペレーティングシステム(ホスト)と対話しています。 USBドライブが接続されました。ホストオペレーティングシステムがUSBを自動的にインストールした可能性があります。読み取り/書き込みがマウントされている場合は問題ありません。私はUSBを取り出すよりもマウントを解除し、確実な場所に再インストールすることを好みます。
USBデバイスの割り当てを確認してください。
sudo fdisk -l
USBレイアウトとサイズがわかっているので、/dev/sdX情報を入手してください。
または
ホストコンピュータからUSBプラグを抜きます。
注文するdmesg
USBを再挿入してください。
注文するdmesg
これは、新しいデバイスと/ dev割り当てについて知らせます。 sdX。
USBパーティションを目的のマウントポイントにマウントします。
例:
sudo mount /dev/sdX /media/f24
sudo mount /dev/sdx /media/f8
/media/f24 -- the root of the Fedora24
/media/f8 -- the root of the Fedora8
grubブートローダをUSBドライブに再インストールし、マウントされたパーティションを指定します。
sudo grub-install --recheck --boot-directory=/media/f24/boot /dev/sdX
--boot-directory=/media/f24/boot
ブートローダはここで grub.cfg ファイルを探します。ところで、すでに存在するだけでは、私たちをそこまで連れて行くことはできません。
/dev/sdX
これはUSBドライブです。上記で収集した情報です。これにはパーティション情報がなく、デバイスのみがあります。
Fedora24 インストールで生成されたファイルを上書きする新しい grub.cfg ファイルを生成します。
sudo grub-mkconfig --output=/media/f24/boot/grub/grub.cfg
これにより、Fedora24 インストールの grub.cfg が上書きされます。
新しい grub.cfg ファイルを確認します。
現在実行中のホストオペレーティングシステム情報のエントリが必要です。
USBドライブオペレーティングシステムが必要です。これはホストオペレーティングシステムとは異なるデバイスにあります。 /dev/sdX.
また、コマンドを使用して以下を確認することもできます。blkid
USBドライブパーティションのUUID番号は、新しいgrub.cfgのUUID番号と一致する必要があります。
メモ: USB起動時に/dev/sdXの割り当てが正しくありません。それは問題ではありません。 UUIDパーティション番号はまだ正しいパーティションを「見つけて」正しいオペレーティングシステムを起動します。これは後でカスタム grub.cfg で調整されます。
また、USB起動に正しいgrub.cfgがロードされていることを確認してください。
上記のコマンドで新しいgrub.cfgで色を変更した後
次の行を追加します。
# Set menu colors
set menu_color_normal=red/black
set menu_color_highlight=light-gray/red
行の間を揃えてください。
### END /etc/grub.d/01_users ###
and
### BEGIN /etc/grub.d/10_linux ###
グラップメニューが異なる色で表示されている場合は、正しいメニューがロードされていることがわかります。grub-install
そうだね
この部分で心配しないでください。メニュー項目の名前を変更するだけです...
新しい grub.cfg が UUID 検証に合格すると、それはgrub-mkconfig
正しいものです。
トラブルシューティングパート2。
Ferora 24メニュー項目を見る...
GRUBは3つの方法でルートディレクトリを設定します。 (Fedoraカーネルルートではありません。それは別のものです。)
1. set root='hd1,msdos2'
これは「堅い」根のセットです。第二。 2日に運転してください。分割。
ここで「秘密」とは、最初から起動するたびにドライブを変更できることです。最初に検出したデバイスが最初になります。
2. search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2 d4be737a-c4ea-44cd-a22d-781086854ec8
このエントリは、if
デフォルトでUUIDがxxxのパーティションが必要ですが、2番目のパーティションを探し始めると言います。ドライブ番号2.分割。
三。 search --no-floppy --fs-uuid --set=root d4be737a-c4ea-44cd-a22d-781086854ec8
これはif
ステートメントにも含まれています。これは、フロッピードライブを除いて表示できるすべての場所でUUID xxxを持つパーティションを見つけることを意味します。
私たちは使いたいです3番目の場所通事論。
メモ:GRUBはドライブを0(hd0 - hdn)から計算し、パーティションを1(msdos1 - msdosn)から計算します。 GRUB2手動。
「私の考えにはinitrd / initramfsに問題があるようです」
はい、私もそう思います。しかし、ファイル自体ではなく、GRUBがファイルを見つける場所です。
/boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8
GRUBはLinuxカーネルをロードするか、より正確にはロードしようとします。GRUBroot/boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8
GRUBroot = パーティション d4be737a-c4ea-44cd-a22d-781086854ec8.正しく設定したら。
initrdも同じだ。
GRUBroot/boot/initrd-2.6.23.1-42.fc8.img
ところで:最初のgrub.cfgは、Fedora24に他のカーネルとinitrdをロードするように指示します。本番カーネルや言語の理由から、これらの機能を再利用したい場合があります。
linux /boot/vmlinuz-4.5.5-300.fc24.x86_64 root=UUID=d4be737a-c4ea-44cd-a22d-781086854ec8 ro rhgb quiet LANG=fr_BE.UTF-8
initrd /boot/initramfs-4.5.5-300.fc24.x86_64.img
ファイルがまだ存在することを確認してください。
「/dev/rootが見つかりません」
うん、なぜなら
linux /boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8 root=/dev/sdc2
つまり、カーネルルートは3番目にあります。ドライブ番号2.分割。
テキスト編集でgrub.cfgを変更して新しいエントリを作成しましょう。これを完了したら、他のコンテンツを削除してください。
menuentry 'Fedora 24 on USB drive' {
insmod part_msdos
insmod ext2
## set the GRUB root using UUID only.
search --no-floppy --fs-uuid --set=root d4be737a-c4ea-44cd-a22d-781086854ec8
## is F24 root somewhere else?
## Probably not.. remove kernel switch root=/dev/sdc2
linux /boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8
initrd /boot/initramfs-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8.img
## I think you want these instead if the files still exist. Make adjustments by adding and removing comments ##
## commented out
# linux /boot/vmlinuz-4.5.5-300.fc24.x86_64 root=UUID=d4be737a-c4ea-44cd-a22d-781086854ec8 ro rhgb quiet LANG=fr_BE.UTF-8
# initrd /boot/initramfs-4.5.5-300.fc24.x86_64.img
}
そして
menuentry 'Fedora 8 on USB drive' {
insmod part_msdos
insmod ext2
## set the GRUB root using UUID only.
search --no-floppy --fs-uuid --set=root 8bc6e37c-53b1-4fe9-b242-5b0b9c8c575e
## is F8 root somewhere else?
## Probably not.. remove kernel switch root=LABEL=/
## not familure with this switch, but removed.
linux /boot/vmlinuz-2.6.23.1-42.fc8 ro rhgb quiet
initrd /boot/initrd-2.6.23.1-42.fc8.img
## I think you want these instead if the files still exist. Make adjustments by adding and removing comments ##
## commented out
# linux /boot/vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
# initrd /boot/initrd-2.6.23.1-42.fc8.img
}
アップデートは不要で、USBドライブから再起動するだけです。
etc/grub.d/40_custom
これを実行したら、Fedoraカーネルの更新が正しい新しいGRUBメニュー項目を検出して生成するように変更する必要があることに注意してください。
これができるかどうかはわかりません。 Fedoraカーネルが更新されるたびに、grub.cfgを手動で更新する必要があるかもしれません。
linux /boot/vmlinuz-4.5.5-300.fc24.x86_64 root=UUID=d4be737a-c4ea-44cd-a22d-781086854ec8 ro rhgb quiet LANG=fr_BE.UTF-8
initrd /boot/initramfs-4.5.5-300.fc24.x86_64.img
答え4
提供された回答は非常に有益であり、プロセスに関する洞察を提供します。これは非常に重要だと思います(特にここSEで私たちをたくさん説明する独学型の場合)。
しかしはいちょうど同様のものを達成するためにここに来る人々のためにやや似た目標を達成する無料のプロジェクトです(まったく同じではありません)。
https://www.pendrivelinux.com/yumi-multiboot-usb-creator/
この名前は愚かです。グラフィックは粘着性があります。これらのツールは効果的で非常にうまく機能します。少なくとも彼らが提供するソースコードが役に立つかもしれません。