UEFI Boot κάθε Ubuntu .iso απ' το τίποτα!
Δημοσιεύτηκε: 29 Σεπ 2017, 19:28
Προχώρησα ένα βήμα πιο πέρα την βασική ιδέα του θέματος "LiveISO", boot όλα τα ubuntu.iso με το grub2 δοκιμάζοντας δημιουργία "Live-USB" με απλό COPY. Συγκεκριμένα αντέγραψα τα περιεχόμενα των ευρετηρίων "boot" και "EFI" από μια διανομή Ubuntu (όπως υπάρχουν στο σχετικό αρχείο .iso) και ρύθμισα το grub menu για να εκκινήσει από το αρχείο .iso.
Η διαδικασία είναι απλή:
- Σε άδειο USB memory stick (FAT32) αντέγραψα τα directories "boot" και "EFI" από το τρέχον Ubuntu .iso
- δημιούργησα στο στικάκι ένα directory /ISO
- αντέγραψα μέσα στο /ISO το/τα αρχείο/α Ubuntu .iso (θα βρείτε πολλά στο http://cdimage.ubuntu.com/)
- μετονόμασα το .iso σε κάτι απλούστερο (λ.χ. U170464.iso) για να το πληκτρολογώ εύκολα και σωστά...
- άλλαξα τα περιεχόμενα του /boot/grub/grub.cfg σύμφωνα με τις "ιδέες" του θέματος "LiveISO"
- έκανα reboot, έλεγξα ότι ο Η/Υ μου κάνει εκκίνηση από "removable media" και έφτασα στο μενού "Which /ISO/.iso file?"
- πληκτρολόγησα το όνομα του .iso και enter, enter
... ΟΛΑ ΚΑΛΑ!
Επειδή μπορεί να μην είναι εύκολο να "ανοίξετε" το .iso,, έφτιαξα ένα αρχείο .zip που περιέχει ότι χρειαζόμαστε:
Ενημερωμένο 21/06/2021
grubEFI.zip (4,4MB)
Συμπιεσμένο αρχείο με τα περιεχόμενα των /boot και /EFI από Ubuntu Mate 21.04 (64bit).
Επιπλέον υπάρχει ένα κενό directory /ISO για να τοποθετήσετε τα αρχεία .iso των διανομών.
Απλό unzip σε USB drive (fat32 formatted).
(Περιέχει grub version 2.04)
Στο ευρετήριο /boot/grub/ υπάρχει το κατάλληλα ρυθμισμένο αρχείο grub.cfg με την επιλογή "Boot from /ISO/????.iso file":
Μπορείτε να ξεκινήσετε τον Η/Υ σας ακόμη και χωρίς σκληρό δίσκο!
Σημειώσεις:
- το .iso της δοκιμής ήταν το Ubuntu Mate 17.04 64 bit το οποίο έχει ονομασία kernel "vmlinuz.efi" και αρχική RAM στο "initrd.lz". Αλλες εκδόσεις μπορεί να χρησιμοποιούν διαφορετικές ονομασίες, λ.χ. "vmlinuz" και "initrd" ή "initrd.gz".
- η παράμετρος "root" έχει ρυθμιστεί με το "set root=hd0,msdos1" που σημαίνει ότι ο δίσκος που περιέχει τα παραπάνω είναι ο πρώτος ("hd0") και λειτουργούμε το πρώτο partition ("msdos1").
Επιπλέον για αλλαγές "on fly" στο grub:
- όταν εμφανίζεται το grub boot menu μπορούμε να πατήσουμε "e" (edit) των εντολών της επιλεγμένης γραμμής, να κάνουμε αλλαγές και μετά να τρέξουμε τις διορθωμένες εντολές με F10 ή ctrl-x.
- αν έχουμε περισσότερους δίσκους ίσως να πρέπει να ρυθμίσουμε κατάλληλα την παράμετρο "set root=hd0,msdos1".
- από το grub menu, με "c" (command line) μπορούμε να βρούμε πληροφορίες για τους δίσκους στο σύστημά μας. Στο grub shell υπάρχουν αρκετές βοηθητικές εντολές, όπως ls για λίστα αρχείων ή δίσκων, set για να δούμε ή να ρυθμίσουμε κάποια παράμετρο, cd για αλλαγή directory, κλπ.
Περισσότερα για το grub στην τυπική πηγή: https://www.gnu.org/software/grub/grub- ... ation.html
Η διαδικασία είναι απλή:
- Σε άδειο USB memory stick (FAT32) αντέγραψα τα directories "boot" και "EFI" από το τρέχον Ubuntu .iso
- δημιούργησα στο στικάκι ένα directory /ISO
- αντέγραψα μέσα στο /ISO το/τα αρχείο/α Ubuntu .iso (θα βρείτε πολλά στο http://cdimage.ubuntu.com/)
- μετονόμασα το .iso σε κάτι απλούστερο (λ.χ. U170464.iso) για να το πληκτρολογώ εύκολα και σωστά...
- άλλαξα τα περιεχόμενα του /boot/grub/grub.cfg σύμφωνα με τις "ιδέες" του θέματος "LiveISO"
- έκανα reboot, έλεγξα ότι ο Η/Υ μου κάνει εκκίνηση από "removable media" και έφτασα στο μενού "Which /ISO/.iso file?"
- πληκτρολόγησα το όνομα του .iso και enter, enter
... ΟΛΑ ΚΑΛΑ!
Επειδή μπορεί να μην είναι εύκολο να "ανοίξετε" το .iso,, έφτιαξα ένα αρχείο .zip που περιέχει ότι χρειαζόμαστε:
Ενημερωμένο 21/06/2021
grubEFI.zip (4,4MB)
Συμπιεσμένο αρχείο με τα περιεχόμενα των /boot και /EFI από Ubuntu Mate 21.04 (64bit).
Επιπλέον υπάρχει ένα κενό directory /ISO για να τοποθετήσετε τα αρχεία .iso των διανομών.
Απλό unzip σε USB drive (fat32 formatted).
(Περιέχει grub version 2.04)
Στο ευρετήριο /boot/grub/ υπάρχει το κατάλληλα ρυθμισμένο αρχείο grub.cfg με την επιλογή "Boot from /ISO/????.iso file":
Κώδικας: Επιλογή όλων
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry 'Boot from /ISO/????.iso file' {
set pager=1
echo
set root=hd0,msdos1
ls /ISO/
echo
echo -n 'Which /ISO/.iso file? '
read isofile
echo
loopback loop /ISO/$isofile
echo 'Loading Linux kernel vmlinuz.efi (if any)...'
linux (loop)/casper/vmlinuz.efi boot=casper fsck.mode=skip iso-scan/filename=/ISO/$isofile nomodeset --
echo 'Loading Linux kernel vmlinuz (if any)...'
linux (loop)/casper/vmlinuz boot=casper fsck.mode=skip iso-scan/filename=/ISO/$isofile nomodeset --
echo 'Loading initrd.lz (if any)...'
initrd (loop)/casper/initrd.lz
echo 'Loading initrd.gz (if any)...'
initrd (loop)/casper/initrd.gz
echo 'Loading initrd (if any)...'
initrd (loop)/casper/initrd
echo
}
Σημειώσεις:
- το .iso της δοκιμής ήταν το Ubuntu Mate 17.04 64 bit το οποίο έχει ονομασία kernel "vmlinuz.efi" και αρχική RAM στο "initrd.lz". Αλλες εκδόσεις μπορεί να χρησιμοποιούν διαφορετικές ονομασίες, λ.χ. "vmlinuz" και "initrd" ή "initrd.gz".
- η παράμετρος "root" έχει ρυθμιστεί με το "set root=hd0,msdos1" που σημαίνει ότι ο δίσκος που περιέχει τα παραπάνω είναι ο πρώτος ("hd0") και λειτουργούμε το πρώτο partition ("msdos1").
Επιπλέον για αλλαγές "on fly" στο grub:
- όταν εμφανίζεται το grub boot menu μπορούμε να πατήσουμε "e" (edit) των εντολών της επιλεγμένης γραμμής, να κάνουμε αλλαγές και μετά να τρέξουμε τις διορθωμένες εντολές με F10 ή ctrl-x.
- αν έχουμε περισσότερους δίσκους ίσως να πρέπει να ρυθμίσουμε κατάλληλα την παράμετρο "set root=hd0,msdos1".
- από το grub menu, με "c" (command line) μπορούμε να βρούμε πληροφορίες για τους δίσκους στο σύστημά μας. Στο grub shell υπάρχουν αρκετές βοηθητικές εντολές, όπως ls για λίστα αρχείων ή δίσκων, set για να δούμε ή να ρυθμίσουμε κάποια παράμετρο, cd για αλλαγή directory, κλπ.
Περισσότερα για το grub στην τυπική πηγή: https://www.gnu.org/software/grub/grub- ... ation.html