Come viene trovato / sbin / init durante l'avvio di lilo


2

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/she 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/initall'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

Se la modifica init=...dell'opzione non modifica il comportamento, è molto probabile che la procedura di avvio abbia esito negativo prima di avviare init ...
Levans

Ma Martin ha scritto che cambiandolo in modo init=/sbin/initche il sistema si avvii correttamente. Il comportamento è strano. Il kernel Linux dovrebbe cercare per /sbin/initimpostazione predefinita e se non è in grado di eseguirlo initdovrebbe finire nel panico del kernel.
pabouk,

Passare init = / bin / sh non provoca neanche un panico nel kernel. Né avvia una shell.
Martin Drautzburg,

@MartinDrautzburg: quali sono gli ultimi messaggi prima che l'inizializzazione del kernel si interrompa? Cosa viene visualizzato dopo questi messaggi quando il sistema si avvia correttamente? Per vedere i messaggi puoi provare a scorrere indietro usando Shift + PgUp oppure puoi provare i parametri del kernel boot_delay=500. Anche riguardo /bin/sh: probabilmente è collegato dinamicamente. In tal caso, le librerie dinamiche sul filesystem di root?
pabouk,

@MartinDrautzburg: Pensi che fino al punto di congelamento entrambi i sistemi abbiano gli stessi messaggi di avvio? Vorrei provare quanto segue: sul sistema di lavoro : dmesg|grep 'Command line: 'e cat /proc/cmdlineper vedere i parametri di avvio effettivi. mounte ls -l /proc/1/exeper vedere il vero binario del initprocesso. ldd /proc/1/exee cat /proc/1/maps | grep -o '/.*\.so.*$' | sort | uniqper vedere le librerie dinamiche di init. Sul sistema problematico: prima dell'avvio proverei a rimuovere i dischi non necessari come /dev/sdf.
pabouk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.