"LiveISO", boot όλα τα ubuntu.iso με το grub2

Προβληματισμός, προτάσεις και λύσεις για "αναβάθμιση" του Η/Υ σε εργαλείο παραγωγικότητας!
Λειτουργικά συστήματα, Backup/Recovery, χρήση του hardware I/O.
Απάντηση
Άβαταρ μέλους
GeorgeVita
Διαχειριστής
Δημοσιεύσεις: 624
Εγγραφή: 04 Σεπ 2013, 21:51
Ονομα: Γιώργος
Επικοινωνία:

"LiveISO", boot όλα τα ubuntu.iso με το grub2

Δημοσίευση από GeorgeVita »

"LiveISO", boot όλα τα ubuntu.iso με το grub2

Επί τη ευκαιρία κυκλοφορίας του Ubuntu 14.04 ... (http://www.ubuntu.com/download/desktop)
... αρκετοί θα θελήσουν να δοκιμάσουν το νέο Ubuntu, μια παραλλαγή του (Xubuntu, Lubuntu, Ubuntu-Gnome) ή ένα παράγωγο (Linux Mint, LXLE, ...). Η δοκιμή γίνεται τρέχοντας μια έκδοση "Live" χωρίς να πειράξουμε κάτι στον υπολογιστή μας αφού το λειτουργικό θα τρέξει μόνο στη μνήμη RAM.

Παλαιότερα καίγαμε δισκάκι για δημιουργία ενός Live-CD, μετά προγραμματίζαμε στικάκι ως Live-USB ενώ τώρα χρησιμοποιούμε Live-ISO αφού απλά boot-άρουμε απ' ευθείας το .iso μέσω του boot manager GNU/GRUB v.2 ("grub2")! Αυτό γίνεται εντελώς χειροκίνητα μέσα από τερματικό του grub2 ή τοποθετώντας μιά νέα επιλογή στο μενού του:

Εικόνα

Εχοντας αποθηκεύσει πολλά .iso στον Η/Υ μας, μπορούμε σε λίγη ώρα να δοκιμάσουμε ή να δείξουμε πολλές εκδοχές ενός σύγχρονου λειτουργικού. Με την "επιλογή γενικής χρήσης" που αναφέρω παρακάτω, θα δούμε στην οθόνη όλα τα αρχεία .iso και θα επιλέξουμε ένα από αυτά για εκκίνηση:

Εικόνα
Πληκτρολογούμε το όνομα αρχείου και πατάμε το <enter>. Το Live-ISO ξεκινά ...

Σχεδόν όλα τα ?-Ubuntu και τα παράγωγά τους που φτιάχτηκαν από το 2009 και μετά μπορούν να εκκινήσουν απ' ευθείας μέσω grub2 με τις παρακάτω εντολές, αλλάζοντας μόνο το όνομα του αρχείου .iso στον ορισμό της μεταβλητής "isoname":

Κώδικας: Επιλογή όλων

set isoname="trusty-desktop-i386.iso"
loopback loop $isoname
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/$isoname quiet splash --
initrd (loop)/casper/initrd.lz
boot
Η αντίστοιχη καταχώρηση στο μενού του grub2 θα είναι:

Κώδικας: Επιλογή όλων

menuentry 'Boot from .iso' {
set isoname="trusty-desktop-i386.iso"
loopback loop $isoname
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/$isoname quiet splash --
initrd (loop)/casper/initrd.lz
}
Σε περίπτωση που δεν έχετε τοποθετήσει το αρχείο .iso στο "/" αλλά σε άλλο φάκελο, λ.χ. "/ISO/", συμπληρώστε το:

Κώδικας: Επιλογή όλων

set isoname="/ISO/trusty-desktop-i386.iso"
Για να δημιουργήσετε την επιπλέον επιλογή στο μενού του grub2, θα αλλάξετε το αρχείο /etc/grub.d/40_custom με τον απλό επεξεργαστή κειμένου:

για Ubuntu, Gnome-Ubuntu και αρκετά παράγωγα:

Κώδικας: Επιλογή όλων

gksudo gedit /etc/grub.d/40_custom 
για Lubuntu:

Κώδικας: Επιλογή όλων

sudo leafpad /etc/grub.d/40_custom 
για Xubuntu

Κώδικας: Επιλογή όλων

gksudo mousepad /etc/grub.d/40_custom 

Παράδειγμα περιεχομένων αρχείου /etc/grub.d/40_custom πριν την προσθήκη:

Κώδικας: Επιλογή όλων

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
Στο τέλος των υπαρχόντων στοιχείων θα προσθέσουμε τον κώδικα του νέου "menuentry".
Αποθηκεύουμε το αρχείο, ενημερώνουμε το grub:

Κώδικας: Επιλογή όλων

sudo update-grub
και επανεκκινούμε το σύστημα:

Κώδικας: Επιλογή όλων

sudo reboot

Προτείνω τη δημιουργία του φακέλου /ISO/ όπου θα βάζετε όλα τα αρχεία .iso:

Κώδικας: Επιλογή όλων

sudo mkdir /ISO
Δώστε πλήρη δικαιώματα εγγραφής/ανάγνωσης σε όλους τους χρήστες μόνο σε αυτό το ευρετήριο:

Κώδικας: Επιλογή όλων

sudo chmod 777 /ISO
Με την παρακάτω επιλογή μενού "γενικής χρήσης" θα πληκτρολογήσετε το όνομα του αρχείου αφού πρώτα δείτε όλα το ευρετήριο στην οθόνη σας. Μπορείτε να αλλάξετε τα ονόματα των αρχείων σε μικρότερα για την ευκολία σας (λ.χ. από mint-16-cinnamon-i386.iso σε mint16cin.iso και από trusty-desktop-i386.iso σε U1404.iso).

Ο κώδικας του "menuentry γενικής χρήσης":

Κώδικας: Επιλογή όλων

menuentry 'Boot from /ISO/xyz.iso file' {
set pager=1
echo
ls /ISO/
echo
echo -n 'Which /ISO/.iso file? '
read isofile
echo
loopback loop /ISO/$isofile
echo 'Loading Linux kernel ...'
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ISO/$isofile quiet splash --
echo 'Loading initial ramdisk ...'
initrd (loop)/casper/initrd.lz
echo 'Booting ...'
echo
}
Θα την τοποθετήσετε στο τέλος εντός του αρχείου /etc/grub.d/40_custom και θα εκτελέσετε sudo update-grub.
Στην επόμενη εκκίνηση θα υπάρχει στο μενού του grub2.

Οι εντολές εκκίνησης του .iso όπως φαίνονται στο menu του grub2 πατώντας "e" (Edit):
Εικόνα


Τα παλαιά .iso (λ.χ. Ubuntu 8.04) χρησιμοποιούν το initrd.gz αντί initrd.lz και πρέπει να βρίσκονται αποθηκευμένα σε filesystem έως και ext3 (το ext4 δεν είχε κυκλοφορήσει). Τα πολύ παλιότερα .iso μπορεί να χρησιμοποιούν 16-μπιτη αποθήκευση. Χρησιμοποιήστε τις εντολές linux16 και initrd16 για φόρτωμα kernel και initial ramdisk. Αν και πάλι δεν μπορείτε να boot-άρετε, ψάξτε στο internet για "menuentry" της διανομής που δοκιμάζετε. Τα αρχεία /casper.log και /var/log/syslog μπορεί να έχουν χρήσιμες πληροφορίες.

Επαναφορά grub2 menu
Αν αργότερα θέλετε να επαναφέρετε το σύστημα στην προηγούμενη κατάσταση, χωρίς την επιπλέον επιλογή στο μενού του grub2, θα ανοίξετε το ίδιο αρχείο για διόρθωση (λ.χ. gksudo gedit /etc/grub.d/40_custom) και θα αφαιρέσετε τις γραμμές που προσθέσατε από "menuentry" μέχρι και το "}" στο κάτω μέρος. Μετά εκτελείτε "sudo update-grub".


Σημείωση: οι αλλαγές παραμέτρων στον boot manager μπορεί να θέσουν τον υπολογιστή σας σε κατάσταση "μη εκκίνησης"! Αν και οι παραπάνω ρυθμίσεις είναι σε "τυπικό" επίπεδο, δοκιμάστε με δική σας ευθύνη μόνο εφόσον κατανοήσατε τη λειτουργία τους!
Άβαταρ μέλους
GeorgeVita
Διαχειριστής
Δημοσιεύσεις: 624
Εγγραφή: 04 Σεπ 2013, 21:51
Ονομα: Γιώργος
Επικοινωνία:

Re: "LiveISO", boot όλα τα ubuntu.iso με το grub2

Δημοσίευση από GeorgeVita »

Σε πρόσφατες δοκιμές του Trisquel GNU/Linux (διανομή βασισμένη στο Ubuntu και περιέχει μόνο το ελεύθερο λογισμικό ανοικτού κώδικα), είχα πρόβλημα στο LiveISO boot μέσα από το grub2, επειδή το initrd ήταν χωρίς κατάληξη .lz ή .gz και αποφάσισα να φτιάξω μια ακόμη γενικότερη επιλογή στο menu:

Κώδικας: Επιλογή όλων

menuentry 'Boot from /ISO/????.iso file' {
set pager=1
echo
ls /ISO/
echo
echo -n 'Which /ISO/.iso file? '
read isofile
echo
loopback loop /ISO/$isofile
echo 'Loading Linux kernel ...'
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ISO/$isofile quiet splash --
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 αρκεί να είναι τοποθετημένο στο ευρετήριο /ISO/ (στο δίσκο που βρίσκεται το grub2).
Απάντηση

Επιστροφή στο “Ο Η/Υ ως εργαλείο παραγωγικότητας!”