Próbowałem usunąć stare jądra, ale musiałem usunąć wszystkie jądra na moim laptopie z Ubuntu 11.04. Czy można to naprawić za pomocą rozruchu USB lub montażu dysku twardego w innym systemie?
Próbowałem usunąć stare jądra, ale musiałem usunąć wszystkie jądra na moim laptopie z Ubuntu 11.04. Czy można to naprawić za pomocą rozruchu USB lub montażu dysku twardego w innym systemie?
Odpowiedzi:
Uruchom na żywo CD (lub na żywo USB), zamontuj niektóre systemy, chroot na nim i zainstaluj jądro. Po pomyślnej instalacji jądra odmontuj systemy plików.
sudo mount /dev/sdXY /mnt
Zamontuj specjalne partycje:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(opcjonalnie) Gdy jesteś podłączony do sieci, użyj serwerów DNS ze swojego środowiska Live (w przeciwnym razie nazwy hosta nie będzie można rozwiązać):
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(nie wymaga sudo, ponieważ jesteś rootem po chroocie)Po udanej instalacji jądra wyjdź z chroota i odmontuj niektóre systemy plików:
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
. Ubuntu zwykle zajmuje się odmontowywaniem / synchronizowaniem systemów plików, ale dla mnie wygląda to na czystsze.
/dev/mdxxx
dysk - zakładając, że to mdadm.
/etc/resolv.conf
(usuń go, jeśli jest to dowiązanie symboliczne) i umieść nameserver 8.8.8.8
w nim coś podobnego (publiczny serwer DNS Google). Wymień go, jeśli to konieczne.
cp /etc/resolv.conf /mnt/etc/resolv.conf
przed pójściem do chroot. To i tak zadziałało
Ta rozszerzona procedura uwzględnia większość komplikacji, które mogą wystąpić, w tym problemy z połączeniem z Internetem w chroot
, nie wiedząc, który pakiet jądra zainstalować (przed Ubuntu 12.10, nie zawsze tak będzie linux-image-generic
), nie wiedząc od razu, która partycja, a nawet który dysk fizyczny zawiera /
system plików i ma osobną /boot
partycję.
Nie napisałem tego w odniesieniu do żadnej z innych procedur tutaj, chociaż zauważysz pewne podobieństwa. Oparłem ją luźno na tej procedurze (chociaż te instrukcje dotyczą czegoś zupełnie innego, obszernie je dostosowałem i tylko niektóre polecenia, nie proza, są kopiowane).
Usunąłeś wszystkie pakiety jądra, a Ubuntu nie może uruchomić się bez zainstalowanego jądra. Rozwiązaniem jest więc uruchomienie z płyty CD / DVD / USB chroot
na żywo do zainstalowanego systemu i zainstalowanie w nim jądra.
Uruchom komputer z dysku CD / DVD na żywo Ubuntu lub dysku flash USB na żywo.
Wybierz Wypróbuj Ubuntu (nie instaluj Ubuntu ).
Gdy pojawi się pulpit, upewnij się, że masz połączenie z Internetem. Jeśli nie, połącz się z Internetem. Jednym ze sposobów sprawdzenia, czy masz połączenie z Internetem, jest otwarcie przeglądarki internetowej. Możesz nawet postępować zgodnie z pozostałymi instrukcjami, podnosząc odpowiedź Ask Ubuntu w przeglądarce internetowej, w systemie CD / DVD / USB na żywo. Zdecydowanie polecam to zrobić.
Otwórz okno terminala za pomocą Ctrl+ Alt+ T.
W oknie terminala uruchom to polecenie, aby wyświetlić listę swoich partycji:
sudo parted -l
Zobaczysz coś takiego (ale nie będzie dokładnie tak):
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!
Sprawdź uzyskane dane wyjściowe, aby określić nazwę urządzenia partycji zawierającej /
system plików systemu Ubuntu zainstalowanego na dysku twardym (który naprawiasz).
Jeśli masz tylko jedną ext4
partycję, to ta.
Jeśli masz więcej niż jedną ext4
partycję, prawdopodobnie jest to pierwsza. Jeśli jednak pierwszy jest bardzo mały - mniej niż gigabajt - może to być osobna /boot
partycja (pamiętaj też o tym).
Należy pamiętać, że to, czy boot
wymieniono na liście, Flags
ma bardzo niewiele wspólnego z tym, czy partycja jest oddzielną /boot
partycją. Mój system, którego informacje wymieniono powyżej, nie ma osobnej /boot
partycji.
Nazwa urządzenia dla partycji zaczyna się od nazwy urządzenia dla dysku fizycznego, podanej bezpośrednio Disk
w drugim wierszu. Następnie wystarczy dodać numer partycji na końcu tego. Tak więc nazwa urządzenia dla partycji zawierającej mój /
system plików to /dev/sda1
. Oto dwie linie, w których znalazłem te informacje:
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
Jeśli masz więcej niż jeden dysk fizyczny, otrzymasz więcej niż jedną listę, jak pokazano powyżej. Ale chyba, że masz zainstalowany inny system uniksowy, prawdopodobnie będziesz mieć tylko jeden dysk zawierający ext4
partycje, przynajmniej bez celowego tworzenia ich na innym dysku. Jeśli masz wiele dysków z ext4
partycjami, ext4
partycja zawierająca /
system plików prawdopodobnie znajduje się na dysku, który również zawiera linux-swap
partycję.
Jest możliwe , że system Ubuntu /
system plików jest na partycji innej niż typu ext4
. Kiedy tak się dzieje, prawie zawsze ext3
i prawie zawsze na dość starym systemie. Jest to bardzo rzadkie, chyba że samemu celowo skonfigurujesz takie rozwiązanie.
Zapamiętaj nazwę urządzenia partycji, która zawierała twój /
system plików (lub zapisz go). Jeśli jest inny niż /dev/sda1
, zastąpisz /dev/sda1
go w poniższych krokach.
(Jeśli wyglądało na to, że masz oddzielną /boot
partycję, pamiętaj też nazwę tego urządzenia).
Zamontuj /
system plików /mnt
i podłącz jego /dev
system plików:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
Sprawdź, czy uszkodzony system Ubuntu, który naprawiasz, ma osobną /boot
partycję, którą należy zamontować osobno. (Jeśli jesteś pewien, że tak nie jest, możesz to pominąć).
Aby to sprawdzić, uruchom:
ls /mnt/boot
Jeśli jest wyjście (jak grub memtest86+.bin memtest86+_multiboot.bin
, ale niekoniecznie dokładnie to), wtedy uszkodzony system znajduje /boot
się na tej samej partycji co jego /
i nie musisz montować niczego, aby uzyskać do niego dostęp.
Ale jeśli nie ma danych wyjściowych, będziesz musiał zamontować /boot
system plików:
sudo mount BOOT-PARTITION /mnt/boot
Zastąp BOOT-PARTITION
nazwą urządzenia /boot
partycji (patrz krok 6 powyżej).
chroot
do uszkodzonego systemu, podłącz pozostałe ważne wirtualne systemy plików i ustaw niektóre ważne zmienne środowiskowe:
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
Sprawdź, czy dostęp do Internetu działa od wewnątrz, chroot
poprzez uruchomienie ping
pewnego niezawodnego hosta, o którym wiadomo, że normalnie reaguje na polecenia ping:
ping -c 5 www.google.com
Powinieneś zobaczyć coś takiego:
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
Jeśli wygląda to głównie tak, a liczba poprzednia % packet loss
jest mniejsza niż 100, oznacza to, że połączenie internetowe w chroot
:
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
Działa, więc możesz pominąć krok 11 .
Jeśli wygląda tak głównie, a poprzednia liczba % packet loss
to 100, połączenie wymaga rozwiązania problemu . Upewnij się, że połączenie w systemie Live CD (na przykład przez przeglądarkę internetową lub uruchamiając to samo polecenie w osobnej, nie chroot
edytowanej zakładce / oknie terminala) działa. Upewnij się, że wpisujesz polecenie poprawnie. Użyj, www.google.com
jeśli nie byłeś.
Jeśli dane wyjściowe wcale nie wyglądają tak, jak powyższe, ale zamiast tego mówi ping: unknown host www.google.com
, to sieć nie działa jeszcze w chroot
.
Skonfiguruj sieć w chroot
. Pomiń ten krok, chyba że wystąpił unknown host
błąd w kroku 10 powyżej.
Aby skonfigurować sieć, wykonaj kopię zapasową hosts
pliku uszkodzonego systemu , a następnie skopiuj na żywo system CD hosts
i resolv.conf
pliki. (Nie trzeba tworzyć kopii zapasowej wersji uszkodzonego systemu resolv.conf
, ponieważ plik ten jest automatycznie regenerowany w locie).
Otwórz nową kartę Terminal ( Ctrl+ Shift+ T) lub, jeśli wolisz, nowe okno Terminal ( Ctrl+ Shift+ Nlub po prostu Ctrl+ Alt+ T). Uruchom w nim następujące polecenia:
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
( exit
Polecenie na końcu zamyka nową kartę / okno.)
Powtórz krok 10 powyżej, aby upewnić się, że dostęp do Internetu działa teraz z poziomu chroot
. Powinno.
Zastanów się, który pakiet jądra powinien zostać zainstalowany. Zwykle tak będzie linux-image-generic
. Ale nie zawsze.
Jeśli nie masz pewności, którą zainstalować, będzie to zależeć częściowo od tego, którą wersję Ubuntu zainstalowałeś, a częściowo od innych informacji. Jeśli nie masz pewności, którą wersję Ubuntu zainstalowałeś, dowiedz się, uruchamiając to polecenie (w chroot
, a nie w osobnym oknie / zakładce Terminal):
lsb_release -r
Na Ubuntu 12.10 (kolejna wersja Ubuntu, obecnie w fazie rozwoju), zawsze tak będzie linux-image-generic
. (Zobacz to , to i to .)
W systemie Ubuntu 12.04 LTS prawdopodobne są linux-image-generic
i linux-image-generic-pae
. (W przeciwieństwie do poprzednich wersji 12.04 nie ma już oddzielnego jądra serwera i pulpitu).
Jeśli zainstalowany system Ubuntu (który naprawiasz) to wersja 64-bitowa, użyj linux-image-generic
. ( linux-image-generic-pae
dotyczy tylko systemów 32-bitowych).
Możliwe jest zainstalowanie 32-bitowego systemu Ubuntu na komputerze 32-bitowym lub 64-bitowym. Ponadto możesz użyć 32-bitowego lub 64-bitowego dysku CD na żywo do naprawy zainstalowanego 32-bitowego systemu. Jeśli więc nie wiesz, czy zainstalowany system Ubuntu jest 32-bitowy, czy 64-bitowy, sprawdź, uruchamiając to polecenie (w chroot
, nie w osobnym oknie / zakładce Terminal):
dpkg-architecture -qDEB_HOST_ARCH_BITS
Wyjście będzie albo 32
albo 64
.
(Należy pamiętać, że nieuname -m
jest to poprawny sposób na znalezienie tych informacji, ponieważ nawet gdy zostanie uruchomiony w , poinformuje Cię o architekturze działającego jądra , które jest jądrem systemu Live CD, a nie jądrem zainstalowanego (uszkodzonego) systemu).chroot
Jeśli zainstalowany system Ubuntu (który naprawiasz) jest wersją 32-bitową, najlepsze jądro do użycia będzie zależeć od ilości pamięci RAM. Polecam:
linux-image-generic
jeśli masz mniej niż 3 GB pamięci RAMlinux-image-generic-pae
jeśli masz 3 GB pamięci RAM lub więcej.(W ten sposób instalator Ubuntu wybiera, który z nich utworzone, odkąd instalator zyskał możliwość instalowania jądra PAE. Zobacz rozdzielczość do tego błędu . Jeśli chcesz dowiedzieć się, co PAE jest zobaczyć ten artykuł w Wikipedii . Jeśli chcesz dowiedz się więcej o PAE w Ubuntu, zobacz stronę wiki Ubuntu .)
Jeśli nie wiesz, ile masz pamięci RAM, uruchom to polecenie, aby dowiedzieć się:
grep MemTotal /proc/meminfo
To jest wymienione w kilobajtach . Aby przekonwertować na gigabajty , podziel przez 1 048 576 (1024 2 ).
Na Ubuntu zwalnia przed 12,04, możliwości są prawdopodobne linux-image-generic
, linux-image-generic-pae
i linux-image-server
.
linux-image-server
.To moment, na który czekałeś! Zainstaluj jądro w uszkodzonym systemie.
(Tak jak poprzednio, chyba że wyraźnie zaznaczono inaczej, te polecenia są uruchamiane w chroot
osobnym oknie / zakładce Terminala).
apt-get update
apt-get -y install linux-image-generic
Zamień na linux-image-generic
inny pakiet jądra, który zdecydowałeś się zainstalować w kroku 12 powyżej, jeśli jest inny.
Jeśli musiałeś wykonać krok 11, aby skonfigurować sieć w chroot
, przywróć stary hosts
plik. Jeśli pominąłeś krok 11, pomiń również ten krok.
Aby go przywrócić, uruchom następujące polecenie:
cp /etc/hosts.old /etc/hosts
Odmontuj systemy plików, exit
wychodząc z chroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
Zamknij system Live CD / DVD / USB, wyjmując Live CD / DVD lub dysk flash USB. Uruchom system zainstalowany na dysku twardym, który właśnie naprawiłeś. Zainstalowałeś w nim pakiet jądra (i jako część instalacji, dostarczone przez niego jądro zostanie dodane z powrotem do menu uruchamiania GRUB2). Jeśli wszystko działało poprawnie, system powinien uruchomić się bez problemów. (Myślę, że tym razem możliwe jest, że uruchomienie zajmie trochę więcej czasu niż zwykle).
OŚWIADCZENIE: Nie testowałem powyższej procedury na każdym możliwym systemie Ubuntu, więc możliwe jest, że istnieje błąd, którego nie zidentyfikowałem.
W przyszłości polecam zawsze starać się, aby dwa jądra były zainstalowane. Dobrze jest mieć dwa, na wypadek, gdyby jeden z nich przestał działać z jakiegokolwiek powodu (możesz wybrać drugi w menu uruchamiania GRUB2). Dodatkowo, jeśli zamierzasz zachować dwa jądra i przypadkowo odinstalujesz jedno z nich więcej niż chciałeś i zrestartujesz komputer, nadal masz jedno z którego chcesz uruchomić system.
/etc/resolv.conf
jest obecnie zarządzany przez resolvconf
, będzie automatycznie generowany podczas korzystania z NetworkManagera i można go bezpiecznie usunąć przy użyciu, rm /etc/resolv.conf
jak się dowiedziałeś.
Kiedy usunąłem swoje jądro, znalazłem to rozwiązanie na forach Ubuntu. Śledziłem każdy krok i system został odzyskany. Mam nadzieję, że to ci pomoże.
Chroot może działać, chroot oznacza, że po uruchomieniu systemu zmieniasz główny system plików. Na przykład zacząłeś od live CD, ale zmieniasz katalog główny „/” na miejsce, w którym jest zainstalowane twoje Ubuntu.
Powiedzmy, że twój ubuntu jest zainstalowany na / dev / sda2, a następnie możesz wypróbować następujące polecenia:
Kod:
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
teraz jesteś rootem "/" jest na / dev / sda2, spróbuj zainstalować jądro
apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub
Musiałem tu trochę zgadnąć, ponieważ nigdy wcześniej nie musiałem tego robić, ale o tym powinno być. Nie wiem, czy pojawi się ostrzeżenie o błędzie fstab (np. Nie można znaleźć roota).
Teraz musisz wyczyścić niektóre rzeczy i odmontować zamontowane partycje: Kod:
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
Możesz zrestartować komputer, aby sprawdzić, czy zadziałał.
Adres URL wątku: http://art.ubuntuforums.org/showthread.php?t=1688928
/etc/hosts
i usuwać /sbin/initctl
? Jest tam z jakiegoś powodu.
/sbin/initctl
lub dbus-uuidgen
lub dpkg-divert
. Być może trzeba będzie wymienić, /etc/hosts
aby połączyć się z Internetem, ale nie zwykle, a jeśli tak, należy odłożyć oryginał. W zainstalowanym systemie (zamiast na żywo CD, który uruchamia się, a następnie rozpakowuje system plików squashfs), nie musisz uruchamiać update-initramfs
ani nawet update-grub
po instalacji jądra.
linux-image-2.6.32-26-generic
nie będzie właściwym jądrem dla większości ludzi do zainstalowania.
Po usunąłem stare jądra z Trusty14.04 Wczoraj (FTR: ja nie nie usunąć dwa ostatnie z nich!) Mój system nie będzie już uruchomić. GRUB pokazał
Error: File not found
Error: You need to load the kernel first
Nie mam pojęcia dlaczego.
Następnie wykonałem doskonałe instrukcje Eliaha Kagana, aby zainstalować linux-image-generic
z płyty CD na żywo. Zainstalował 150 MB nowego jądra, ale niestety to nie rozwiązało problemu.
Na szczęście znalazłem tę stronę . Boot-Repair
Narzędzie dostał to dobrze, mój system jest uruchomiony ponownie.
Chciałem tylko dodać moje doświadczenie, które przeszedłem dzisiaj podczas aktualizacji do Willy. Trochę posprzątałem i znalazłem się tylko z memtestem. Google sprawiło, że zrozumiałem, że usunąłem jądra. Jednym z ograniczeń było wolne połączenie sieciowe, więc pobieranie pełnego ISO nie było opcją. Użyłem więc Ubuntu Minimal CD (tylko 40 MB) i uruchomiłem na nim. Po wykryciu opcji sprzętowej (która pomogła mi połączyć się z siecią bezprzewodową) przeszedłem do opcji powłoki. Postępowałem zgodnie z instrukcjami @Lekensteyn i udało mi się. kilka rzeczy: musisz skopiować resolv.conf
przed przejściem do chroot, w przeciwnym razie twój DNS zostanie wkręcony, a ponieważ zalogowany użytkownik nie ma roota w sudo.
Wiem, że jest stary, ale pomyślałem, że dodanie tej odpowiedzi doda wartość tym, którzy napotkają problem.