Liveusb stick με ubuntu.iso ΚΑΙ windows

Ξεκίνησε από alkisg, 06 Μαρ 2019, 09:09:51 ΠΜ

« προηγούμενο - επόμενο »

Sammy Dead

Άλκη αποτυχημένες οι προσπάθειες. Θα βάλω παρακάτω δύο απαντήσεις με τον κώδικα των συναρτήσεων (η αλήθεια είναι ότι δεν ξέρω τη γλώσσα αυτή του grub οπότε για αυτό βλέπεις χάλια κώδικα του τύπου for ... in [μια μόνο επιλογή]), το /proc/cmdline και τα αποτελέσματα κατά την εκκίνηση. Είναι για manjaro (arch based, ελαφρύ και user friendly) και kali, γνωστή διανομή για penetration testing κλπ

Sammy Dead

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.

Αποτελέσματα στο συνημμένο

Sammy Dead

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.

Αποτελέσματα στο συνημμένο

alkisg

Όταν ξεκινάνε τα 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 μέσα του.

Sammy Dead

το /prοc/cmdline είναι από live session από usb φτιαγμένο με dd.

Το παρατάω, μελετάω αυτά που γράφεις και με τον καιρό θα προσπαθήσω πάλι. Ευχαριστώ!

alkisg

Δες λίγο αυτό: https://forum.manjaro.org/t/booting-manjaro-iso-using-grub2/3132

Δηλαδή στο manjaro η αντίστοιχη παράμετρος λέγεται img_loop=.

alkisg

Εδώ έχει μια ωραία λίστα με τις παραμέτρους για τις περισσότερες γνωστές διανομές:
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


Sammy Dead


Δημήτρης Γκίνης

#23
Προσπαθώ να μπουτάρω σε 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 Η λύση που προτείνει δουλέυει (Right Ctrl +f1, Right Ctrl+f7)

alkisg

Ναι κι εγώ το παθαίνω και αλλάζοντας vt με Ctrl+Alt+F2 / Ctrl+Alt+F7 στρώνει.

alkisg

Ενημέρωσα το https://github.com/alkisg/liveusb με τις τρέχουσες εκδόσεις ipxe/grub κλπ.
Χάρη στο νέο grub, πλέον το liveusb υποστηρίζει να τοποθετούμε .iso από διάφορες διανομές στο stick και να δημιουργεί δυναμικά τα αντίστοιχα grub μενού.

Υποστηριζόμενες διανομές: clonezilla, debian, fedora, kali, manjaro, opensuse και ubuntu.

Για τους Πληροφορικούς των Ιωαννίνων, θα ετοιμάσω στικάκι όταν βγει και η νέα έκδοση 2004 των Windows 10 εντός Μαΐου.


gidarakos

Άλκη σε Lenovo ThinkCentre M91p (CPU: i5-2500, RAM: 4GB), ενώ το liveusb bootάρει κανονικά σε legacy mode 20.04.1, σε UEFI mode εμφανίζει στιγμιαία το μήνυμα "not found. Initializing defaults." και ξανακάνει reboot!

alkisg

Είναι το τελευταίο του Μαΐου 2020; Ή παλιότερο;

gidarakos

Δεν είμαι σίγουρος! Επειδή έχω αρκετά iso μέσα (ubuntu+win10), πρέπει να φτιαχτεί από την αρχή ή μπορούμε με κάποιο copy/overwrite αρχείων να εξασφαλίσουμε ότι είναι "Μαΐου 2020";

alkisg

Τρέξε το παρακάτω και δες τη στήλη 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 θα ανεβάσω νέα έκδοση με διορθωμένο το πρόβλημα, το ξανακοιτάμε τότε.