Stavo cercando di cancellare i vecchi kernel, ma devo aver cancellato tutti i kernel sul mio laptop Ubuntu 11.04. C'è un modo per risolvere questo problema tramite l'avvio USB o il montaggio del disco rigido su un altro sistema?
Stavo cercando di cancellare i vecchi kernel, ma devo aver cancellato tutti i kernel sul mio laptop Ubuntu 11.04. C'è un modo per risolvere questo problema tramite l'avvio USB o il montaggio del disco rigido su un altro sistema?
Avvia da un CD live (o USB live), monta alcuni sistemi, esegui il chroot e installa il kernel. Dopo una corretta installazione del kernel, smonta i filesystem.
sudo mount /dev/sdXY /mnt
Monta alcune partizioni speciali:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(opzionale) Quando si è connessi a una rete, utilizzare i server DNS dal proprio ambiente Live (altrimenti i nomi host potrebbero non essere risolti):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
: sudo chroot /mnt
apt-get install linux-image-generic
(non richiesto sudo dato che sei root dopo un chroot) Dopo una corretta installazione del kernel, estrai il chroot e smonta alcuni filesystem:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
Questa procedura espansa rappresenta la maggior parte delle complicazioni che potrebbero verificarsi, inclusi i problemi di connessione a Internet in chroot
, non sapendo quale pacchetto del kernel installare (prima di Ubuntu 12.10, non sarà sempre essere linux-image-generic
), non sapendo fin dall'inizio quale partizione o anche quale unità fisica contiene il file system /
, e con una partizione /boot
separata.
Non ho scritto questo con riferimento a nessuna delle altre procedure qui, anche se noterai alcune somiglianze. L'ho basato basicamente su la procedura qui (sebbene quelle istruzioni siano per qualcosa di completamente diverso, le ho adattate ampiamente e solo alcuni comandi, non la prosa, vengono copiati.
Hai rimosso tutti i pacchetti del kernel e Ubuntu non può essere avviato senza un kernel installato. Quindi la soluzione è quella di avviare da un CD / DVD / USB live, chroot
nel sistema installato e installare un kernel in esso.
Avvio da un CD / DVD live di Ubuntu o da un'unità flash USB live.
Seleziona Prova Ubuntu (non Installa Ubuntu ).
Quando viene visualizzato il desktop, assicurati di essere connesso a Internet. Se non lo sei, connettiti a Internet. Un modo per vedere se sei connesso a Internet è aprire un browser web. Puoi anche seguire il resto delle istruzioni portando questa risposta a Ask Ubuntu nel tuo browser web, nel sistema live CD / DVD / USB. Consiglio vivamente di farlo.
Apri una finestra di terminale con Ctrl + Alt + T .
Nella finestra Terminale, esegui questo comando per elencare le tue partizioni:
sudo parted -l
Vedrai qualcosa di simile (ma non sarà esattamente come questo):
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 20.4GB 20.4GB primary ext4 boot
2 20.4GB 21.5GB 1072MB extended
5 20.4GB 21.5GB 1072MB logical linux-swap(v1)
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0
has been opened read-only.
Error: Can't have a partition outside the disk!
Esamina l'output che hai ottenuto, per determinare il nome del dispositivo della partizione che contiene il /
filesystem del Sistema Ubuntu installato sul disco rigido (che stai riparando).
Se hai solo una partizione ext4
, quella è quella.
Se hai più di una partizione di ext4
, probabilmente è la prima. Tuttavia, se il primo è molto piccolo - meno di un gigabyte - allora quella potrebbe essere una partizione /boot
separata (ricordati anche quella).
Si noti che se boot
è elencato sotto Flags
ha molto poco a che fare con se una partizione è o meno una partizione /boot
separata. Il mio sistema, le cui informazioni sono elencate sopra, non ha una partizione /boot
separata.
Il nome del dispositivo per la partizione inizia con il nome del dispositivo per l'unità fisica, indicato immediatamente dopo Disk
nella seconda riga. Quindi aggiungi il numero della partizione alla fine di quello. Pertanto, il nome del dispositivo per la partizione che contiene il mio /
file system è /dev/sda1
. Ecco le due righe in cui ho trovato quell'informazione:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Se hai più di una unità fisica, otterrai più di una lista come mostrato sopra. Ma se non hai installato un altro sistema simile a Unix, probabilmente avrai solo un'unità che contiene ext4
partizioni, almeno senza averle create intenzionalmente su un'altra unità. Se disponi di più unità con partizioni ext4
, la partizione ext4
che contiene il tuo file system /
è probabilmente su un'unità che anche contiene una partizione linux-swap
.
È possibile che il filesystem /
del tuo sistema Ubuntu si trovi su una partizione di tipo diverso da ext4
. Quando ciò accade, è quasi sempre ext3
, e quasi sempre su un sistema piuttosto vecchio. È molto raro che ciò avvenga, a meno che tu non abbia intenzionalmente impostato le cose in questo modo.
Ricorda il nome del dispositivo della partizione che conteneva il tuo file system /
(o annotalo). Se è diverso da /dev/sda1
, sostituirai /dev/sda1
con i seguenti passaggi.
(Se sembra che tu abbia una partizione /boot
separata, ricorda anche il nome del dispositivo.)
Monta il file system /
in /mnt
e monta il suo filesystem /dev
:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Controlla se il sistema Ubuntu danneggiato che stai riparando ha una partizione /boot
separata che deve essere montata separatamente. (Se sei sicuro non lo fa, puoi saltarlo.)
Per verificare, esegui:
ls /mnt/boot
Se c'è un output (come grub memtest86+.bin memtest86+_multiboot.bin
, ma non necessariamente esattamente questo), il /boot
del sistema danneggiato si trova sulla stessa partizione del suo /
e non devi montare nulla per accedervi.
Ma se non c'è output, dovrai montare il filesystem /boot
:
sudo mount BOOT-PARTITION /mnt/boot
Sostituisci BOOT-PARTITION
con il nome del dispositivo della partizione /boot
(vedere il passaggio 6 sopra).
chroot
nel sistema danneggiato, montare il resto virtuale importante filesystem e imposta alcune importanti variabili d'ambiente:
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
Determina se l'accesso a Internet funziona all'interno di chroot
da ping
ping -c 5 www.google.com
Dovresti vedere qualcosa di simile a questo:
PING www.l.google.com (74.125.131.147) 56(84) bytes of data.
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms
--- www.l.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
Se sembra più che altro, e il numero precedente a % packet loss
è inferiore a 100, la connessione Internet in chroot
funziona:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Funziona, quindi puoi saltare il passaggio 11 .
Se sembra più che altro, e il numero precedente a % packet loss
è 100, la connessione richiede una risoluzione dei problemi. Assicurati che la connessione sul sistema di CD live (ad esempio, tramite un browser Web o eseguendo lo stesso comando in una scheda / finestra separata, non in chroot
Terminal) funzioni. Assicurati di digitare correttamente il comando. Usa www.google.com
se non sei stato.
Se l'output non assomiglia a quanto sopra, ma invece dice ping: unknown host www.google.com
, la rete non funziona ancora in chroot
.
Imposta la rete in chroot
. Salta questo passaggio a meno che non si sia verificato un errore unknown host
nel passaggio 10 precedente.
Per configurare la rete, eseguire il backup del file hosts
del sistema danneggiato e copiare i file hosts
e resolv.conf
del sistema CD live. (Non è necessario eseguire il backup della versione del sistema rotta di resolv.conf
, poiché tale file viene rigenerato automaticamente al volo.)
Apri una nuova scheda Terminale ( Ctrl + Maiusc + T ) o, se preferisci, un nuova finestra di Terminale ( Ctrl + Maiusc + N , o solo Ctrl + < kbd> Alt + T ). Esegui questi comandi al suo interno:
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
sudo cp /etc/hosts /mnt/etc/hosts
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
exit
(Il comando exit
alla fine chiude la nuova scheda / finestra.)
Ripeti il passaggio 10 per assicurarti che l'accesso a Internet funzioni ora da chroot
. Dovrebbe.
Scopri quale pacchetto del kernel dovrebbe essere installato. Di solito, questo sarà linux-image-generic
. Ma non sempre.
Se non sei sicuro di quale installare, dipenderà in parte dalla versione di Ubuntu che hai installato e in parte da altre informazioni. Se non sei sicuro di quale versione di Ubuntu hai installato, scopri eseguendo questo comando (in chroot
, non in una finestra / scheda Terminale separata):
lsb_release -r
Su Ubuntu 12.10 (la prossima versione di Ubuntu, attualmente in sviluppo), sempre sarà linux-image-generic
. (Vedi questo , questo e questo .)
Su Ubuntu 12.04 LTS, le probabili possibilità sono linux-image-generic
e linux-image-generic-pae
. (A differenza delle versioni precedenti, 12.04 non ha più kernel server e desktop separati.)
Se il sistema Ubuntu installato (che stai riparando) è la versione a 64 bit, usa linux-image-generic
. ( linux-image-generic-pae
si applica solo ai sistemi a 32 bit.)
È possibile avere un sistema Ubuntu a 32 bit installato su un computer a 32 o 64 bit. Inoltre, potresti utilizzare un live CD a 32 o 64 bit per correggere un sistema installato a 32 bit. Quindi, se non sai se il sistema Ubuntu installato è a 32 o 64 bit, controlla eseguendo questo comando (in chroot
, non in un finestra / scheda Terminale separata):
dpkg-architecture -qDEB_HOST_ARCH_BITS
L'output sarà o 32
o 64
.
(Tieni presente che uname -m
è non un modo corretto per trovare queste informazioni, perché anche quando viene eseguito in chroot
, ciò ti dirà l'architettura di kernel in esecuzione , che è il kernel del sistema live CD e non il kernel del sistema installato (rotto).
Se il sistema Ubuntu installato (che stai riparando) è la versione a 32 bit, il miglior kernel da usare dipenderà dalla quantità di RAM che hai. Raccomando:
linux-image-generic
se hai meno di 3 GB di RAM linux-image-generic-pae
se hai 3 GB di RAM o più. (Questo è il modo in cui l'installatore di Ubuntu sceglie quale configurare da quando l'installer ha acquisito la capacità di installare i kernel PAE. Vedi la risoluzione a questo bug . Se vuoi impara cos'è il PAE, vedi questo articolo di Wikipedia .Se vuoi conoscere PAE in Ubuntu, vedi questa pagina wiki di Ubuntu .)
Se non sai quanta RAM hai, esegui questo comando per scoprire:
grep MemTotal /proc/meminfo
Questo è elencato in kilobyte . Per convertire in gigabyte , dividi per 1.048.576 (1024 2 ).
Su Ubuntu rilascia prima 12.04, le probabili possibilità sono linux-image-generic
, linux-image-generic-pae
e linux-image-server
.
linux-image-server
. Questo è il momento che stavi aspettando! Installa un kernel nel sistema danneggiato.
(Come prima, eccetto dove diversamente indicato esplicitamente, questi comandi vengono eseguiti in chroot
, non in una finestra / scheda Terminale separata.)
apt-get update
apt-get -y install linux-image-generic
Sostituisci linux-image-generic
con qualsiasi altro pacchetto del kernel che hai deciso di installare nel passaggio 12, se diverso.
Se dovessi eseguire il passaggio 11 per configurare il networking in chroot
, ripristina il vecchio file hosts
. Se hai saltato il passaggio 11, salta questo passaggio.
Per ripristinarlo, esegui questo comando:
cp /etc/hosts.old /etc/hosts
Smonta filesystem, exit
out di chroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
Spegni il sistema live CD / DVD / USB, rimuovendo il CD / DVD live o l'unità flash USB. Avviare nel sistema installato sul disco rigido, che hai appena riparato. Hai installato un pacchetto del kernel (e come parte dell'installazione, il kernel fornito verrà aggiunto al menu di avvio di GRUB2). Se tutto funziona correttamente, il sistema dovrebbe avviarsi senza problemi. (Penso che sia possibile che ci vorrà un po 'più tempo del solito, questa volta.)
NOTA BENE: Non ho provato la procedura sopra su ogni possibile sistema Ubuntu, quindi è possibile che ci sia un errore che non ho identificato.
In futuro, consiglio sempre di mantenere installati due kernel. È bene averne due nel caso in cui uno di essi smetta di funzionare per qualsiasi motivo (è possibile selezionare l'altro nel menu di avvio di GRUB2). Inoltre, se intendi conservare due kernel e ne disinstalli accidentalmente uno in più di quanto avevi intenzione di riavviare, ne rimane ancora uno da cui avviare.
Volevo solo aggiungere la mia esperienza che ho passato oggi con l'aggiornamento a Willy. Ho pulito un po 'e mi sono ritrovato con solo memtest. google mi ha portato a capire che avevo rimosso i kernel. Un vincolo che ho avuto è una rete lenta e quindi il download di ISO completo non era un'opzione. Così ho usato Ubuntu Minimal CD (solo 40MB) e avviato su di esso. Dopo aver rilevato l'opzione hardware (che mi ha aiutato a connettermi al wireless) sono entrato nell'opzione di shell. Ho seguito le istruzioni di @Lekensteyn e ci sono riuscito. poche cose però: devi copiare resolv.conf
prima di andare in chroot altrimenti il tuo DNS sarà svitato e dato che l'utente che ha effettuato l'accesso non ha bisogno di sudo ovunque.
So che è vecchio, ma ho pensato che l'aggiunta di questa risposta aggiungesse valore a chi avrebbe incontrato il problema.
Quando ho rimosso il mio kernel ho trovato questa soluzione su Ubuntu Forums. Ho seguito ogni passaggio e il sistema è stato ripristinato. Spero ti possa aiutare.
Un chroot potrebbe funzionare, chroot significa che quando si avvia un sistema si modifica il file system di root. Ad esempio, hai iniziato da un CD live ma hai cambiato la radice "/" in cui è installato il tuo ubuntu.
Diciamo che la tua ubuntu è installata su / dev / sda2, quindi puoi provare i seguenti comandi:
Codice:
sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
ora sei root "/" è su / dev / sda2, prova ad installare il kernel
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Ho dovuto fare un po 'di congetture qui dato che non ho mai dovuto farlo prima, ma dovrebbe esserlo. Non so se ricevi un avviso di errore fstab (come se non trovassi la root).
Ora è necessario pulire alcune cose e smontare le partizioni montate: Codice:
rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt
E puoi riavviare per vedere se ha funzionato.
URL per il thread: link
Dopo aver rimosso i vecchi kernel da Trusty14.04 ieri (FTR: ho non rimosso i due più recenti!) il mio sistema non si avviava più. GRUB ha mostrato
Error: File not found
Error: You need to load the kernel first
Non ho idea del perché.
Ho seguito quindi le eccellenti istruzioni di Eliah Kagan per installare linux-image-generic
da un CD live. Ha installato 150 MB di nuovo kernel, ma purtroppo non ha risolto il problema.
Fortunatamente ho trovato questa pagina . Lo strumento Boot-Repair
ha funzionato correttamente, il mio sistema è di nuovo in esecuzione.
Leggi altre domande sui tag kernel