Αν και υπάρχουν διάφορα προγράμματα για τη δημιουργία "all in one" sticks, δεν με ικανοποίησαν (π.χ. τα περισσότερα δεν δουλεύουν με UEFI secure boot) οπότε έφτιαξα το δικό μου:
https://github.com/alkisg/liveusb
Ακολουθώντας τις οδηγίες σ' εκείνη τη σελίδα μπορούμε να δημιουργήσουμε ένα live USB stick που να μπουτάρει Ubuntu Live CDs κατευθείαν από .iso, αλλά και Windows 10 setup αφού πρώτα έχουμε προμηθευτεί τα σχετικά αρχεία με το media creation tool της Microsoft.
Επιπρόσθετα, υποστηρίζει Network boot (iPXE) και memory test, ενώ δουλεύει και σε BIOS και σε UEFI υπολογιστές.
Έχω βάλει οδηγίες στα Αγγλικά και για Linux και για Windows, αν τις χρειάζεστε στα Ελληνικά πείτε μου.
Ειδικά για τους Πληροφορικούς των Ιωαννίνων, όποιος θέλει μπορεί να περάσει από το ΚΕΠΛΗΝΕΤ να του γράψω το τελικό USB stick (μετά την εκτέλεση όλων των βημάτων).
(https://raw.githubusercontent.com/alkisg/liveusb/master/liveusb.png)
Τέλειο
Μπράβο στον μάστορα. 😉
Αν ο μάστορας έχει όρεξη, θέλω να ρωτήσω τα παρακάτω
Θα ήθελα να προσθέσω σε αυτό το usb stick πολυεργαλείο:
-το Hiren's BootCD PE x64 (https://www.hirensbootcd.org/files/HBCD_PE_x64.iso (https://www.hirensbootcd.org/files/HBCD_PE_x64.iso)) αλλά και το παλιότερο Hiren's BootCD (https://yepdownload.com/download/117 (https://yepdownload.com/download/117)).
- το Antix 17.4 32bit (http://ftp.ntua.gr/pub/linux/mxlinux-iso/ANTIX/Final/antiX-17.4/antiX-17.4_386-full.iso (http://ftp.ntua.gr/pub/linux/mxlinux-iso/ANTIX/Final/antiX-17.4/antiX-17.4_386-full.iso))
Τι πρέπει να κάνω;
Δεν τα δοκίμασα, αλλά με ένα γρήγορο googling υποθέτω τα εξής:
Τα Windows δεν περιλαμβάνουν κώδικα "ψάχνω ένα .iso και το ανοίγω και βρίσκω μέσα του τα αρχεία της εγκατάτασης".
Οπότε δεν είναι εύκολο να πετάξεις το HBCD_PE_x64.iso μέσα και να δουλέψει. Θα πρέπει να χρησιμοποιήσεις το iso to usb εργαλείο που δίνουν, να φτιάξεις ένα usb, και μετά να αντιγράψεις τα αρχεία του στο "δικό μας stick". Αλλά κατά πάσα πιθανότητα θα χρησιμοποιεί ίδια ονόματα αρχείων με το iso εγκατάστασης των win10, οπότε δεν μπορείς να βάλεις και τα δύο, είτε μόνο win10 είτε μόνο hirens.
Για το antix, αν κατάλαβα καλά βασίζεται σε debian, οπότε μπορείς (1) να το μπουτάρεις κανονικά και να κάνεις cat /proc/cmdline για να δεις τι παραμέτρους θέλει, και στη συνέχεια (2) να προσθέσεις ένα menuentry στο grub.cfg μας που να περιέχει αυτό το cmdline. Δεν είναι δύσκολο, άνοιξε το /grub/grub.cfg με έναν editor και θα το καταφέρεις. Πρόσεξε την παράμετρο "fromiso=" που θα δεις στο `cat /proc/cmdline`, να έχει το σωστό μονοπάτι για το .iso.
Όντως το Antix βασίζεται στο Debian (το δοκίμασα σε ένα ένα παλιό netbook, καλύτερα από το Puppylinux).
Thanks :) :)
Συνεπώς Άλκη με τη χρήση του δικού σου all in one μπορούμε να στήσουμε 32bit Ubuntu σε UEFI χωρίς να χρειάζεται να ακολουθούμε τη λύση που περιγράφεις στο Εγκατάσταση 32bit Ubuntu σε UEFI (https://alkisg.mysch.gr/steki/index.php?topic=7586.msg84520#msg84520); ή πρέπει να προσέξουμε κάτι άλλο, γιατί εκεί αναφέρεσαι και σε κάποια bugs του ubuntu..
Με το δικό μου usb stick ουσιαστικά γλυτώνουμε τα βήματα 1 έως 5 εκείνου του θέματος.
Όμως το βήμα 6 είναι πάντα απαραίτητο.
Στην εντολή
echo -ne '\xeb\x58\x90' | dd conv=notrunc bs=1 count=3 of=/dev/sdx1
που διορθώνει το bug, έχω αποτέλεσμα:
dd: αδυναμία ανοίγματος του '/dev/sdb1': Άρνηση πρόσβασης
Αν δεν είσαι ήδη root, θέλει sudo:
echo -ne '\xeb\x58\x90' | sudo dd conv=notrunc bs=1 count=3 of=/dev/sdx1
Όμως, αν έχεις ενημερωμένο Ubuntu 18.04, αυτή η εντολή δεν χρειάζεται πια, επειδή ζήτησα και έκαναν backport το σχετικό fix:
SRU: fix FAT recognition after resizing (https://bugs.launchpad.net/ubuntu/+source/parted/+bug/1820090)
Thanks, ενημέρωσα σχετικά και τη σελίδα στο github (https://github.com/alkisg/liveusb).
Δεν έβαζα sudo στο dd αλλά όντως δεν χρειαζόταν η εντολή, όπως είπες. Ευχαριστώ.
Άλκη έκανα κάποιες δοκιμές και πρόσθεσα στο menu επιλογές για εκκίνηση Linux Mint x64 και Elementary OS μαζί με τα αντίστοιχα iso στον φάκελο ubuntu και δούλεψαν κανονικά. Κάνω το ίδιο με το manjaro και το kali αλλά μου βγάζει το μήνυμα που έχεις "disable secure boot" ενώ είναι απενεργοποιημένο το secure boot και τα λειτουργικά είναι 64 bit. Ένα επιπλέον στοιχείο είναι ότι όταν έφτιαξα bootable usb disk με dd για το κάθε ένα ξεχωριστά, δούλεψαν κανονικά σε efi και μπήκα στα live sessions. Ξέρεις τι μπορεί να παίζει;
Αυτή η συνάρτηση που έχω εκεί, function ubuntu(), είναι σχεδιασμένη να μπουτάρει Ubuntu CDs.
Για άλλες διανομές τύπου Manjaro, Kali κλπ, θα έπρεπε να φτιαχτούν άλλες functions.
Δεν είναι ιδιαίτερα δύσκολο, χρειάζεται να δεις πού είναι ο kernel (vmlinuz) και το initrd.* εντός του .iso, καθώς και το /proc/cmdline αφού έχει εκκινηθεί το live cd.
Αλλά δεν έχω χρόνο να κοιτάξω κάθε διανομή πού τα έχει και να φτιάξω αντίστοιχες functions.
Αν όμως κάποιος έχει όρεξη να το κάνει, δεν έχω αντίρρηση να τις προσθέσω στο github για να είναι όλα σε μία μεριά.
ξεκίνησα μια προσπάθεια. δεν καταλαβαίνω γιατί ψάχνεις το vmlinuz και το initrd με πολλα ονόματα. for vmlinuz in κλπ κλπ
Επειδή το Ubuntu τα άλλαζε κάθε τρεις και λίγο. Οπότε άλλο δουλεύει σε 18.04, άλλο σε 10.04, άλλο σε 64bit/UEFI, άλλο σε 32bit/BIOS κλπ.
Άλκη αποτυχημένες οι προσπάθειες. Θα βάλω παρακάτω δύο απαντήσεις με τον κώδικα των συναρτήσεων (η αλήθεια είναι ότι δεν ξέρω τη γλώσσα αυτή του grub οπότε για αυτό βλέπεις χάλια κώδικα του τύπου for ... in [μια μόνο επιλογή]), το /proc/cmdline και τα αποτελέσματα κατά την εκκίνηση. Είναι για manjaro (arch based, ελαφρύ και user friendly) και kali, γνωστή διανομή για penetration testing κλπ
Manjaro
function manjaro {
iname=$1
save_default
if ! loopback loop "$liveusb/other/$iname"; then
return 1
fi
# Don't use regexp, it's not available when secure boot is enabled
for kernel in vmlinuz-x86_64; do
if [ -f "(loop)/boot/$kernel" ]; then
break
fi
done
for initrd in initramfs-x86_64.img; do
if [ -f "(loop)/boot/$initrd" ]; then
break
fi
done
if ! linux "(loop)/boot/$kernel" boot=boot "iso-scan/filename=$liveusb/other/$iname" noeject noprompt; then
# 32 bit fails on secure boot with: vmlinuz has invalid signature
echo "ERROR: could not load ubuntu, maybe disable UEFI secure boot?"
return 1
fi
initrd "(loop)/boot/$initrd"
loopback -d loop
echo "Running $1"
}
/proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-x86_64 lang=en_US keytable=us tz=UTC driver=free nouveau.modeset=1 i915.modeset=1 radeon.modeset=1 misobasedir=manjaro misolabel=M1804 quiet systemd.show_status=1
Δεν ασχολήθηκα με extra_params.
Αποτελέσματα στο συνημμένο
Kali
function kali {
iname=$1
save_default
if ! loopback loop "$liveusb/other/$iname"; then
return 1
fi
# Don't use regexp, it's not available when secure boot is enabled
for kernel in vmlinuz-4.19.0-kali3-amd64; do
if [ -f "(loop)/live/$kernel" ]; then
break
fi
done
for initrd in initrd.img-4.19.0-kali3-amd64; do
if [ -f "(loop)/live/$initrd" ]; then
break
fi
done
if ! linux "(loop)/live/$kernel" boot=live "iso-scan/filename=$liveusb/other/kali-linux-mate-2019.1a-amd64.iso" noeject noprompt; then
# 32 bit fails on secure boot with: vmlinuz has invalid signature
echo "ERROR: could not load ubuntu, maybe disable UEFI secure boot?"
return 1
fi
initrd "(loop)/live/$initrd"
loopback -d loop
echo "Running $1"
}
/proc/cmdline
BOOT_IMAGE=/live/vmlinuz-4.19.0-kali3-amd64 boot=live components splash username=root hostname=kali
Δεν ασχολήθηκα με extra_params.
Αποτελέσματα στο συνημμένο
Όταν ξεκινάνε τα live CD, έχουν κάποιον κώδικα που ψάχνει πού βρίσκεται το image.
Το image συνήθως είναι τύπου "squashfs", σαν συμπιεσμένο .zip αρχείο που όμως περιέχει μια ολόκληρη εγκατάσταση, και περιέχεται κάπου μέσα στο CD, π.χ. στο Ubuntu είναι στο φάκελο /casper/filesystem.squashfs.
Στα live CD του Ubuntu ο κώδικας που ψάχνει το image είναι στο πακέτο "casper", το οποίο διαβάζει την παράμετρο iso-scan/filename, κάνει mount το ubuntu.iso, και μετά ψάχνει μέσα στο .iso για να βρει το squashfs image.
Άρα: το iso-scan/filename δουλεύει μόνο σε Ubuntu/casper-based live CDs.
Το Debian δεν χρησιμοποιεί casper, αλλά ένα άλλο πακέτου που λέγεται "liveboot", το οποίο θέλει άλλη παράμετρο, που λέγεται "fromiso=". Άρα μια συνάρτηση debian() θα έπρεπε να έχει "fromiso=" στο εσωτερικό της.
Το Manjaro δεν ξέρω τι χρησιμοποιεί, σίγουρα όχι casper/liveboot. Π.χ. μπορεί να χρησιμοποιεί "dracut", το οποίο να θέλει άλλη παράμετρο. Υπάρχει μάλιστα και η πιθανότητα κάποια διανομή να χρησιμοποιεί πρόγραμμα που να μην υποστηρίζει καν "fromiso" ή ισοδύναμο.
Για όσους δεν έχουν εμπειρία σε τέτοια προγράμματα εκκίνησης casper/liveboot/dracut κλπ, μια λύση είναι να χρησιμοποιήσουν κάποιο άλλο πρόγραμμα π.χ. Rufus, το οποίο να φτιάχνει USB sticks που να έχουν μέσα αυτούσια .iso και ΟΧΙ αποσυμπιεσμένα, και από εκεί να ξεκινήσουν τη διανομή και να κάνουν cat /proc/cmdline. Εκεί θα δουν πώς ονομάζεται η παράμετρος iso-scan/filename ή fromiso κλπ. Δεν ξέρω αν το Rufus υποστηρίζει αυτούσια .iso, θέλει λίγο κοίταγμα για ποιο πρόγραμμα υποστηρίζει κάτι τέτοιο.
Το /proc/cmdline που έκανες paste δεν μας κάνει γιατί μάλλον είναι κατευθείαν από "cdrom" και όχι από USB stick με .iso μέσα του.
το /prοc/cmdline είναι από live session από usb φτιαγμένο με dd.
Το παρατάω, μελετάω αυτά που γράφεις και με τον καιρό θα προσπαθήσω πάλι. Ευχαριστώ!
Δες λίγο αυτό: https://forum.manjaro.org/t/booting-manjaro-iso-using-grub2/3132
Δηλαδή στο manjaro η αντίστοιχη παράμετρος λέγεται img_loop=.
Εδώ έχει μια ωραία λίστα με τις παραμέτρους για τις περισσότερες γνωστές διανομές:
https://github.com/mytbk/liveusb-builder/tree/master/distro
Btw, αν κάποιος προχωρημένος χρήστης θέλει να ενεργοποιήσει "persistent home" στα live CDs του Ubuntu, δηλαδή οι ρυθμίσεις και τα αρχεία στο /home/username να παραμένουν, αρκεί να κάνει ένα δεύτερο partition στο stick, τύπου ext4, και με ετικέτα home-rw, και να περάσει για παράμετρο τη λέξη "persistence" στη γραμμή 60 του grub.cfg:
if ! linux "(loop)/casper/$kernel" "file=/cdrom/preseed/$uname.seed" boot=casper "iso-scan/filename=$liveusb/ubuntu/$iname" noeject noprompt persistence -- $extra_params; then
ευχαριστώ Άλκη.
Προσπαθώ να μπουτάρω σε virtual machine από το live usb.
Εκκινεί κανονικά, επιλέγω ubuntu 32 ή 64 bits, φορτώνει κανονικά αλλά όταν πάει να εμφανιστεί η επιφάνεια εργασίας την εμφανίζει με πολλές οριζόντιες γραμμές (φαίνεται το πράσινο φόντο, καταλαβαίνεις τον δείκτη του ποντικιού όταν κινείται, φαίνεται ότι ανοίγει το τερματικό) με αποτέλεσμα να μην μπορείς να κάνεις τίποτα.
Παίζοντας με τις ρυθμίσεις της εικονικής μηχανής δεν κατάφερα κάτι.
Καμιά ιδέα;;
edit: host os-> ubuntu 18.04 64 bit, virtualbox version 5.2.18
update: πρόκειται για γνωστό bug-> https://bugs.launchpad.net/ubuntu/+source/lubuntu-meta/+bug/1766859 (https://bugs.launchpad.net/ubuntu/+source/lubuntu-meta/+bug/1766859) Η λύση που προτείνει δουλέυει (Right Ctrl +f1, Right Ctrl+f7)
Ναι κι εγώ το παθαίνω και αλλάζοντας vt με Ctrl+Alt+F2 / Ctrl+Alt+F7 στρώνει.
Ενημέρωσα το https://github.com/alkisg/liveusb με τις τρέχουσες εκδόσεις ipxe/grub κλπ.
Χάρη στο νέο grub, πλέον το liveusb υποστηρίζει να τοποθετούμε .iso από διάφορες διανομές στο stick και να δημιουργεί δυναμικά τα αντίστοιχα grub μενού.
Υποστηριζόμενες διανομές: clonezilla, debian, fedora, kali, manjaro, opensuse και ubuntu.
Για τους Πληροφορικούς των Ιωαννίνων, θα ετοιμάσω στικάκι όταν βγει και η νέα έκδοση 2004 των Windows 10 εντός Μαΐου.
(https://raw.githubusercontent.com/alkisg/liveusb/master/liveusb.png)
Άλκη σε Lenovo ThinkCentre M91p (CPU: i5-2500, RAM: 4GB), ενώ το liveusb bootάρει κανονικά σε legacy mode 20.04.1, σε UEFI mode εμφανίζει στιγμιαία το μήνυμα "not found. Initializing defaults." και ξανακάνει reboot!
Είναι το τελευταίο του Μαΐου 2020; Ή παλιότερο;
Δεν είμαι σίγουρος! Επειδή έχω αρκετά iso μέσα (ubuntu+win10), πρέπει να φτιαχτεί από την αρχή ή μπορούμε με κάποιο copy/overwrite αρχείων να εξασφαλίσουμε ότι είναι "Μαΐου 2020";
Τρέξε το παρακάτω και δες τη στήλη UUID, τι βγάζει εκεί; Το δεύτερο νούμερο είναι η έκδοση, π.χ. 20-05.
# lsblk --fs
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sdf
├─sdf1 vfat LIVEUSB 1973-2005 2,5G 84% /media/alkisg/LIVEUSB
Γενικά δεν είναι εύκολο να γίνει αναβάθμιση του boot code στο MBR, θέλει grub-install /dev/sdf με κατάλληλη έκδοση grub, γι' αυτό και το διαθέτω ως image. Αλλά γενικά εφόσον δουλεύει, δεν χρειάζεται αναβαθμίσεις.
Έχω εντοπίσει ένα πρόβλημα που μπορεί να σχετίζεται με αυτό που λες. Σε κανά μήνα που θα βγουν νέα Windows θα ανεβάσω νέα έκδοση με διορθωμένο το πρόβλημα, το ξανακοιτάμε τότε.
# lsblk --fs
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 35d9259f-418d-4a88-99ba-9ea3eff5a97d /
├─sda2 ext4 bd1847b7-07d2-403f-8de3-1caff9e0efaa /home
└─sda3 swap 21d3897e-e0bf-4198-8fa5-ae3605208b39 [SWAP]
sdb
└─sdb1 vfat LIVEUSB 1973-2005 /media/administrator/LIVEUSB
sr0
Πρέπει να είναι updated!
Παράθεση από: alkisg στις 30 Σεπ 2020, 08:10:20 ΠΜ
Έχω εντοπίσει ένα πρόβλημα που μπορεί να σχετίζεται με αυτό που λες.
Υπάρχει workaround για να συνεχίσω την εγκατάσταση σε UEFI; Αν προσπαθούσα με live CD ή ISO/Rufus;
Προλαβαίνεις να πατήσεις κάτω βελάκι ή esc και να παραμείνεις στον grub του liveusb, ή δεν γίνεται να αποφευχθεί το reboot;
Εννοείται ότι και το live cd και οι άλλες μέθοδοι δημιουργίας liveusb sticks (rufus, dd) μπορεί να δουλέψουν.
Με F12 σου δίνει επιλογή για legacy USB ή UEFI USB.
Με το legacy εμφανίζεται κανονικά το grub menu και συνεχίζει κανονικά με το iso που επιλέγεις.
Με το UEFI flashάρει σε μαύρη οθόνη το μήνυμα "not found. Initializing defaults." και κάνει reboot, χωρίς να αλλάζει κάτι όταν πατάς ESC ή κάτω βελάκι. Νομίζω δε φορτώνει καθόλου grub!
Πολλές υλοποιήσεις UEFI έχουν διάφορα bugs (γι' αυτό ακόμα προτιμώ το BIOS).
Δοκίμασε με Rufus, άλλες μεθόδους, ή dd. Αν δουλέψει έτσι, το ξανασυζητάμε, αν όχι, είναι πολύ buggy το UEFI σου.
Δοκίμασα rufus/20.04.1 flash usb και bootάρει χωρίς προβλήματα σε UEFI (και στο legacy OK).
Παράθεση από: alkisg στις 30 Σεπ 2020, 11:07:10 ΠΜ
Αν δουλέψει έτσι, το ξανασυζητάμε
Άλκη σε ενδιαφέρει να το βλέπαμε κάποια στιγμή αύριο;
Αρχές σχολικής χρονιάς είναι πιο σημαντικό να λύνονται τα προβλήματα των νέων εγκαταστάσεων.
Π.χ. σήμερα πληροφορήθηκα για ένα bug σε σχέση με τους κοινόχρηστους φακέλους, θα χρειαστώ λίγες μέρες να το διορθώσω.
Το liveusb ας το πιάσουμε όταν βγουν τα καινούργια Windows 20H2 που θα είναι αφορμή για δημιουργία νέας έκδοσης liveusb.
Άλκη, η διαδικασία είναι ίδια και για τα Windows 11;
Νομίιιιιζω ότι το είχα δοκιμάσει για Windows 11 και έπαιξε, αλλά να πω την αλήθεια βαρέθηκα να κάνω την διαδικασία προετοιμασίας USB stick με το media-creation-tool της Microsoft, παίρνει πολύ χρόνο και αποτυγχάνει συχνά.
Οπότε τώρα το κύριο στικάκι μου για τέτοιες δουλειές είναι βασισμένο στο Ventoy, όπου ρίχνεις κατευθείαν το windows.iso ή το linux.iso και ξεμπερδεύεις.
Παράλληλα έχω κι ένα δεύτερο στικάκι με το παρόν liveusb για πιο προχωρημένα πράγματα, π.χ. εκκίνηση LTSP client image ή για τις περιπτώσεις που το Ventoy αποτυγχάνει.
Btw μια και το αναφέρουμε παραπάνω, μου ήρθε ο πρώτος Η/Υ (από προμήθεια για ΕΠΑΛ) που ΔΕΝ υποστηρίζει καθόλου εγκατάσταση BIOS. Και λαμβάνοντας υπ' όψη ότι και τα Windows 11 απαιτούν UEFI, από εδώ και πέρα οι εγκαταστάσεις που θα κάνω στα σχολεία της περιοχής μου θα είναι UEFI/GPT (αλλά και με bios_grub partition μήπως ποτέ χρειαστεί).
Δοκίμασα το Ventoy (δεν το ήξερα) και είναι πολύ βολικό και αυτό για την δουλειά που το ήθελα. Ευχαριστώ!
Ότι έφτιαξες αυτό το τρομερά χρήσιμο και εύχρηστο εργαλείο, το liveusb, και τελικά προτείνεις κάποιο άλλο, με ξεπερνάει. ;)
Παράθεση από: markakis στις 21 Σεπ 2023, 10:15:15 ΜΜΌτι έφτιαξες αυτό το τρομερά χρήσιμο και εύχρηστο εργαλείο, το liveusb, και τελικά προτείνεις κάποιο άλλο, με ξεπερνάει. ;)
Όλα τα προγράμματα που φτιάχνω είναι για να καλύψουν κάποιο κενό.
Αν στη συνέχεια το κενό καλυφθεί από άλλα λογισμικά, τόσο το καλύτερο, γλυτώνω και τον κόπο ανάπτυξης/συντήρησης!