Re: [PATCH 1/2] init: ensure that /dev/console is (nearly) always available in initramfs
Askar Safin <[email protected]> Tue, 24 Feb 2026 02:04:19 +0300
| Newsgroups | org.kernel.vger.initramfs,dev.linux.lists.patches,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kbuild,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAPnZJGDDonspVK1WxDac2omkLJVX=_1Tybn4ne+sf3KyaAuofA@mail.gmail.com> |
Rob, I THINK I KNOW HOW TO SOLVE YOUR PROBLEM! (See below.) On Mon, Feb 23, 2026 at 4:27=E2=80=AFAM Rob Landley <[email protected]> wrote= : > > On 2/19/26 17:59, David Disseldorp wrote: > >> This problem can be solved by using gen_init_cpio. I said this, not David. > It used to work, then they broke it. (See below.) So you have a directory with rootfs, and you want to add /dev/console to it? Do I understand your problem correctly? This is how you can solve it. Option 1 (recommended). Let's assume you have your rootfs in a directory /tmp/rootfs . Then create /tmp/cplist with: dir /dev 0755 0 0 nod /dev/console 0600 0 0 c 5 1 And add this to your config: CONFIG_INITRAMFS_SOURCE=3D"/tmp/rootfs /tmp/cplist" This will create builtin initramfs with contents of /tmp/rootfs AND nodes from /tmp/cplist (i. e. /dev/console). This will work, I just checked it. No need to build the kernel twice. Does this solve your problem? Option 2. Alternatively (assuming you already built gen_init_cpio) you can create cpio with /dev/console using gen_init_cpio and then concatenate it with cpio archive with your rootfs. Unfortunately, this may require building the kernel twice, as I explained in my previous letter in this thread. But this option is still doable. Option 3. Yet another way: run usr/gen_initramfs.sh /tmp/rootfs /tmp/cplist > some-output.cpio (again, here /tmp/rootfs is a directory with your rootfs and /tmp/cplist is a list of nodes.) Unfortunately, this requires gen_init_cpio to be present, so, again, similarly to option 2, this may require building the kernel twice. But, again, this is doable. In fact, gen_initramfs.sh accepts same options as CONFIG_INITRAMFS_SOURCE, this is explained in https://elixir.bootlin.com/linux/v6.19/source/Documentation/driver-api/earl= y-userspace/early_userspace_support.rst#L70 . Conclusion. As I said, option 1 is the best in my opinion. It does not require building the kernel twice, and, as well as I understand, fully solves your problem. If I miss something, please, tell me this. I really want to help you, Rob. I sent this patch, because I want to help you. --=20 Askar Safin