[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#22588: root: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
From: |
Mark H Weaver |
Subject: |
bug#22588: root: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY |
Date: |
Mon, 08 Feb 2016 08:49:24 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
address@hidden (Ludovic Courtès) writes:
> Mark H Weaver <address@hidden> skribis:
>
>> I've been bitten by this once before, and a user on #guix did as well.
>> When there are problems in the root filesystem that fsck doesn't want to
>> fix automatically, the user is dumped into a guile prompt where PATH is
>> not set, and it's very inconvenient to run fsck manually.
>
> AFAICS, ‘PATH’ is set in ‘base-initrd’ in (gnu system linux-initrd), and
> ‘check-file-system’ in (gnu build file-systems) indeed expects it to be
> set.
Ah, good!
>> This is what I just suggested that the user type, with apologies:
>>
>> (use-modules (ice-9 ftw) (srfi srfi-26))
>> (define dirs (scandir "/gnu/store" (cut string-suffix? "e2fsprogs-1.42.13"
>> <>)))
>> (define e2fsck (string-append "/gnu/store/" (car dirs) "/sbin/e2fsck"))
>> (system* e2fsck "/dev/XXX")
>>
>> Is there a better way?
>
> I think one can run:
>
> (system* "fsck.ext4" "/foo/bar")
Okay, this is much better than I expected. I asked the user to try
running "e2fsck", and when it wasn't found in PATH, I incorrectly
assumed that PATH wasn't set.
> What about changing the message to explicitly mention this command?
Sure, that would be helpful.
>> Speaking from personal experience, it's very painful to do anything
>> non-trivial in that REPL. Even just adding readline would help a lot.
>
> The statically-linked Guile in the initrd lacks Readline support. We
> could maybe work around that, but the initrd would become much larger.
Okay, nevermind then.
>> We should probably also handle errors from fsck specially.
>
> Currently there’s no Bash in the initrd. Should we add one? Our
> ‘bash-static’ package takes 1.4 MiB (I don’t think we can make it
> smaller.)
I'm not sure it would help much without also adding 'coreutils'.
Adding busybox might be worth considering, though.
> Another idea that comes to mind: what about providing a “shell” language
> in Guile? It would automatically tokenize what the user types in and
> convert it to (system* …), plus it would have a few built-in commands
> like ‘cd’ and ‘ls’.
I like the idea of having something like this in Guile, but I'm not sure
we should rush to implement a half-baked solution. When we have
something decent along the lines of Scsh, then definitely!
IMO, anyway, but I don't feel strongly about it.
More thoughts?
Thanks!
Mark
bug#22588: root: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY, Ludovic Courtès, 2016/02/08