Summary: | sys-apps/makedev-3.23.1-r2: fails to make device nodes if uucp group is absent | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Robin Johnson <robbat2> |
Component: | Current packages | Assignee: | Gentoo's Team for Core System packages <base-system> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
See Also: | https://bugs.gentoo.org/show_bug.cgi?id=909664 | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
Robin Johnson
2023-07-04 22:43:00 UTC
Both OpenRC and systemd mount devtmpfs very early in the boot process. sys-apps/makedev really should not be used on any modern Gentoo system. I see that sys-apps/makedev gets pulled into stage1 builds via default/linux/packages.build. Its pkg_postinst creates several devices nodes when USE=build. I think we should either eliminate sys-apps/makedev in stage1 by moving the logic to baselayout, or update makedev's pkg_postinst to create a more minimal set of device nodes. The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c0d826349c6a1bd6f7e0d001196a43325a02ac85 commit c0d826349c6a1bd6f7e0d001196a43325a02ac85 Author: Mike Gilbert <floppym@gentoo.org> AuthorDate: 2023-07-05 00:29:34 +0000 Commit: Mike Gilbert <floppym@gentoo.org> CommitDate: 2023-07-05 00:29:34 +0000 sys-apps/makedev: depend on groups used by MAKEDEV Closes: https://bugs.gentoo.org/909661 Signed-off-by: Mike Gilbert <floppym@gentoo.org> .../{makedev-3.23.1-r2.ebuild => makedev-3.23.1-r3.ebuild} | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) I found the uucp bug because I tried to use MAKEDEV to fix another issue that has blocked some infra kernel upgrades for a few months. > Both OpenRC and systemd mount devtmpfs very early in the boot process It's not early enough, something before the sysvinit message for "INIT: version 3.07 booting" message needs /dev populated. I've got a couple of infra boxes that are otherwise up to date, but the underlying /dev was empty, and they failed to boot with a newer initramfs. This was some change in the initramfs: something used by dracut caused it to hang when it should have started INIT. I think it's somehow the busybox switch_root vs util-linux switch_root. Here's a pair of logs from bobolink.gentoo.org, same kernel, 5.15.48, but the initramfs generated at some point the past, vs current. https://gist.github.com/robbat2/c3217138c0ee76c636769765ab3e11e4 Both of them claim to be dracut-55, but the broken one ALSO has VERSION_ID="2.13". I've uploaded both initramfs at https://dev.gentoo.org/~robbat2/bug-909661/ but very little in dracut itself changed between them (the modules are a bit different and the underlying host OS was updated a lot) Working initramfs was generated on 2022/07/04 Broken initramfs re-generated many times - problem persists on newer kernels as well. Snippet of the working initramfs: bobolink.good.txt-[ 1.673346] dracut: /: clean, 399712/2621440 files, 6958134/10485760 blocks bobolink.good.txt-[ 1.677068] dracut: Mounting /dev/mapper/bobolink-root with -o noatime,ro bobolink.good.txt-[ 1.683389] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none. bobolink.good.txt:[ 1.700252] dracut: Mounted root filesystem /dev/mapper/bobolink-root bobolink.good.txt-Jul 05 03:58:08 | DM multipath kernel driver not loaded bobolink.good.txt-[ 1.753319] dracut: Switching root bobolink.good.txt-INIT: version 3.07 booting (and continues from there) Snippet of the failing initramfs: bobolink.fail.txt-[ 3.577210] dracut: /: clean, 399712/2621440 files, 6958134/10485760 blocks bobolink.fail.txt-[ 3.580311] dracut: Mounting /dev/mapper/bobolink-root with -o noatime,ro bobolink.fail.txt-[ 3.587826] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none. bobolink.fail.txt:[ 3.606894] dracut: Mounted root filesystem /dev/mapper/bobolink-root bobolink.fail.txt-[ 3.744550] dracut: Switching root (and no further output) (In reply to Robin Johnson from comment #4) > Both of them claim to be dracut-55, but the broken one ALSO has > VERSION_ID="2.13". It looks like it might be using baselayout versioning? (In reply to Robin Johnson from comment #4) > I think it's somehow the busybox switch_root vs util-linux switch_root. That seems likely. The util-linux man page says this: switch_root moves already mounted /proc, /dev, /sys and /run to newroot and makes newroot the new root filesystem and starts init process. The busybox man page does not mention moving /dev. I think we really only need /dev/console and /dev/null on rootfs to cover very early boot with sysvinit and openrc. Let's continue that discussion on bug 909664. |