Jak opravit Linux se špatným /etc/fstab

Jak opravit Linux se špatným /etc/fstab
« kdy: 25. 03. 2020, 08:27:35 »
Je nějaká možnost, jak opravit linux? V bootovacím procesu se ukáže žlutě DEPENDENCY  něco jako failed to reach target filesystems.mount (po úpravě filesystému a přidání do /etc/fstab, nejde o existující oddíl, ale přidal jsem tam nový další)

Tlačítko Enter nefunguje (Press enter to enter recovery console)
Unable to login. Root account is locked. For help, see sulogin(8).

Je nějaká možnost, jak se "přenést" do živé konzole bootu a něco tam poštrachat?

Běžně se dá použít druhý bootovací záznam v boot manageru, ale to zde nejde, zde není.
« Poslední změna: 25. 03. 2020, 10:39:11 od Petr Krčmář »


martyd420

  • ***
  • 193
  • K U B U N T U
    • Zobrazit profil
    • E-mail
Re:Jak opravit linux
« Odpověď #1 kdy: 25. 03. 2020, 08:45:30 »
Nějaký live distro z flashky a opravit ten fstab?
T_PAAMAYIM_NEKUDOTAYIM  |  Nemám rád IPv6 influencery :P

Ink

  • *****
  • 654
    • Zobrazit profil
    • E-mail
Re:Jak opravit linux
« Odpověď #2 kdy: 25. 03. 2020, 08:54:20 »
Ano, nabootuj zive distro, zedituj /etc/fstab (minimalne vyhod automaticke mountovani dotycneho svazku) a melo by to byt OK. Zdanlive banalni problem, ale potrapi.

Re:Jak opravit linux
« Odpověď #3 kdy: 25. 03. 2020, 09:07:52 »
mimochodem, neexistuje nějaký parametr pro cmdline který by řekl něco "ignorovat fstab" nebo zakázal mountnout konkrétní jednotku z fstab?


Kód: [Vybrat]
console=tty1 root=PARTUUID=ff2b7cf1-02 rootfstype=ext4 elevator=deadline rootwait   

Momentálně jsem v nouzovém stavu, OS X nepodporuje ext4 (kde je fstab) a M$ windows nedokáže jednotku (ta nová partition, kterou jsem vytvořil) ani "vybrat" (je tam nějaká kolize identifikátorů,  ), takže asi snad se budu muset připojit přers otg redukci do smartphonu , kde se s tím snad poradí (+ hubu na připojení klávesnice)

Stalo se to tak, že jsem vytvořil nový oddíl, ale nenaformátoval. Prostě nešel naformátovat (asi se nějak nerefreshly údaje v kernelu), ale zapomněl jsem zakomentovat záznam v fstab.

Re:Jak opravit linux
« Odpověď #4 kdy: 25. 03. 2020, 09:19:37 »
Obvykle by to mělo jít napravit i bez live distra, pouze kernelu poslat parametry:

Kód: [Vybrat]
root=/dev/xxx init=/bin/sh
následně v shellu přemountovat filesystem na read-write a pak už tradá editovat

Kód: [Vybrat]
mount / -o remount,rw
a toto funguje, dokud je v pořádku initrd. Pokud je initrd nakopnutý, obvykle se to dá řešit natažením starší verze (co jsem se setkal, tak distribuce uchovávaly starší jádra a jejich initrd).


Re:Jak opravit linux
« Odpověď #5 kdy: 25. 03. 2020, 10:00:04 »
Díky, tohle mě zrovna teď nenapadlo. ačkoli to mám připravené , že mám  v souboru  /boot/cmdline.txt-init právě připsáno init=/bin/bash, aby stačilo jen přejmenovat soubor)

Jen by mě zajímalo, zda opravdu systemd (nebo obecně bootovací proces linuxu) nemá nějaký mechanismus (například klávesovou zkratku), aby se šlo dostat do boot procesu přímo na tom počítači, když ho spustím, abych nemusel vůbec "přesedlávat" na jiný počítač a  ručně na jiném PC editovat grub.cfg, cmdline.txt, atd. nebo rovnou opravovat?

co to tedy znamenalo, že mi to psalo že mě to chtělo dát do recovery console  (opakuji, nejde o jiný bootovací record, je tam jen jeden). Ale nějak to selhalo na přihlášení jako root, jestli to chápu dobře.

Re:Jak opravit linux
« Odpověď #6 kdy: 25. 03. 2020, 10:01:49 »
Jen by mě zajímalo, zda opravdu systemd (nebo obecně bootovací proces linuxu) nemá nějaký mechanismus (například klávesovou zkratku), aby se šlo dostat do boot procesu přímo na tom počítači, když ho spustím, abych nemusel vůbec "přesedlávat" na jiný počítač a  ručně na jiném PC editovat grub.cfg, cmdline.txt, atd. nebo rovnou opravovat?

Grub zeditujete přímo v jeho menu, pomocí klávesy `e` a po zeditování jen spustíte pomocí C-x.
Druhý počítač ani live distro není potřeba.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Jak opravit linux
« Odpověď #7 kdy: 25. 03. 2020, 13:24:35 »
Jen by mě zajímalo, zda opravdu systemd (nebo obecně bootovací proces linuxu) nemá nějaký mechanismus (například klávesovou zkratku), aby se šlo dostat do boot procesu přímo na tom počítači
Nemá a taky mě to strašně krká -- zejména pokud se čeká na službu s dlouhým timeoutem (síť má defaultně 5 minut!) nebo dokonce s no limit.

Podle cmdline.txt předpokládám, že jde o Raspberry Pi. To bohužel řeší nějaký jednoduchý bootloader, který toto neumí. Plnotučné bootloadery (na PC třeba GRUB, na jiných embedded deskách uboot) to umí.

Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #8 kdy: 25. 03. 2020, 13:41:52 »
Je to Raspberry π,ale některé provokatéry to popuzují a mají pak potřebu kvůli tomu vlákno zaštěkat.
Plnotučné bootloadery (na PC třeba GRUB, na jiných embedded deskách uboot) to umí.
To sice jo, ale já myslel něco, co nezávisí na bootloaderu (separátní recovery záznam v grubu nebo prostě možnost ručně zadat boot parametry ), prostě něco, čím půjde vstoupit do procesu bootování  v této fázi.


ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #9 kdy: 25. 03. 2020, 14:11:48 »
Live distra netřeba. Stačí zadat kernelu parametr init=/bin/bash, boot skočí do shellu. Pak remountnout /

Kód: [Vybrat]
mount -o remount,rw /
a dá se upravovat. Pak sync, remountnount ro a restartnout.

RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #10 kdy: 25. 03. 2020, 16:37:36 »
Taky je resenim nepouzivat distribuce se systemd :-)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #11 kdy: 26. 03. 2020, 01:44:02 »
1. u emergency hlaska "Root account is locked" znamena ze je root ucet zamceny, coz je vychozi stav, pokud uzivateli root ty nenastavis heslo (v regulernim Debian instalatoru zalezi zda zvolis heslo pro root, pak je odemcen, nebo jen heslo pro uzivatel, pak je uzivatel pridan do sudo skupiny ale root ucet je zamcen
BTW: v *buntu i kdyz nechas roota deaktivovaneho se do emergency normalne dostanes...
=> tedy pro priste, v Raspbianu odemknes roota nastavenim mu hesla: sudo passwd root

2. polozky v fstab lze jadernym parametrem docasne zakazat, syntaxt parametru je: systemd.mask=adresar-kam-se-mel-pripojit.mount
tedy pokud si do fstab pridal pripojeni neceho do /mnt/neco, tak: systemd.mask=mnt-neco.mount

Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #12 kdy: 26. 03. 2020, 09:19:10 »
Taky je resenim nepouzivat distribuce se systemd :-)
A komu tím prospějete? Má snad ta jiná distribuce možnost vstoupit do boot procesu, který již začal s určitými boot parametry? Ty parametre totiž nejdou změnit (když nepočítám úpravu v jiném PC), jelikož zde není GRUB.

Citace: k3dAR link=topic=22735.msg327287#msg327287 date=
systemd.mask=adresar-kam-se-mel-pripojit.mount
Tohle je dost dobrá věc, a ukazuje to sílu systemd. Ale stejně by mi to nepomohlo , protože ,bych tak jako tak musel v jiném PC změnit obsah souboru cmdline.txt (akorát místo init=bash napsat toto).

 Já jsem si říkal, jestli neexistuje nějaký parametr bootu, který by dokázal mount point nějak zakázat, když jsem viděl v tom výpisu failed to mount filesystemsněco.mount, jak jsem psal v první příspěvku.
« Poslední změna: 26. 03. 2020, 09:21:32 od Pivotal »

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #13 kdy: 26. 03. 2020, 11:33:48 »
Taky je resenim nepouzivat distribuce se systemd :-)
A komu tím prospějete?
Prospějeme tím tak, že ostatní init systémy kompletně nezablokují boot když se nepodaří namountovat nějakou položku z fstab. Buď pokračují dál, nebo nabídnou spuštění shellu.

Jinak tohle chování se dá v systemd emulovat parametry nofail,x-systemd.device-timeout=8 ve fstabu. Z nějakého důvodu není default, ale prý je fstab stejně zastaralý a máme používat mountovací unity…

Re:Jak opravit Linux se špatným /etc/fstab
« Odpověď #14 kdy: 26. 03. 2020, 15:02:50 »
Prospějeme tím tak, že ostatní init systémy kompletně nezablokují boot když se nepodaří namountovat nějakou položku z fstab. Buď pokračují dál, nebo nabídnou spuštění shellu.

To je asi otázka názoru, co je správné chování, hlavně názoru na bezpečnost. V mnoha situacích chcete mít od boot loaderu až do spuštění systému proces nenarušitelný i za cenu horších nouzových operací. Je na rozhodnutí uživatele, jestli má grub nebo primitivnější loader, je na rozhodnutí uživatele. Je na rozhodnutí uživatele, jestli systemd nastaví, aby ignoroval chyby a pokračoval. Je i na uživateli, jestli root má heslo (a tedy lze jej využít pro emergency), nebo jestli je zablokovaný. Z mého pohledu "bezpečnost ve výchozím stavu" je správný postup.


Jinak tohle chování se dá v systemd emulovat parametry nofail,x-systemd.device-timeout=8 ve fstabu. Z nějakého důvodu není default, ale prý je fstab stejně zastaralý a máme používat mountovací unity…

Mountovací unity dávají smysl, ostatní pak vědí, jestli na nich mohou stavět závislosti.

Základní OS klidně může být ve fstabu, ale když to selže, měl by se bootovací proces zastavit. To se tazateli stalo. Dále má bootloader, kde nic nezmění při provádění; nic mu nebrání (asi) vyměnit. A na konec, jestli správně chápu, má zablokovaného roota - což musel udělat taky vědomě.