BIOSからGPTディスクから起動

この記事では、GPTでマークアップされたハードドライブからBIOSを使用してコンピューターを起動する方法について説明します。 この記事は、元の記事の翻訳ではなく、 Rod Smithによって書かれた記事の無料の語り直しであり、個人的には彼に感謝しています。 この記事の最後にあるソースへのリンク。



やる気



動作中のビデオサーバーで、Windows 7がインストールされているMBRでマークアップされたハードドライブが故障しました。



状況は、交換用のディスクが手元になく、VERY(特に企業のプロセスの組織)という言葉から購入するのに長い時間がかかり、サーバーを委託する必要があるという事実によって複雑になりました。



手元にある資料のうち、アーカイブを保存するためにこのサーバーで使用されたディスクのみがありました。 サーバーは古く、ドライブは新しい( WD Purple行)、それぞれ、 GPTでマークアップされているこのハードドライブから古いコンピューターを起動する方法( BIOSでコンピューターを読み取る方法)が発生しました。



この問題を調査した結果、rodsbooks.comというサイトが解決策を見つけました。



問題解決



実際には、理論的な部分の背後にある無料の改ざん自体、なぜこれが簡単な作業ではなかったのか、偉大で強力なGoogleへようこそ



したがって、この問題を解決するには、GNU / Linuxを備えたLive CD / DVD / USBが必要です。

個人的には、Ubuntu 16.04とDebian 8を使用しようとしました。この目的のために、著者自身が「空白」で書かれたGpartedの使用を提案していますが、誰でも彼に近いものを自由に使用できます。



開始するには、 DUETを取得する必要があります: gitlab.com/tianocore_uefi_duet_builds/tianocore_uefi_duet_installer/repository/master/archive.tar.gz (実際にはすべての「魔法」が含まれています)とSYSLINUXwww.kernel.org/pub/linux/ utils / boot / syslinux / 5.xx / syslinux-5.10.tar.gz (以降の操作に必要な後続のgptmbr.binファイルでは、このバージョンをダウンロードする必要がありますが、コンパイルされていません。自分でコンパイルしないように、リンクでアーカイブをダウンロードしてください) 。



結果のファイルは、便利なネットワークストレージ(またはUSBフラッシュドライブ)に書き込まれ、その後、便利なように、実行中のLinuxシステムの一時ストレージに転送される必要があります。

次に、お気に入りのGNU / Linuxディストリビューションを起動します。



Live CDにロードした後に最初に必要なことは、GPTパーティションテーブルでディスクをマークすることです。

(Ubuntu 16.04の例を示します)

コンソールを開き(コンソールは英語である必要があり、ローカライズされたコンソールはスクリプトの処理時にエラーを引き起こします)、fdiskを使用してディスクをマークアップします。



ubuntu@ubuntu:~$ sudo fdisk /dev/sda
      
      





次に、ディスク上に新しいGPTパーティションテーブルと必要なパーティションを作成します。 システムにはディスクが1つしかなく、/ dev / sdaとして定義されていると想定されています。それ以外の場合は、ディスクの名前を適切な名前に変更する必要があります。



 Command (m for help): g Created a new GPT disklabel (GUID: 416CDA03-62CB-4E45-8260-DD7723111AF7). Command (m for help): n Partition number (1-128, default 1): 1 First sector (2048-62914526, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526, default 62914526): +100M Created a new partition 1 of type 'Linux filesystem' and of size 100 MiB. Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 1 Changed type of partition 'Linux filesystem' to 'EFI System'. Command (m for help): n Partition number (2-128, default 2): First sector (206848-62914526, default 206848): Last sector, +sectors or +size{K,M,G,T,P} (206848-62914526, default 62914526): Created a new partition 2 of type 'Linux filesystem' and of size 29.9 GiB. Command (m for help): t Partition number (1,2, default 2): 2 Hex code (type L to list all codes): 11 Changed type of partition 'Linux filesystem' to 'Microsoft basic data'. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
      
      





上記の手順についてはコメントしません。なぜなら、 これらは、fdiskで実行される標準的な手順です。 注意する価値がある唯一のことは、DUETが保存される最初のパーティションを作成するときに、そのタイプを「EFIシステム」(



 Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 1 Changed type of partition 'Linux filesystem' to 'EFI System'.
      
      





)、および2番目のセクションのタイプとして、「Microsoft基本データ」(



 Command (m for help): t Partition number (1,2, default 2): 2 Hex code (type L to list all codes): 11 Changed type of partition 'Linux filesystem' to 'Microsoft basic data'.
      
      





)実際には、将来的にはWindowsにインストールされます。



マークアップが完了したら、ファイルシステムを作成します。



 ubuntu@ubuntu:~$ sudo mkfs.fat -F32 /dev/sda1 mkfs.fat 3.0.28 (2015-05-16) ubuntu@ubuntu:~$ sudo mkfs.ntfs -f /dev/sda2 Cluster size has been automatically set to 4096 bytes. Creating NTFS volume structures. mkntfs completed successfully. Have a nice day.
      
      





標準手順が完了したら、次に魔法に移ります。



DUETをインストールする



SYSLINUXとTianoCoreを/ tmp / 1にコピーし、TianoCoreのあるフォルダーに移動しました。



 ubuntu@ubuntu:~$ cd /tmp/1/tianocore_uefi_duet_installer/ ubuntu@ubuntu:/tmp/1/tianocore_uefi_duet_installer$ ll total 96 drwxrwxr-x 10 ubuntu ubuntu 400 Nov 7 2013 ./ drwxrwxr-x 4 ubuntu ubuntu 80 Sep 1 06:37 ../ drwxrwxr-x 2 ubuntu ubuntu 260 Nov 7 2013 BootSector/ -rw-rw-r-- 1 ubuntu ubuntu 2155 Nov 7 2013 copy_duet_files.sh -rw-rw-r-- 1 ubuntu ubuntu 2921 Nov 7 2013 CreateUSB.cmd -rw-rw-r-- 1 ubuntu ubuntu 16019 Nov 7 2013 duet-install -rw-rw-r-- 1 ubuntu ubuntu 9116 Nov 7 2013 duet-install.8 drwxrwxr-x 4 ubuntu ubuntu 80 Nov 7 2013 Efildr/ -rw-rw-r-- 1 ubuntu ubuntu 20480 Nov 7 2013 Elevate.exe drwxrwxr-x 3 ubuntu ubuntu 60 Nov 7 2013 Extras/ drwxrwxr-x 2 ubuntu ubuntu 80 Nov 7 2013 Licenses/ drwxrwxr-x 3 ubuntu ubuntu 60 Nov 7 2013 Linux_Source/ -rw-rw-r-- 1 ubuntu ubuntu 9282 Nov 7 2013 Migle_BootDuet_INSTALL.txt drwxrwxr-x 3 ubuntu ubuntu 160 Nov 7 2013 Modified_files_for_compiling_EDK1_DUET_in_Windows_X64/ -rw-rw-r-- 1 ubuntu ubuntu 3536 Nov 7 2013 README.txt drwxrwxr-x 2 ubuntu ubuntu 80 Nov 7 2013 Shell/ -rw-rw-r-- 1 ubuntu ubuntu 13673 Nov 7 2013 UDK_EDK2_DuetPkg_Changes_to_Makefiles.patch -rw-rw-r-- 1 ubuntu ubuntu 1821 Nov 7 2013 Usage_Linux.txt -rw-rw-r-- 1 ubuntu ubuntu 2165 Nov 7 2013 Usage_Windows.txt drwxrwxr-x 2 ubuntu ubuntu 80 Nov 7 2013 Windows_Binaries/ ubuntu@ubuntu:/tmp/1/tianocore_uefi_duet_installer$
      
      





実行可能なcopy_duet_files.shとduet-installを作成します。



 ubuntu@ubuntu:/tmp/1/tianocore_uefi_duet_installer$ chmod +x copy_duet_files.sh duet-install
      
      





DUETをインストールします。



 ubuntu@ubuntu:/tmp/1/tianocore_uefi_duet_installer$ sudo ./duet-install -m -s ../syslinux-5.10/mbr /dev/sda1 Will install SYSLINUX to the MBR Will install SYSLINUX to the MBR Path to SYSLINUX is ../syslinux-5.10/mbr Path to bootduet is /tmp/1/tianocore_uefi_duet_installer/BootSector Path to UEFI DUET is /tmp/1/tianocore_uefi_duet_installer Will install UEFI version UDK Target partition is /dev/sda1 Target disk (for storing MBR boot code) is /dev/sda Partition number is 1 Partition starts at sector 2048 FAT32 filesystem found on /dev/sda1 Partition table type is gpt Proceeding with installation will overwrite at least some data on /dev/sda1. This is your LAST CHANCE to abort! Do you want to continue (Y/N)? y Preparing disk... Writing 00 08 00 00 to boot partition's hidden sectors field Installing SYSLINUX... Installing BootDuet... Installing UEFI DUET.... Installation completed without errors; the disk should now be bootable! You may need to copy an EFI boot loader, such as ELILO or GRUB 2, to the disk.
      
      





次に、EFI TianoCoreエミュレーターをコピーする必要があります。



 ubuntu@ubuntu:/tmp/1/tianocore_uefi_duet_installer$ sudo mount /dev/sda1 /mnt ubuntu@ubuntu:/tmp/1/tianocore_uefi_duet_installer$ sudo ./copy_duet_files.sh /mnt EDK_UEFI64 -------- PARTITION MOUNTPOINT = /mnt PARTITION FILESYSTEM = FAT32 UEFI-DUET FIRMWARE BUILD = EDK_UEFI64 -------- + cp --verbose /tmp/1/tianocore_uefi_duet_installer///Efildr/EDK_UEFI64//Efildr20 /mnt/EFILDR20 '/tmp/1/tianocore_uefi_duet_installer///Efildr/EDK_UEFI64//Efildr20' -> '/mnt/EFILDR20' + mkdir -p /mnt/EFI/tools/ + cp --verbose /tmp/1/tianocore_uefi_duet_installer///Shell//shellx64_v1.efi /tmp/1/tianocore_uefi_duet_installer///Shell//shellx64_v2.efi /mnt/EFI/tools/ '/tmp/1/tianocore_uefi_duet_installer///Shell//shellx64_v1.efi' -> '/mnt/EFI/tools/shellx64_v1.efi' '/tmp/1/tianocore_uefi_duet_installer///Shell//shellx64_v2.efi' -> '/mnt/EFI/tools/shellx64_v2.efi' + mkdir -p /mnt/EFI/tools/extras + cp --verbose /tmp/1/tianocore_uefi_duet_installer///Extras/X64//diskpart.efi /tmp/1/tianocore_uefi_duet_installer///Extras/X64//efichk.efi /tmp/1/tianocore_uefi_duet_installer///Extras/X64//efifmt.efi /mnt/EFI/tools/extras/ '/tmp/1/tianocore_uefi_duet_installer///Extras/X64//diskpart.efi' -> '/mnt/EFI/tools/extras/diskpart.efi' '/tmp/1/tianocore_uefi_duet_installer///Extras/X64//efichk.efi' -> '/mnt/EFI/tools/extras/efichk.efi' '/tmp/1/tianocore_uefi_duet_installer///Extras/X64//efifmt.efi' -> '/mnt/EFI/tools/extras/efifmt.efi' + set +x +e -------- DUET EDK_UEFI64 files have been copied to the FAT32 PARTITION successfully --------
      
      





最初のパーティションを/ mntにマウントし、EFIをインストールします。 EDK_UEFI64を選択したのは、後でブートをセットアップするときに、何らかの理由でUDK_X64が設定を保存しなかったためです。 それを理解するのは怠だった。



それはすべて魔法です。 コンピューターを再起動し、BIOSでハードドライブからブートを設定するだけで十分です。 結果は、以下に示すような歓迎すべき碑文になるはずです。







その後、すべてがスムーズに進み、copy_duet_files.shスクリプトが正常に機能した場合、EFIエミュレータプロンプトが表示されます。



残念ながら、仮想マシンでこれを再現することはできません。そのため、EFI VirtualBoxから写真を持ち込みました。これは、あなたが見るべきものとほぼ同じです。







ダウンロードの詳細な設定は、このメニューを使用して行います。 特にそこに複雑なものはないので、個人的な学習のために、EFIメニューを使用して後続のダウンロード設定を残します。 たとえば、初心者の場合、EFIブートモードで同じVirtualBoxで練習できます。



Windowsディストリビューションのディスクをドライブに挿入するか、事前に作成されたインストールフラッシュドライブを使用します。 EFIエミュレータのメニューで、どこからブートするかを選択します(これは、メニュー「Boot Maintenance Manager」→「Boot From File」、USBフラッシュドライブまたはCD / DVDのロード元デバイスの選択で選択されます。インストールを開始するにはこれで十分です。リストからbootx64ファイルを選択する必要があります。 efiそれは起動可能なものです)。 さらにダウンロードとインストールは、標準のWindowsインストーラーを使用して行われますが、GPTでマークアップされたディスクにインストールできます。



以上です。 ご清聴ありがとうございました。



オリジナル記事: ロッド・スミス



All Articles