Δημιουργία Multiboot USB ως Hybrid UEFI GPT + BIOS GPT/MBR



Έχουμε δει στο παρελθόν πως μπορείτε να φτιάξετε ένα multiboot usb. Συμπληρωματικά υπάρχει τρόπος και για το γνωστό hirens.

Εδώ θα δούμε πως μπορούμε να δημιουργήσουμε ένα multiboot usb με GPT διαμόρφωση, κατάλληλη για UEFI και MBR υπολογιστές.

Καταρχήν, πρέπει να γίνετε root.

sudo su

Στην συνέχεια, πρέπει να δούμε σε ποιο σημείο έχει γίνει προσάρτηση. Υπάρχουν πολλοί τρόποι, αλλά εδώ θα χρησιμοποιήσετε τον παρακάτω:

fdisk -l

Έστω ότι θα σας δώσει ως αποτέλεσμα ότι το USB σας είναι προσαρτημένο στο /dev/sdb.

Αρχικά θα ξεκινήσουμε την δημιουργία των κατατμήσεων. Χρησιμοποιήστε την εντολή gdisk.

gdisk /dev/sdb

Θα ξεκινήσει ένας "διάλογος".
Θεωρητικά πρέπει να γίνουν 3 κατατμήσεις.
1. Η BIOS boot με μέγεθος 1 MB
2. Η EFI System με τουλάχιστον 50 MB και σύστημα αρχείων FAT32
3. Η data (εκεί που θα είναι τα ISO) το υπόλοιπο μέγεθος και σύστημα αρχείων ότι υποστηρίζει ο GRUB (εδώ NTFS)

Στον διάλογο, απαντάτε τα έντονα πλάγια γράμματα τι πρέπει να απαντήσετε.

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present

Found valid GPT with hybrid MBR; using GPT.

Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-15669214, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-15669214, default = 15669214) or {+-}size{KMGTP}: +1M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF02
Changed type of partition to 'BIOS boot partition'

Command (? for help): n
Partition number (2-128, default 2): 
First sector (34-15669214, default = 4096) or {+-}size{KMGTP}: 
Last sector (4096-15669214, default = 15669214) or {+-}size{KMGTP}: +50M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'

Command (? for help): n
Partition number (3-128, default 3): 
First sector (34-15669214, default = 106496) or {+-}size{KMGTP}: 
Last sector (106496-15669214, default = 15669214) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700
Changed type of partition to 'Microsoft basic data'

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

Τώρα πρέπει να διαμορφώσουμε τις κατατμήσεις. Πάλι με την χρήση της gdisk.

gdisk /dev/sdb

Πάλι απαντάτε αυτά με έντονα πλάγια γράμματα.

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): r

Recovery/transformation command (? for help): h

WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one,
just hit the Enter key at the below prompt and your MBR partition table will
be untouched.

Type from one to three GPT partition numbers, separated by spaces, to be
added to the hybrid MBR, in sequence: 1 2 3
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): n

Creating entry for GPT partition #1 (MBR partition #1)
Enter an MBR hex code (default EF): EF02
Set the bootable flag? (Y/N): n

Creating entry for GPT partition #2 (MBR partition #2)
Enter an MBR hex code (default EF): EF00
Set the bootable flag? (Y/N): n

Creating entry for GPT partition #3 (MBR partition #3)
Enter an MBR hex code (default 07): 0700
Set the bootable flag? (Y/N): y

Recovery/transformation command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

Ωραία. Τώρα βεβαιωθείτε ότι δεν είναι προσαρτημένες οι κατατμήσεις.

umount /dev/sdb1
umount /dev/sdb2
umount /dev/sdb3

Εάν δεν βλέπει το sdb2, τότε βγάλτε το USB και ξαναβάλετε το στην θέση του.

Ακολουθεί η διαμόρφωση (FAT32 και NTFS όπως προαναφέρθηκε)

mkfs.fat -F32 -n GRUB2EFI /dev/sdb2
mkfs.ntfs -L ISO /dev/sdb3

ή

mkfs.ext4 -L ISO /dev/sdb3

Στην συνέχεια, φτιάξτε 2 φακέλους μέσα στον mnt, για να προσαρτήσετε τις κατατμήσεις.

mkdir /mnt/efi
mkdir /mnt/data
mount /dev/sdb2 /mnt/efi/
mount /dev/sdb3 /mnt/data/
mkdir /mnt/data/boot

Η δοκιμή έγινε σε 32bit σύστημα με βάση το Ubuntu. Οπότε έπρεπε να εγκαταστήσω και το παρακάτω πακέτο.

apt-get install grub-efi-amd64

Εσείς εάν έχετε 64bit λειτουργικό σύστημα, ίσως διαφέρει το πακέτο, ίσως να μην σας χρειάζεται.

Τώρα είναι το "μανίκι". Πρέπει να εγκαταστήσετε το grub.

Πρώτα για το efi (μια γραμμή).

grub-install --target=x86_64-efi --removable --recheck --efi-directory=/mnt/efi --boot-directory=/mnt/data/boot

Και στην συνέχεια το GRUB (μια γραμμή).

grub-install --target=i386-pc --recheck --boot-directory=/mnt/data/boot /dev/sdb


Τέλος θα πρέπει να φτιάξετε ένα grub.cfg.

Μπορείτε να πάρετε ένα έτοιμο από το github μου.

Μερικές λύσεις είναι:
* Multiboot USB
* Glim

Πηγές:
1. Arch Linux wiki
2. How to create an Hybrid UEFI GPT + BIOS GPT/MBR boot USB disk

Δεν υπάρχουν σχόλια

Από το Blogger.