Instalowanie nowego systemu z wykorzystaniem partycjonowanego dysku GPT dedykowanego do pojedynczej partycji, sformatowanego ext4 , extlinux (wersja 4.05) jako bootloader, Ubuntu Core wersja 13.10 amd64 jako rootfs oraz Ubuntu linux-image-3.11.0-18-generic jako jądro, i extlinux-update, aby wygenerować konfigurację bootloadera.
Rezultatem po ponownym uruchomieniu (nadal na maszynie wirtualnej opartej na KVM) jest monit (initramfs) i następujące komunikaty:
mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.
BusyBox to v1.20.2.
Regresja:
- system plików został sprawdzony za pomocą
fsck.ext4
Sprawdź, czy istnieje root
(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory
Argument root boot
(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic
Sprawdź załadowane moduły
(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000
/ zawartość folderu rozruchowego
$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root 163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root 4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic
Jak sprawić, aby system uruchomił się zgodnie z oczekiwanym domyślnym monitem bash?
Odpowiedzi:
Zmodyfikuj parametr rozruchowy jądra, ustawiając
root=/dev/sdaX
opcję.sdaX
będzie twój/
lubroot
partycja. Przy następnym uruchomieniu zobaczysz, żeinitramfs
próbujesz zamontować partycję, zanim spróbujesz uzyskać dostęp/etc/fstab
do systemów plików i zamontować je.Zobacz pytanie „ Czy initramfs używa / etc / fstab? ”, Aby uzyskać więcej szczegółów.
źródło
root=/dev/sdaX
poprawia sytuację, zamiast tego(initramfs)
pojawia siębash
monit o zalogowanie.root=/dev/sdaX
do rozruchu jądra, muszę zaktualizować/mnt/etc/default/extlinux
i zmienićEXTLINUX_ROOT=""
sugerowaneEXTLINUX_ROOT="/dev/sdaX"
i uruchomićextlinux-update
ponownie.Musisz zrozumieć
initramfs
, że jest to system plików. Od jądra 2.6 jest to w zasadzie jedyny narzucony przez jądro system plików (pomijając VFS, który prawdopodobnie jest także systemem plików) na twoim komputerze. Twójinitramfs image
jest obrazem dysku.W twoim
initramfs image
pliku znajdą się wszystkie pliki, które według twojej dystrybucji były na tyle istotne, aby wymagać ich przed znalezieniem dysku głównego. Zwykle jest to Busybox i wszystkie moduły jądra, których potrzebujesz, aby znaleźć i zamontować urządzenie root. To nie działa dla ciebie.Nie ma tu jednak żadnej tajemnicy, zważywszy na wszystko. Jeśli znajdziesz sposób na obejrzenie terminala, możesz nawigować po
initramfs.
Ale najpierw musisz go odszyfrować.Przede wszystkim i jeszcze raz - to tylko
/.
rootowanie Linuksa robi rzeczy typu root. W rzeczywistości, jeśli znajduje się on w innym pliku niż jądro, w rzeczywistości jest to już drugie urządzenie root. Każdy Linux kernel zawiera w zasadzie opróżnić/
wszystkie swoje własne którym po raz pierwszy wierzchowce przed wyciągnięciem w swojejinitramfs.
Co więcej,
initramfs
to prawdziwy root. To tutaj jądro Linuksa inicjuje przestrzeń użytkownika, wykonując,init
a następnie zrzekając się wszelkiej odpowiedzialności za ewentualne problemy, które mogą wystąpić później. Twojainit
wydaje się być Busybox, podobnie jak wiele, co oznacza, że kontrolowanie jej działań powinno być tak proste, jak edytowanie towarzyszących jej skryptów powłoki.To dlaczego błąd polegający na nie znalezieniu
init?
Niemal na pewno odnosi się to do programu o nazwie, doinit
którego wykonaniainit
został poinstruowany twój skrypt.Najbardziej uderzające jest dla mnie to, że pseudo systemy plików jądra -
dev sys proc
- nie montują. Jest to albo bardzo niepokojące, albo bardzo dobra wskazówka. Wspominasz KVM, który prowadzi mnie do kwestionowania możliwości jądra, ale zanim pójdziemy tą ciemną i koleinową drogą, czy możemy najpierw spróbować czegoś innego?Uderza mnie, że komunikat o błędzie jest wielokrotnie:
W przeciwnym razie musisz odbudować swój
initramfs
obraz. Uruchom w tym celu dysk na żywo i uruchom dowolne narzędzie, które udostępnia twoja dystrybucja, aby osiągnąć ten cel. Aha, i upewnij się, że ten dysk na żywo jest załadowany w trybie EFI .Oto jedyna naprawdę niezwykła rzecz
initramfs - switchroot.
Jądro Linux zapewnia bardzo specjalne wywołanie systemowe przeznaczone dla wczesnej przestrzeni użytkownika i obsługi przenoszenia z
initramfs
urządzenia root. Działa, najpierw instalując dysk główny w punkcie montowania,initramfs
a następnie przestawiając w nim główny system plików. Zakładam, że twójinitramfs's
docelowy punkt montowania jestroot
oparty na tym, jak narzeka na ten temat. Dlaczego nie upewnić się, że tam jest?W celu dalszego dochodzenia będziesz musiał trochę zirytować. Dostosuj program ładujący, aby przejść ...
... jako parametr jądra.
źródło
efibootmgr
po otrzymaniu monitu na maszynie wirtualnej.Miałem ten sam problem. To, co powiedział Alex, jest poprawne. Najpierw dostosowałem mój plik fstab, ale to nie pomogło. Więc sprawdziłem mój grub. Jeśli masz możliwość dostępu do menu grub.
To rozwiązało mój problem. Po ponownym uruchomieniu mój system Linux potrzebował więcej czasu, aby rozpocząć sprawdzanie dysku. Ale teraz to działa ponownie.
Mam nadzieję, że mogę ci pomóc.
pozdrowienia
źródło