debian live – boot da cd e sistema su usb

caro esperto, come faccio ad avviare la mia debian live appena creata ed installata su un chiavetta usb, su un pc che non supporta l’avvio da usb?risposta:so una sega io…. 😀ok, a parte gli scherzi… :)pensavo che la soluzione fosse molto più complessa, invece abbiamo tutto a portata di mano.in linea di massima dobbiamo creare un cd di avvio con un kernel generico che si occupi di inizializzare il controller usb, per tutto il resto ci viene incontro make-liveallora, diamoci da fare, abbiamo appena creato l’immagine da copiare sulla chiavetta usb con make-live, e ora dobbiamo creare il cd di avvio, sono pochi passi da fare, seguendo le istruzione del manuale di grub:mkdir -p iso/boot/grubcp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grubora dobbiamo copiare il kernel nella struttura del cdsupponendo di aver dato il comando make-live nella stessa directory dove stiamo creando la root del boot-cdcp debian-live/chroot/boot/* iso/boot/ora per nostra comodità creiamo un file menu.lst nella directory iso/boot/grub/il mio è pressapoco cosìdefault 0timeout 5color cyan/blue white/bluetitle Debian Liveroot (cd)kernel /boot/vmlinuz-2.6.18-4-486 boot=casper \locale=it username=franam hostname=kit.hierax.netinitrd /boot/initrd.img-2.6.18-4-486ora l’ultima cosa da fare è creare l’iso:mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \-boot-load-size 4 -boot-info-table -o grub.iso \-V "debian-live boot cd" isomasterizziamo l’immagine appena creata e vualà, il gioco è fatto!link utilihome page del progetto debian-livewiki del progetto debian-livelive helper su namuri.itil canale IRC #debian-live

32 Replies to “debian live – boot da cd e sistema su usb”

  1. Benissimo, utile.
    Finalmente potrò avviare il mio ENIAC da USB 🙂
    Ho anche creato al volo uno scriptino per creare l’iso automaticamente:

    #! /bin/sh

    mkdir -p iso/boot/grub
    cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub

    echo 'default 0' > iso/boot/grub/menu.lst
    echo 'timeout 5' >> iso/boot/grub/menu.lst
    echo 'color cyan/blue white/blue' >> iso/boot/grub/menu.lst

    cp debian-live/chroot/boot/* iso/boot/

    for kernel in iso/boot/vmlinuz*; do
    version=${kernel#*vmlinuz-}

    echo >> iso/boot/grub/menu.lst
    echo "title GNU/Linux Live (${kernel})" >> iso/boot/grub/menu.lst
    echo 'root (cd)' >> iso/boot/grub/menu.lst
    echo "kernel /boot/${kernel} boot=casper locale=it" >> iso/boot/grub/menu.lst
    echo "initrd /boot/initrd.img-${version}" >> iso/boot/grub/menu.lst
    done

    mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso

    rm -rf iso/

    cp debian-live/chroot/boot/* iso/boot/

    funziona su ubuntu e debian.
    Regards

  2. E non tutti possono aver capito la citazione del vernacoliere ma soltanto i pochi eletti (o peori che lo comprano tutte le settimane)

  3. Ciao, e se volessi fare una cosa analoga per windows xp pro che ho installato sul mio HardDrive usb? come faccio ad avviare il sistema su un pc che non supporta l’avvio da usb?

    Dovrei creare un “cd-rom” che inoltra il boot all’ usb… giusto? boot dal boot… grazie mille…

  4. @Alvaro: ciao, il giochetto funziona sotto linux perché puoi caricare un kernel, che si occupa di inizializzare l’interfaccia usb, da un cd… sotto windows è tutto un altro paio di maniche; non so come aiutarti, se non consigliandoti di non sprecare il tuo hd usb con sistemi operativi obsoleti, passa al pinguino… 😀

  5. Quote: cp debian-live/chroot/boot/* iso/boot/

    Che versione di linux è stata usata per l’esempio / quale si deve usare (magari live) ?

    Ho provato a seguire la procedura ma il boot termina in kernel-panic credo sia colpa del fatto che ho usato i files in /boot invece che “debian-live/chroot/boot/*” (che non esiste ne in MCNLive-VirtualCity (mandriva) ne in debian-live-etch beryl-i386-kde-desktop.

    Un ultima domanda oltre all’iso (creata con mkisofs) ed al menu.lst c’è altro magari “dato per scontato” e non precisato in questa guida,
    cioè :
    “in linea di massima dobbiamo creare un cd di avvio con un kernel generico che si occupi di inizializzare il controller usb, per tutto il resto ci viene incontro make-live”

    io non uso una penna usb bensi’ un disco usb (ma è la stessa cosa), è gia avviabile e ci ho installato sopra debian 4 r0, serve lo stesso make-live etc ?

    Grazie
    ——–
    Stella

  6. Target: avviare debian 4 r0 installato su disco USB (ma il mio bios non supporta avvio diretto da USB).

  7. @Stella: ciao, allora parto dall’ultima domanda, 🙂 non c’è niente dato di scontato in nella creazione dell’immagine ISO, se segui i passi alla lettera dovrebbe crearti un cd boottabile funzionante; il problema della prima domanda è che la procedura che spiego è indirizzata a chi utilizza debian-live che è un progetto per debian che aiuta l’utente a creare una distribuzione debian che può funzionare tranquillamente da CD o da chiavetta USB (scusami se sto ribadendo cose che magari già sai). Se utilizzi il kernel creato da debian-live avrai una procedura che dopo l’avvio monta tutte le partizioni presenti nelle periferiche riconosciute e cerca una directory chiamata “/casper” all’interno della quale c’è il filesystem compresso nel quale è presente tutto il resto del sistema operativo.
    Se ho capito bene la tua domanda il tuo problema è che devi specificare la partizione da cui continuare l’avvio (root partition) nel menu.lst, ad esmpio, se non utilizassi debian-live ed avessi, come te, una distribuzione linux installata su un hd usb esterno dovrei specificare un menu.lst tipo:

    default 0
    timeout 5
    color cyan/blue white/blue
    title Debian Live
    root (cd)
    kernel /boot/vmlinuz-2.6.18-4-486 root=/dev/xxxx
    initrd /boot/initrd.img-2.6.18-4-486

    dove xxxx è la partizione dove hai installato la root di linux.

    Spero di essere stato utile,
    ciao

  8. Grazie accipiter *kiss* . Ora devo solo trovare il firmware per il modem (ueagle-atm:um1040) 😉

  9. Dunque: tutto funziona a meraviglia modem-stampante-scanner-webcam-scheda.tv, lettore sd etc…

    Ho compilato il kernel 2.6.21

    Ora xo’ sorge un problema: dato che la prima fase del boot (e l’unica che usa grub) parte da cd: come faccio a fargli usare il kernel nuovo ed avere contemporaneamente la possibilità di avviare il vecchio se non funziona ?

  10. O è talmente intelligente che se metto il nuovo nel cd avviera’ il nuovo anche sul disco usb ?

  11. @Stella: allora, il grub che hai installato sul CD fa partire il kernel che hai usato al momento della creazione dell’immagine ISO. Chiaramente avviando da CD anche il sistema avviato “utilizzerà” il kernel del CD; se vuoi, puoi copiare sull immagine ISO due kernel e aggiungere nel menu.lst una sezione per il nuovo kernel ad esempio:

    default 0
    timeout 5
    color cyan/blue white/blue

    title Debian GNU/Linux, kernel 2.6.18-1-486
    lock
    root (cd)
    kernel /boot/vmlinuz-2.6.18-1-486 root=/dev/sda1 ro vga=791
    initrd /boot/initrd.img-2.6.18-1-486

    title Debian GNU/Linux, kernel 2.6.21-1-486
    lock
    root (cd)
    kernel /boot/vmlinuz-2.6.21-1-486 root=/dev/sda1 ro vga=791
    initrd /boot/initrd.img-2.6.21-1-486

    modifica le righe in base al kernel che devi avviare e in base alla “root” che deve utilizzare (ma questo da quanto ho capito lo sai già fare 🙂 ) Cosi se quello nuovo non va, puoi riavviare selezionando quello vecchio. 😉

    Altra cosa, avviando da CD chiaramente il kernel che installi nel sistema che avvii da grub è ininfluente a meno che tu non faccia un boot diretto senza utilizzare grub da CD.

    Ciao, alla prossima.

  12. ok in pratica la parte “è talmente intelligente” era giusta 😉

    thx mille.-

  13. [quote]Altra cosa, avviando da CD chiaramente il kernel che installi nel sistema che avvii da grub è ininfluente[/quote]

    scusate, passavo di qui, e ho letto questa affermazione palesemente sbagliata

    se fai il boot con un kernel diverso da quello/i presente/i nella root, il kernel non troverà i moduli che gli servono per completare il boot, e otterrai un sistema funzionante solo in parte

    avvia solo kernel *identici* a quelli installati nel sistema (oppure kernel monolitici, ma non credo questo sia il caso)

    hope this helps 🙂

    ciao
    tindal

  14. @tindal: ciao tindal, grazie per la precisazione anche se il “palesemente sbagliata” mi sembra eccessivo… 🙂 la precisazione che fai è più che giusta, ma la mia frase voleva indicare il fatto che il grub installato su cd “vede” soltanto il kernel o i kernel inseriti nell’immagine ISO, in quanto ancora non è in grado di accedere alla USB-pen… E’ di per sé vero che se poi durante la fase di *init*, non di boot cerca moduli che sulla chiavetta non sono presenti nascerebbero delle difficoltà… Preciso il fatto dell’init in quanto seguendo le istruzioni si capisce chiaramente che sto parlando di un kernel debian con una immagine initrd che contiene tutti i moduli per eseguire la fase di boot (parlo per esperienza empirica, ma sono pronto e disponibile per smentite più o meno palesi)… 😀

  15. ciao,
    ho seguito le istruzioni per poter avviare un sistema Redhat installato su HD esterno usb, ho fatto il cd con il kernel e initrd
    ma quando vado ad avviare, sia inserendo … root=/dev/hda2 che /dev/sda2 , una volta caricato il kernel, quando va a montare la / va in panic…

    come posso risolvere ?

    grazie

  16. @sacarde: ciao,
    purtroppo il metodo che descrivo riguarda la debian live, il giochetto funziona con quella, per quanto riguarda il tuo caso è un poco più complesso, ma dovrebbe essere fattibile, sto cercando anche io il metodo migliore per risolvere, appena ho qualcosa di decente scrivo un post…

    ciao e grazie della visita…

  17. ho esplorato l’initrd, e in effetti ho solo questi moduli:

    ehci-hcd.ko ohci-hcd.ko scsi_mod.ko uhci-hcd.ko
    libata.ko sata_via.ko sd_mod.ko

    mancano quelli usb….

    quali occorrono ?

  18. questo ho dentro init nell’initrd della redhat

    #!/bin/nash

    mount -t proc /proc /proc
    setquiet
    echo Mounting proc filesystem
    echo Mounting sysfs filesystem
    mount -t sysfs /sys /sys
    echo Creating /dev
    mount -o mode=0755 -t tmpfs /dev /dev
    mkdir /dev/pts
    mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
    mkdir /dev/shm
    mkdir /dev/mapper
    echo Creating initial device nodes
    mknod /dev/null c 1 3
    mknod /dev/zero c 1 5
    mknod /dev/systty c 4 0
    mknod /dev/tty c 5 0
    mknod /dev/console c 5 1
    mknod /dev/ptmx c 5 2
    mknod /dev/rtc c 10 135
    mknod /dev/tty0 c 4 0
    mknod /dev/tty1 c 4 1
    mknod /dev/tty2 c 4 2
    mknod /dev/tty3 c 4 3
    mknod /dev/tty4 c 4 4
    mknod /dev/tty5 c 4 5
    mknod /dev/tty6 c 4 6
    mknod /dev/tty7 c 4 7
    mknod /dev/tty8 c 4 8
    mknod /dev/tty9 c 4 9
    mknod /dev/tty10 c 4 10
    mknod /dev/tty11 c 4 11
    mknod /dev/tty12 c 4 12
    mknod /dev/ttyS0 c 4 64
    mknod /dev/ttyS1 c 4 65
    mknod /dev/ttyS2 c 4 66
    mknod /dev/ttyS3 c 4 67
    echo Setting up hotplug.
    hotplug
    echo Creating block device nodes.
    mkblkdevs
    echo “Loading uhci-hcd.ko module”
    insmod /lib/uhci-hcd.ko
    echo “Loading ohci-hcd.ko module”
    insmod /lib/ohci-hcd.ko
    echo “Loading ehci-hcd.ko module”
    insmod /lib/ehci-hcd.ko
    mount -t usbfs /proc/bus/usb /proc/bus/usb
    echo “Loading scsi_mod.ko module”
    insmod /lib/scsi_mod.ko
    echo “Loading sd_mod.ko module”
    insmod /lib/sd_mod.ko
    echo “Loading libata.ko module”
    insmod /lib/libata.ko
    echo “Loading sata_via.ko module”
    insmod /lib/sata_via.ko
    echo Waiting for driver initialization.
    stabilized –hash –interval 250 /proc/scsi/scsi
    mkblkdevs
    resume /dev/hda6
    echo Creating root device.
    mkrootdev -t ext2 -o defaults,ro hdb2
    echo Mounting root filesystem.
    mount /sysroot
    echo Setting up other filesystems.
    setuproot
    echo Switching to new root and running init.
    switchroot

  19. @sacarde:
    guarda i problemi potrebbero essere tanti, ma uno per tutti,
    devi controllare se inizializza l’usb, ma anche se lo facesse correttamente,
    lui si aspetta di trovare subito la root, cosa che non è affatto facile in quanto subito dopo inizializzato l’interfaccia usb passa un poco di tempo prima che venga identificato l’hardware, in questo caso chiavetta o hd esterno, e passa ancora del tempo prima che venga inizializzato e riconosciute le partizioni, etc…
    é per questo che nel metodo che ho descritto nel post, utilizzando il kernel e gli script di debian live, il boot va in loop appena caricato il modulo dell’usb e delle perifiriche di memorizzazione usb finchè non trova qualcosa di buono….

    mi puoi dire esattamente la stringa dell’errore e quelle prima? così forse riusciamo a capirci qualcosa di più…

    ciao

  20. ecco:



    creating root device
    mounting root filesystem
    mount couldnot found filesystem ‘/dev/root’
    setting up other filesystem
    setting up new root fs
    setuproot: moving /dev failed: no such file or directory
    no fstab.sys, mounting internal defaults
    setuproot: error mounting /proc; no such file or directory
    setuproot: error mounting /sys; no such file or directory
    switching to the new root and running init
    umounting old /dev
    umounting old /proc
    umounting old /sys
    switchroot: mount failed: no such file or directory
    kernel panic: not syncing: attempted to kill init!

  21. root (cd)
    kernel /boot/kernel-2.6.18-8.el5 root=/dev/sda2
    initrd /boot/initrd-2.6.18-8.el5

    i dischi sono:
    hda ide primario
    sda usb

  22. @sacarde:
    all’avvio, prima dell’errore visualizza nulla che riguarda l’hardware USB?
    perché mi sa che il problema è proprio quello, non carica il supporto usb…

  23. @sacarde:
    allora, nella mia macchina se connetto una periferica di memorizzazione usb e poi eseguo:
    #lsmod | grep usb_storage
    ottengo:

    usb_storage xxxxx x
    scsi_mod xxxxxx x sd_mod,usb_storage,libata
    ide_core xxxxxx x usb_storage,ide_cd,ide_disk,piix,generic
    usbcore xxxxxx x usb_storage,uhci_hcd,ehci,hcd

    tralasciando quelli dell ide tutti gli altri servono, alcuni sono relativi all’usb 1 o 2 tu metili lo stesso per sicurezza.
    ricapitolando almeno:
    usb-storage, sd-mod, scsi-mod, usbcore, uhci-hcd. ehci-hcd

    ti ripeto, si possono verificare dei timeout legati al fatto che la chiavetta non viene inizializzata in tempo… però tentar non nuoce, fammi sapere che succede, sono curioso…. 🙂

    a presto…

  24. ho fatto un primo tentativo…

    aggiungento usb-storage, gli altri c’erano gia’, eccetto usbcore che non l’ho trovato tra i moduli di RH (forse sara’ incluso)

    poi ho visto l’istruzione

    mkrootdev -t ext2 -o defaults,ro hdb2

    e ho modificato in

    mkrootdev -t ext2 -o defaults,ro sdb2

    poi ho ricostruito l’initrd con:

    find ./initrd -print | cpio -o > ./inird-..ecc…..img

    e poi compresso, fatto l’iso

    ma all’avvio mi si ferma molto prima (errore non puo montare la root)

  25. dove sbaglio ?
    per ricostruire il file faccio

    find /home/sacarde/mia -print | cpio -o > initrd-2.6.18-8.el5.img

    gzip initrd-2.6.18-8.el5.img

    e poi l’mkiso ecc..

  26. @sacarde:
    ciao di nuovo, guarda, quella che stai cercando di usare è una procedura che non ho mai usato, di solito ho sempre utilizzato mkinitrd…
    a parte questo, in questo periodo sono un poco incasinato, ti lascio il mio contatto jabber, così ci possiamo trovare online e posso provare a darti una mano… ma non so quando, prima devo riuscire a sbrigare un poco di casini, comunque tu fatti sentire….

    accipiter(at)jabber(dot)org

Leave a Reply

Your email address will not be published. Required fields are marked *