Debian fórum

Dotazy => Správa a instalace softwaru => Téma založeno: alikon kdy 29. 11. 2016, 18:35:16

Název: odinstalovaný kernel
Přispěvatel: alikon kdy 29. 11. 2016, 18:35:16
Ahoj.

Asi si o mě budete myslet, že jsem ***, ale podařilo se mi odinstalovat kernel linuxu. Chtěl jsem si vyčistit Debian Stretch od starých verzí kernelu. Viděl jsem, že mám nainstalované verze 4.3.0, 4.4.0, 4.7.0 a 4.8.0. Tak jsem dal odinstalovat balíky linux-image a linux-headers ve verzích 4.3.0 a 4.4.0. Dvě poslední verze přeci stačí, že... Po restaru PC mě čekalo velké překvapení, že GRUB nevidí linux. Při pátrání, co se stalo, jsem přišel na to, že jsem ve skutečnosti jel na verzi 4.3.0 a od verze 4.4.0 to jsou snad jen nějaké poloviční neúplné kernely. Zkrátka z /boot/ mi zmizely soubory config-4.3.0, initrd.img System.map a vmlinuz (vše 4.3.0). Pokoušel jsem se ze 2 měsíce staré zálohy (spakovaný kompletní systému do tar archivu) obnovit /boot a /lib/modules a /usr/share/bug/linux-image. Bohužel to nepomohlo.

Prosím tedy o radu - lze nějak doinstalovat či obnovit ze zálohy komplet kernel, nebo mám smůlu a musím kompletně přeinstalovat Debian?

Předem díky moc všem za rady.
Název: Re:odinstalovaný kernel
Přispěvatel: Petr Krčmář kdy 29. 11. 2016, 20:48:25
Nejjednodušší bude spustit libovolné live distro, připojit systémový disk a chrootnout se do něj. Pak se octneš ve svém Debianu a můžeš zachraňovat. Prostě nainstaluješ chybějící balíčky a rebootuješ naostro.
Název: Re:odinstalovaný kernel
Přispěvatel: alikon kdy 29. 11. 2016, 20:59:01
Zkoušel jsem vyhledat odinstalované balíky (linux-headers-4.3.0-1-all-amd64, linux-headers-4.3.0-1-amd64, linux-kbuild-4.3, linux-image-4.3.0-1-amd64, linux-headers-4.3.0-1-common - dle výpisu logu) na packages.debian.org. Bohužel verzi 4.3.0 už nemohu nikde najít. Tak jsem postahoval, předpokládám, novější a funkčí verzi 4.8.0 - a to balíky: linux-doc-4.8_4.8.7-1_all, linux-headers-4.8.0-1-all-amd64_4.8.7-1_amd64, linux-headers-4.8.0-1-amd64_4.8.7-1_amd64, linux-headers-4.8.0-1-common_4.8.7-1_amd64, linux-headers-4.8.0-1-common-rt_4.8.7-1_amd64, linux-headers-4.8.0-1-rt-amd64_4.8.7-1_amd64, linux-image-4.8.0-1-amd64_4.8.7-1_amd64 a linux-kbuild-4.8_4.8.7-1_amd64.
Nastartoval jsem live distro. Vytvořil složku /mnt/debian a mountnul jsem do složky systém.
Pak jsem přes příkaz "sudo chroot /mnt/debian" vlezl do systému.
Stáhnout balíky z netu bohužel nešlo (nefunkční internet), tak jsem zkopíroval stažené balíky a přes dpkg -i nainstaloval. Během instalace to psalo chyby, že nejsou připojeny /proc /dev (a myslím, že ještě něco).
V /boot/ se po instalaci vytvořily soubory config, initrd.img, System.map a vmlinuz.
Na závěr jsem ještě přes "sudo grub-install --root-directory=/mnt/debian /dev/sda" zkusil znovu nainstalovat grub.
A po resetu grub stále vidí pouze windows na druhém disku. Když v grubu zadám "ls (hd0,1)/", tak soubory na systémovém disku bez problému vidím - takže grub disk přečte.

Otázka co tedy dělám špatně? :-(
Název: Re:odinstalovaný kernel
Přispěvatel: Petr Krčmář kdy 29. 11. 2016, 23:16:53
Úspěšný chroot vyžaduje ještě minimálně připojení proc, sysfs a bind devu dovnitř chrootu. Je také dobré si pohlídat funkční připojení, aby se vyřešily závislosti.

Mimochodem: grub je velmi dobře udělaný zavaděč a má vlastní řádku, ve které je možné ručně zvolit jádro a initrd z libovolného disku a nabootovat. Takže pokud tam je skutečně funkční jádro a je problém jen v konfiguraci grubu, je možné to zkusit nahodit takto ručně a pak opravovat v plně běžícím systému.
Název: Re:odinstalovaný kernel
Přispěvatel: alikon kdy 01. 12. 2016, 15:30:27
Díky moc za směřování při postupu opravy odinstalovaného kernelu. Nakonec stačilo do chrootu bindnout dev, proc a sys. Pak šlo bez errorů nainstalovat kernel. Na závěr bylo ještě potřeba přeinstalovat grub ze zprovozněného systému, protože hlásil chybovou hlášku "error: no symbol table".

Jen jsem nepřišel na to, jak v chrootu zprovoznit internet? Teď to sice už nepotřebuji, ale kdybych to potřeboval někdy v budoucnu...