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-live
allora, 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/grub
ora 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-486
ora 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" iso
masterizziamo 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 risposte a “debian live – boot da cd e sistema su usb”
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
E non tutti possono aver capito la citazione del vernacoliere ma soltanto i pochi eletti (o peori che lo comprano tutte le settimane)
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…
@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… 😀
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
Target: avviare debian 4 r0 installato su disco USB (ma il mio bios non supporta avvio diretto da USB).
@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
Grazie accipiter *kiss* . Ora devo solo trovare il firmware per il modem (ueagle-atm:um1040) 😉
Evvai Ora sono DebIan … izzata (modem installato) 😉
@Stella: benvenuta nella “tribù”… 😀
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 ?
O è talmente intelligente che se metto il nuovo nel cd avviera’ il nuovo anche sul disco usb ?
@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.
ok in pratica la parte “è talmente intelligente” era giusta 😉
thx mille.-
[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
@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)… 😀
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
@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…
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 ?
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
@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
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!
@sacarde:
ma che parametri passi a grub/lilo?
me li puoi “scrivere” per esteso?
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
@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…
appunto…
ma tra i moduli in initrd c’e’ ?
li ho elencati prima, io non l’ho visto
@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…
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)
vorrei tentare come dice qui
http://a2.pluto.it/a297.htm
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..
@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
ma se devo avviare un semplice boot da cd come faccio???