Grazie Joe! Comunque ho risolto. Ho modificato il file fstab e la mia slack si è avviata senza problemi. Grazie a tutti, grazie a Emanuele, ilmitch, Joe. Spero di non aver dimenticato nessuno.joe ha scritto: ↑gio 9 mar 2023, 11:39Perché serve per dopo quando avrai eseguito il chroot, cioè quando cambi di fatto la "root directory". Se ometti il montaggio di quei percorsi, dopo ti ritroveresti con la root cambiata, ma da lì dentro non avresti accesso a tutto l'ambaradan che il kernel (quello del sistema "vero" regolarmente avviato) ha messo in piedi all'avvio del sistema "host" cioè Opensuse nel tuo caso se non ho letto male i primi messaggi.
In pratica quando fai il chroot tu continui ad utilizzare il kernel di opensuse (per forza, il kernel lo avvii al boot della macchina), e lui ha bisogno di interagire con quelle speciali directories "eteree"Nel momento in cui fai il chroot, /sys non esisterà più per il kernel, perché la root "/" sarà appunto cambiata e rispetto al sistema opensuse, si troverà in "/mnt/usb".Codice: Seleziona tutto
/sys /proc /dev
Ma "/mnt/usb/dev", "/mnt/usb/proc", "/mnt/usb/sys", non conterranno nulla che attenga al kernel in uso.
Ecco che allora devi provvedere tu a mano a montare quei percorsi necessari al kernel, che appunto contengono già roba caricata dal kernel stesso. E li devi montare nelle future directories corrispondenti, all'interno di quella che diventerà la nuova root directory "/" ovvero appunto /mnt/usb, e di conseguenza:A quel punto quando eseguirai il comando "chroot /mnt/usb", /mnt/usb diventerà "/", la nuova root ovviamente, e in /dev ad esempio avrai i devices veri caricati dal kernel all'avvio della macchina... ma quel /dev in realtà è pur sempre il vecchio /mnt/usb/dev, che hai popolato tu con i "dispositivi" corretti grazie alla preventiva operazione di mount.Codice: Seleziona tutto
/mnt/usb/dev /mnt/usb/proc /mnt/usb/sys
Ok, prendila alla grosso modo... ma più o meno il senso dell'operazione è quello.
Spostare Slackware da hhd interno a hdd esterno usb
Moderatore: Staff
1) Citare sempre la versione di Slackware64 usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware64, se l'argomento è Slackware32 o generale usate rispettivamente il forum Slackware o Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
- targzeta
- Iper Master
- Messaggi: 6619
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Spostare Slackware da hhd interno a hdd esterno usb
Codice: Seleziona tutto
# Switch to real root partition:
Codice: Seleziona tutto
/bin/sh
Codice: Seleziona tutto
cd /boot/initrd-tree && find . | cpio -o -H newc | gzip -9c > /boot/initrd.gz
Codice: Seleziona tutto
lsmode
Emanuele
P.S. Tra l'altro, noi avevamo messo uno sleep di 5 secondi, che secondo me è anche troppo. Ricordiamo di sistemare anche quello, dopo!
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
ecco l'output di lsmod e dmesg. grazie
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
Emanuele, puoi spiegarmi il comando che mi hai fatto lanciare?targzeta ha scritto: ↑ven 10 mar 2023, 13:20bob76, per ridurre la dimensione del tuo initrd, prima fai un backup di quello attuale e poi, alla riga 321 del file /boot/initrd-tree/init mettici prima di:la riga:Codice: Seleziona tutto
# Switch to real root partition:
Poi lancia:Codice: Seleziona tutto
/bin/sh
Ora, quando riavvierai, avrai una shell di root dentro l'ambiente dell'initrd. A questo punto posta qui l'output del comando:Codice: Seleziona tutto
cd /boot/initrd-tree && find . | cpio -o -H newc | gzip -9c > /boot/initrd.gz
Per chiudere la shell di root, ti basta scrivere il comando 'exit'.Codice: Seleziona tutto
lsmode
Emanuele
P.S. Tra l'altro, noi avevamo messo uno sleep di 5 secondi, che secondo me è anche troppo. Ricordiamo di sistemare anche quello, dopo!
- joe
- Iper Master
- Messaggi: 3683
- Iscritto il: ven 27 apr 2007, 11:21
- Slackware: 15.0
- Kernel: 5.15.38
- Desktop: dwm
Re: Spostare Slackware da hhd interno a hdd esterno usb
In pratica se non sbaglio il bootloader non avvierà più dierttamente il kernel, ma solo la initramdisk.
Questa avvia il sistemino col necessario per raggiungere il kernel, nell'esempio /boot/vmlinuz-ecc, e se riesce, finalmente si avvia il sistema vero. Nel tuo caso se ho ben capito il bootloader non riesce a raggiungere il kernel attraverso il collegamento USB, perché gli servono moduli appositi per gestire quel controller ecc, allora si affida questo passaggio alla initrd. Il bootloader la avvia, quindi si avvia il sistemino temporaneo che contiene nell'imamgine compressa initrd.gz e da lì dentro viene caricato il kernel e si passa al sistema reale.
Aggiungendo "/bin/sh" come ti ha suggerito Emanuele, in pratica tu forzi il sistema di initramdisk a non abbandonarti automaticamente, ma a fermarsi prima di tentare il passaggio al sistema reale (switching to real root partition). E da lì consegnarti il controllo grazie appunto all'avvio di una shell, un prompt dei comandi da cui puoi verificare la situazione di quali moduli siano caricati, se vede l'USB ecc ecc... insomma per capire dove sta il problema.
Per creare un'immagine initrd.gz utile allo scopo, si sfrutta la directory "initrd-tree" presente in /boot. Se ne modifica il contenuto, in particolare appunto il file "init" come spiegato e si salva. A quel punto si crea l'immagine del sistemino temporaneo che è appunto la initramdisk (sono la stessa cosa, sinonimi).
Per farlo Emanuele ha postato una serie di comandi in cascata:
- Prima di tutto si sposta nella root del sistemino con "cd". "&&" serve per proseguire coi comandi successivi "solo se il comando cd non restituisce errori", se ci fossero problemi il resto dei comandi non viene eseguito e se ne esce restituendo semplicemente il prompt:
Codice: Seleziona tutto
cd /boot/initrd-tree &&
- Ok, una volta dentro il sistemino col comando find faccio stampare in output tutto l'albero delle directory e files che contiene, ricorsivamente dalla dir corrente indicata col punto ".":
Codice: Seleziona tutto
find .
- Ora grazzie alla pipe"|" intercetto la lista del contenuto del sistemino e la passo in input al comando "cpio" che serve a creare un archivio che appunto conterrà di fatto il sistemino:
Codice: Seleziona tutto
| cpio -o -H newc
- Come prima prendo l'output con la pipe e la redirigo in input al comando gzip che in pratica riceve l'archivio di cui sopra e semplicemente lo comprime:
Codice: Seleziona tutto
| gzip -9c
- Infine siccome lo comprime sputando tutto sullo standard output, col "comando maggiore" ">" forzo la scrittura dell'output su file generando /boot/initrd.gz.
Occhio, che il nome è importante nel seguito. Per usare /boot/initrd.gz dovrai assicurarti che il bootloader sia configurato correttamente per avviare il kernel tal dei tali, con la initramdisk precisamente chiamata /boot/initrd.gz. In pratica tutto deve essere coerente.
Codice: Seleziona tutto
> /boot/initrd.gz
Codice: Seleziona tutto
menuentry 'Slackware 15.0 Stable | Kernel Generic' {
savedefault
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt3'
echo 'caricamento linux vmlinuz-generic...'
linux /boot/vmlinuz-generic root=/dev/sda3 ro video=vesa:off vga=normal mitigations=off
initrd /boot/initrd-generic.img
}
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
Grazie Joe,joe ha scritto: ↑sab 11 mar 2023, 12:37Se ho ben capito il tutto serviva per avere un prompt dei comandi in fase di boot, quando ancora il sistema vero non è caricato e ci si trova ancora in un ambiente temporaneo limitato a cui è demandato il caricamento dei moduli strettamente necessari per gestire il sistema reale, esempi classici sono filesystem "esotici" ma neanche tanto che il (forse dico una sciocchezza perché vado a memoria) il bootloader non è in grado di gestire, ora non ricordo se è il bootloader il limite o qualcos'altro... Insomma per lanciare ad esempio il kernel che si trova di solito come "/boot/vmlinuz-generic-5.10.0.4" ad esempio... Ecco per andarlo a pescare li bootloader deve montare la partizione o comunque il filesystem in cui c'è la dir /boot, e per farlo deve poter gestire quel tipo di filesystem. Per garantire questo supporto si fa avviare al bootloader un sistemino temporaneo, appunto contenuto nella initramdisk.
In pratica se non sbaglio il bootloader non avvierà più dierttamente il kernel, ma solo la initramdisk.
Questa avvia il sistemino col necessario per raggiungere il kernel, nell'esempio /boot/vmlinuz-ecc, e se riesce, finalmente si avvia il sistema vero. Nel tuo caso se ho ben capito il bootloader non riesce a raggiungere il kernel attraverso il collegamento USB, perché gli servono moduli appositi per gestire quel controller ecc, allora si affida questo passaggio alla initrd. Il bootloader la avvia, quindi si avvia il sistemino temporaneo che contiene nell'imamgine compressa initrd.gz e da lì dentro viene caricato il kernel e si passa al sistema reale.
Aggiungendo "/bin/sh" come ti ha suggerito Emanuele, in pratica tu forzi il sistema di initramdisk a non abbandonarti automaticamente, ma a fermarsi prima di tentare il passaggio al sistema reale (switching to real root partition). E da lì consegnarti il controllo grazie appunto all'avvio di una shell, un prompt dei comandi da cui puoi verificare la situazione di quali moduli siano caricati, se vede l'USB ecc ecc... insomma per capire dove sta il problema.
Per creare un'immagine initrd.gz utile allo scopo, si sfrutta la directory "initrd-tree" presente in /boot. Se ne modifica il contenuto, in particolare appunto il file "init" come spiegato e si salva. A quel punto si crea l'immagine del sistemino temporaneo che è appunto la initramdisk (sono la stessa cosa, sinonimi).
Per farlo Emanuele ha postato una serie di comandi in cascata:Tanto per esempio (non c'entra del tutto col topic) metto una mia voce del menu di Grub che appunto avvia il kernel genenric appoggiandosi su una opportuna initrd, senza la quale il sistema non partirebbe:
- Prima di tutto si sposta nella root del sistemino con "cd". "&&" serve per proseguire coi comandi successivi "solo se il comando cd non restituisce errori", se ci fossero problemi il resto dei comandi non viene eseguito e se ne esce restituendo semplicemente il prompt:
Codice: Seleziona tutto
cd /boot/initrd-tree &&
- Ok, una volta dentro il sistemino col comando find faccio stampare in output tutto l'albero delle directory e files che contiene, ricorsivamente dalla dir corrente indicata col punto ".":
Codice: Seleziona tutto
find .
- Ora grazzie alla pipe"|" intercetto la lista del contenuto del sistemino e la passo in input al comando "cpio" che serve a creare un archivio che appunto conterrà di fatto il sistemino:
Codice: Seleziona tutto
| cpio -o -H newc
- Come prima prendo l'output con la pipe e la redirigo in input al comando gzip che in pratica riceve l'archivio di cui sopra e semplicemente lo comprime:
Codice: Seleziona tutto
| gzip -9c
- Infine siccome lo comprime sputando tutto sullo standard output, col "comando maggiore" ">" forzo la scrittura dell'output su file generando /boot/initrd.gz.
Occhio, che il nome è importante nel seguito. Per usare /boot/initrd.gz dovrai assicurarti che il bootloader sia configurato correttamente per avviare il kernel tal dei tali, con la initramdisk precisamente chiamata /boot/initrd.gz. In pratica tutto deve essere coerente.Codice: Seleziona tutto
> /boot/initrd.gz
Ecco, nel mio caso indico a Grub di utilizzare la initrd presente in /boot e chiamata initrd-generic.img (è comunque un file compresso con gizip anche se nominato con estensione img).Codice: Seleziona tutto
menuentry 'Slackware 15.0 Stable | Kernel Generic' { savedefault load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt3' echo 'caricamento linux vmlinuz-generic...' linux /boot/vmlinuz-generic root=/dev/sda3 ro video=vesa:off vga=normal mitigations=off initrd /boot/initrd-generic.img }
non riuscivo a capire solo il comando finale. Lo hai spiegato perfettamente.
- targzeta
- Iper Master
- Messaggi: 6619
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Spostare Slackware da hhd interno a hdd esterno usb
Codice: Seleziona tutto
mkinitrd -c -m uvcvideo:videobuf2_vmalloc:videobuf2_memops:videobuf2_v4l2:videobuf2_common:videodev:mc:joydev:uas:evdev:asus_nb_wmi:hid_multitouch:hid_microsoft:hid_lenovo:hid_logitech_hidpp:hid_logitech_dj:hid_logitech:hid_cherry:hid_asus:asus_wmi:platform_profile:battery:sparse_keymap:rfkill:wmi_bmof:mxm_wmi:wmi:video:hid_generic:i2c_hid:i2c_core:usbhid:hid:uhci_hcd:ohci_pci:ehci_pci:ohci_hcd:ehci_hcd:xhci_pci:xhci_pci_renesas:xhci_hcd:usb_storage
Fai sapere,
Emanuele
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
Ciao Emanuele,targzeta ha scritto: ↑dom 12 mar 2023, 0:22Dall'output di lsmod sembra che ci eravamo dimenticati il modulo uas, che sinceramente non conoscevo! Mettendo tutto insieme, questa volta dalla Slackware stessa, dovrebbe bastare ricreare l'initrd con questo comando:Salva un backup sia di initrd.gz che di initrd-tree, visto che l'opzione "-c" cancella tutto, prima di fare uno nuovo. Probabilmente non ti servono neanche tutti questi moduli nello initrd, però mettiamoceli lo stesso. Se vuoi avere la tastiera italiana in caso di errori, mettici anche '-l it'. Inoltre, forse ti servirà un po' di tempo per far si che le partizioni del disco vengano viste correttamente. Quindi usa anche l'opzione '-w 3' o 4 o 5, vedi tu quanti secondi servono. Con queste opzioni, hai un initrd.gz di circa 9 mega, che è molto meglio di quello che hai ora da 300!Codice: Seleziona tutto
mkinitrd -c -m uvcvideo:videobuf2_vmalloc:videobuf2_memops:videobuf2_v4l2:videobuf2_common:videodev:mc:joydev:uas:evdev:asus_nb_wmi:hid_multitouch:hid_microsoft:hid_lenovo:hid_logitech_hidpp:hid_logitech_dj:hid_logitech:hid_cherry:hid_asus:asus_wmi:platform_profile:battery:sparse_keymap:rfkill:wmi_bmof:mxm_wmi:wmi:video:hid_generic:i2c_hid:i2c_core:usbhid:hid:uhci_hcd:ohci_pci:ehci_pci:ohci_hcd:ehci_hcd:xhci_pci:xhci_pci_renesas:xhci_hcd:usb_storage
Fai sapere,
Emanuele
il comando per creare initrd non funziona. Ho aggiunto -r e -w 4, ma all'avvio mi dice che non trova il disco sdb e quindi non lo può montare. Ora ho ripristinato quello più recente. Tra l'altro, con i file di boot funzionanti, prima di far partire initrd.gz si apre una shell. Perché? Nel file init l'ho commentata, non dovrebbe aprirsi. Dando l'exit si avvia normalmente e tutto funziona.
Curiosità:
Quando lancio startx la prima riga è sempre:
il file /root/.serverauth.1331(o altro, gli piace cambiare) not exit. Ma kde si avvia senza problemi
- targzeta
- Iper Master
- Messaggi: 6619
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Spostare Slackware da hhd interno a hdd esterno usb
Per il discorso sul backup e la shell. Dopo che hai commentato/eliminato la riga che abbiamo aggiunto, hai rilanciato tutto il comando per ricreare l'initrd.gz? Non basta editare i file sotto initrd-tree.
Emanuele
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb
Ciao,targzeta ha scritto: ↑lun 13 mar 2023, 15:01È strano che non vada. Hai messo '-r cc74..' insomma, la tua partizione root della Slackware? Mi puoi postare qui il comando completo? Magari metti '-w 5' per vedere. Hai notato se il disco lo vede, e se vede anche le partizioni? Quando fallisce, ti lascia una shell, dovresti cercare di lavorare lì dentro e capire cosa c'è che non va.
Per il discorso sul backup e la shell. Dopo che hai commentato/eliminato la riga che abbiamo aggiunto, hai rilanciato tutto il comando per ricreare l'initrd.gz? Non basta editare i file sotto initrd-tree.
Emanuele
non ho messo la partizione root. Siccome l'ho fatto direttamente da Slack credevo non fosse necessario. Ho modificato solo il file init, non ho rilanciato il comando completo per ricreare initrd.gz Lo rifarò allora.
Tra l'altro ho scritto una cosa nell'argomento "Problema con hplip". Potresti vederlo?
-
- Linux 0.x
- Messaggi: 16
- Iscritto il: mar 7 mar 2023, 8:19
- Nome Cognome: Roberto
- Slackware: 15
- Kernel: 5.15.19
- Desktop: kde plasma
Re: Spostare Slackware da hhd interno a hdd esterno usb

- targzeta
- Iper Master
- Messaggi: 6619
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: Spostare Slackware da hhd interno a hdd esterno usb

Emanuele