Tag Archives: multiboot usb

USB Stick που εκκινά πολλές διανομές linux

Πολλές φορές θα μας είναι χρήσιμο αν είχαμε ένα στικάκι που να είχε την δυνατότητα να μπορεί να εκκινεί από παραπάνω από μια διανομές linux. Εξάλλου την σήμερον ημέρα τα στικάκια ξεπερνάνε άνετα τα 2GB κρίμα να έχετε ένα τόσο μεγάλο στικάκι και να έχει ανεκμετάλλευτο χώρο  :problem:.

Αυτό άνετα το πετυχαίνεται με διάφορες λύσεις αλλά εμείς θα σας δείξουμε την λύση που δεν θα θέλετε τίποτα εξτρά.

Λοιπόν τα υλικά μας είναι:

  • Το καλό μας τερματικό
  • Ένα στικάκι μεγάλης χωρητικότητας (κρίμα να έχετε τόσες διανομές και να μην μπορείτε να τις χωρέσετε  😉 )
  • Και βεβαίως βεβαίως διανομές Linux

Εκτέλεση:

Ανοίγουμε το τερματικό και γινόμαστε root:

sudo su

Μετά βλέπουμε όλους τους δίσκους και εντοπίζουμε το στικάκι μας:

fdisk -l

Καλό είναι να έχετε «καρφωμένο» μόνο το στικάκι που θέλετε να κάνετε multiboot για να μπορείτε να το βρείτε εύκολα

θα είναι της μορφής /dev/sdx1 όπου x ένα λατινικό γράμμα αναλόγως το σύστημα.

Στην συνέχεια θα κάνουμε 2 υποθέσεις:

  1. Ότι το στικάκι μας είναι το αρχείο συσκευής /dev/sdb
  2. Και αναλόγως ότι περιέχει ένα partition /dev/sdb1

Και το κάνουμε Unmount το partition:

umount /dev/sdb1

Τώρα έχουμε 2 επιλογές:

  1. Να το διαμορφώσουμε για να κάνει boot μόνο σε bios μηχανήματα (ο παλιός τρόπος).
  2. Να κάνει boot και σε bios και σε UEFI (o νέος τρόπος).

Ο παλιός τρόπος

Μετά διαμορφώνουμε το partition σαν fat32:

mkfs.vfat -F 32 -n MULTIBOOT /dev/sdb1

Και μετά κάνουμε το partition bootable:

fdisk /dev/sdb

Στo μενού που μας βγάζει πατάμε a και enter μετά πατάμε 1 και enter και μετά w και enter

Και προσαρτίζουμε το usb stick ξανά.

mkdir /media/όνομα_χρήστη/MULTIBOOT && mount /dev/sdb1 /media/όνομα_χρήστη/MULTIBOOT

Όπου όνομα_χρήστη το username που κάνεται login (είσοδο) στο σύστημα. Μπορείτε να το δείτε σε ένα διαφορετικό παράθυρο τερματικού δίνοντας την εντολή:

whoami

Εφόσον το προσαρτήσαμε εγκαθιστούμε τον grub2 στο στικάκι:

grub-install --force --no-floppy --target=i386-pc --recheck --boot-directory=/media/όνομα_χρήστη/MULTIBOOT /dev/sdb

Και τώρα βάζουμε τα .iso  αρχεία των διανομών στο στικάκι μας.

Ο Νέος τρόπος:

Κατ’ αρχάς εκτελούμε τις εξής εντολές για να κάνουμε 2 partitions (το UEFI χρειάζεται 2 partitions):


parted /dev/sdb -- mktable gpt
parted /dev/sdb -- mkpart biosgrub fat32 1MiB 4MiB
parted /dev/sdb -- mkpart efi fat32 4MiB -1
parted /dev/sdb -- set 1 bios_grub on
parted /dev/sdb -- set 2 esp on

Η τελευταία, εάν σας βγάλει κάποια μυνήματα, χαλαρουίτα μην ανυσυχείτε.

Είστε ok εάν η εντολή:

parted /dev/sdb -- print

Σας βγάλει ότι το στικάκι έχει 2 partitions.

Μετά διαμορφώνουμε το ΔΕΥΤΕΡΟ partition για το στικάκι μας (οι εντολές ΜΙΑ ΠΡΟΣ ΜΙΑ παρακαλώ):

mkfs -t vfat -n GRUB /dev/sdb2
mount /dev/sdb2 /mnt

Για να υποστηρίξει ο grub2 εγκατάσταση για EFI πρέπει να εγκατασταθούν κάποια πακετάκια:

apt install grub-efi-ia32-bin grub-efi-amd64-bin grub-pc-bin grub2-common

Και μετά εγκαθιστούμε τον grub στο στικάκι μας:

grub-install --removable --no-nvram --no-uefi-secure-boot \
     --efi-directory=/mnt --boot-directory=/mnt \
     --target=i386-efi

grub-install --removable --no-nvram --no-uefi-secure-boot \
     --efi-directory=/mnt --boot-directory=/mnt \
     --target=x86_64-efi

grub-install --removable --boot-directory=/mnt \
     --target=i386-pc /dev/sdb

Εφόσον το κάνουμε δημιουργούμε στον φάκελο grub το έγγραφο grub.cfg ως root. Οι ποιο κατάλληλοι τρόποι είναι:

  • Για τον παλιό τρόπο δίνουμε:
    sudo touch /media/όνομα_χρήστη/MULTIBOOT/boot/grub/grub.cfg
  • Για τον νέον τρόπο δίνουμε:
    sudo touch /mnt/grub/grub.cfg

Εκεί σε επιλογές menuentry βάζουμε τις επιλογές εκκίνησης για να ξεκινά ο grub από το iso της εκάστοτε διανομής που θέλουμε.

Για Ubuntu, Lubuntu, Kubuntu, Xubuntu θα έχει μια καταχώρηση του στύλ:

  • Για 32 bit:
    
    menuentry "Try Lubuntu 14.04 32 bit Desktop ISO" {
     loopback loop /
     linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ noeject quiet splash locale=el_GR.UTF-8 --
     initrd (loop)/casper/initrd.lz
    }
    
  • Για 64bit
    menuentry "Try Ubuntu 14.04 64 bit Desktop ISO" {
     loopback loop /
     linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ noeject quiet splash locale=el_GR.UTF-8 --
     initrd (loop)/casper/initrd.lz
    }

Αν θέλετε να σας «πετάει» Απ’ ευθείας σε περιβάλλον εγκατάστασης μετά από το noeject βάλτε only-ubiquity έτσι οι επιλογές θα γίνουν:

  • Για 32 bit:
    
    menuentry "Try Lubuntu 14.04 32 bit Desktop ISO" {
     loopback loop /
     linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ noeject only-ubiquity quiet splash locale=el_GR.UTF-8 --
     initrd (loop)/casper/initrd.lz
    }
    
  • Για 64bit
    menuentry "Try Ubuntu 14.04 64 bit Desktop ISO" {
    loopback loop /
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ noeject only-ubiquity quiet splash locale=el_GR.UTF-8 --
    initrd (loop)/casper/initrd.lz
    }

Ακόμη για Debian 8.6 έβαλα την εξής εγγραφή:

menuentry "Debian 8.6" {
loopback loop /debian-8.6.0-amd64-CD-1.iso
set background_color=black
linux    (loop)/install.amd/vmlinuz  iso-scan/filename=/debian-8.6.0-amd64-CD-1.iso vga=788 --- quiet
initrd   (loop)/install.amd/initrd.gz
}

Για άλλες διανομές μπορείτε να δείτε εδώ το πως θα βάλετε ένα menuentry στο grub2 που είναι εγκατεστημένο στο στικάκι:
https://help.ubuntu.com/community/Grub2/ISOBoot/Examples
Καθώς και να πείτε τις δικές σας προτάσεις για menuentry.

Τέλος μπορείτε μέσω qemu να δοκιμάσετε χωρίς restart τα menuentry:

qemu-system-x86_64 -hdb /dev/sdχ

όπου στην θέση του /dev/sdx αντικαθιστούμε με το καταλλήλως προκειμένου να κάμνει (σσ. άτσα και το Κυπριακό) boot από την κατάλληλη συσκευή που αντιστοιχεί το στικάκι σας.

Αλλά μέτα από κάθε αλλαγή θα πρέπει να κάνετε unmount to στικάκι να το «ξεκαρφώνετε» και να το «ξανακαρφώνετε» στην θύρα USB ή μπορείτε να δίνετε την εντολή:

cd ; sudo eject /dev/sdχ; sleep 1; sudo eject -t /dev/sdχ

O παραπάνω οδηγός δοκιμάστηκε σε Ubuntu 14.04LTS