Ubuntu i “No init found. Try passing init= bootarg”

Nieprawidłowe wyłączanie komputera może być dość dramatyczne w skutkach. Część z was wie, że jestem właścicielem małego serwera (który tak naprawdę jest zwykłym komputerem ;) ), na którym wykonuję testy aplikacji oraz stawiam wersje developerskie (alfy, bety, itd). Oczywiście robię mu regularne backupy, jednak sami dobrze wiecie, że "pad" jakiegokolwiek komputera to po prostu masa pracy z postawieniem go na nowo. W przypadku serwerka dochodzi konfiguracja na nowo, itd.

Wczoraj w skutek nagłego spadku zasilania - zresetował mi się wspomniany wyżej serwer i niestety... już nie wstał. Dostawałem za to piękną wiadomość:

mount: mounting /dev/disk/uuid/***************************** on /root
failed: Invalid argument
mount: mounting /sys on /root/sys failed: 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
Target file system doesn't have /sbin/init
No init found. Try passing init= bootarg

Busybox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu7) built-in shell (ash)
Enter 'help' for a list of built-in commands
(initramfs) _

Co się stało? Po prostu "padła" jedna z partycji. Naprawa tego typu problemów nie jest trudna (o ile wysypała się partycja a nie np. padł dysk). Musimy mieć bootowalną wersję Linuksa (na pendrivie lub na płycie CD). Odpalamy takie Live CD a następnie przechodzimy do terminala. Wpisujemy komendę:

sudo fdisk -l 

aby dowiedzieć się jakie partycje mamy na dysku i mamy (przykładowo):

Dysk /dev/sda: 80.0 GB, bajtów: 80026361856
głowic: 255, sektorów/ścieżkę: 63, cylindrów: 9729
Jednostka = cylindrów, czyli 16065 * 512 = 8225280 bajtów
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Identyfikator dysku: 0x85f285f2

Urządzenie Rozruch   Początek      Koniec   Bloków   ID  System
/dev/sda1               1         125     1004031   82  Linux swap
/dev/sda2   *         126        1993    14999552   83  Linux
/dev/sda3            1993        3860    14999552   83  Linux
/dev/sda4            3860        9730    47145985    5  Rozszerzona
/dev/sda5            3860        5728    14998528   83  Linux
/dev/sda6            5728        9730    32146432   83  Linux

Następnie uruchamiamy program fsck na każdej z partycji (tak dla pewności), wykonując następujące polecenie:

# Zmieniamy kolejno na #sda1, sda2, sda3, itd
sudo fsck /dev/sda2

Po tym zabiegu restartujemy serwer i cieszymy się działającym systemem. Następnie zamawiamy UPSa aby taka sytuacja więcej się nie zdarzyła.

Dla pewności, możemy wymusić autouruchomienie fsck przy starcie systemu, wpisując:

sudo touch /forcefsck

Utworzoenie pliku forcefsck w głównym katalogu - spowoduje, że system wstając wykryje go i wykona jeszcze raz testy na partycjach. Po tych operacjach wszystko powinno wrócić do normy.

Categories: Hardware, Hosting, Security

3 Comments

  1. Heh :) Czyli zgodnie z powiedzeniem “Informatycy dzielą ludzi na tych, którzy robią backupy i tych, którzy będą je robić…” można powiedzieć:
    “Informatycy dzielą ludzi na tych, którzy mają UPSy i tych, którzy będą je mieć…” :P

  2. A w jaki sposób odpalić w tym wypadku Live CD z usb?
    Zrobiłem bootowaną wersję, wykrywa go, ale nie startuje :(
    Można jakoś wymusić start z tego usb?

  3. A w jaki sposób uruchomić w tej sytuacji laptopa z usb?
    Zrobiłem bootowaną wersję (usb-installerem), wkładam do gniazda, linuks go wykrywa, ale nie startuje i nic się nie zmienia. Wciąż nie mogę wpisać sudo fdisk -1, bo jest powiadomienie
    /bin/sh: sudo: not found.
    Zatem pytanie jak odpalić to z usb? Da się jakąś komendą wymusić start?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Copyright © 2024 Closer to Code

Theme by Anders NorenUp ↑