Ho appena clonato la mia partizione di root (in previsione di un dist-upgrade), ho cambiato lilo.conf e fstab (nella partizione clonata) e ho eseguito lilo.
Ma purtroppo il sistema non si avvia dalla partizione clonata. Riesco a vedere alcune pagine di messaggi del kernel insoliti, poi si ferma.
Per qualche motivo ho provato ad avviare dalla buona partizione, aggiungendo init=/bin/sh
e di nuovo il sistema non si è avviato e si è fermato allo stesso messaggio del kernel. Questo ha fatto credere che "c'è qualcosa di sbagliato in init".
Così ho deciso di girare le tabelle e sono passato init=/sbin/init
all'avvio dalla partizione "cattiva" e questo ha funzionato davvero - il sistema si è avviato bene.
Ma non capisco cosa sta succedendo qui. Qualcuno ha una spiegazione per questo?
Ecco il mio lilo, conf
# Automatically added by lilo postinst script
large-memory
lba32
boot=/dev/sda
root=/dev/sda3
install=/boot/boot.b
prompt
delay=30
timeout=30
vga=normal
default="Linux-3.8.2"
image=/boot/vmlinuz-3.8.2-ext4
root=/dev/sda3
label="Linux-3.8.2"
vga=0x317
image=/boot/vmlinuz-3.8.2-ext4
root=/dev/sdd3
label="Linux-3.8.2-bak"
vga=0x317
Modifica: questi sono i messaggi del kernel
[ 3.258242] sd 6:0:0:1: [sdf] Assuming drive cache: write through
[ 3.262845] sd 6:0:0:1: [sdf] Attached SCSI removable disk
se si ferma allora a questo punto e non vedrò nessuno di questi:
[ 3.490096] firewire_core 0000:07:06.0: created device fw0: GUID 00ca308600001a4d, S400
[ 3.513091] nvidia: module license 'NVIDIA' taints kernel.
[ 3.517657] Disabling lock debugging due to kernel taint
[ 3.818951] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=io+mem,decodes=none:owns=io+mem
[ 3.823236] NVRM: loading NVIDIA UNIX x86 Kernel Module 310.40 Sun Mar 3 20:44:11 PST 2013
init=/sbin/init
che il sistema si avvii correttamente. Il comportamento è strano. Il kernel Linux dovrebbe cercare per /sbin/init
impostazione predefinita e se non è in grado di eseguirlo init
dovrebbe finire nel panico del kernel.
boot_delay=500
. Anche riguardo /bin/sh
: probabilmente è collegato dinamicamente. In tal caso, le librerie dinamiche sul filesystem di root?
dmesg|grep 'Command line: '
e cat /proc/cmdline
per vedere i parametri di avvio effettivi. mount
e ls -l /proc/1/exe
per vedere il vero binario del init
processo. ldd /proc/1/exe
e cat /proc/1/maps | grep -o '/.*\.so.*$' | sort | uniq
per vedere le librerie dinamiche di init
. Sul sistema problematico: prima dell'avvio proverei a rimuovere i dischi non necessari come /dev/sdf
.
init=...
dell'opzione non modifica il comportamento, è molto probabile che la procedura di avvio abbia esito negativo prima di avviare init ...