Hi, On Tue, 25 May 2021 22:15:21 +0800 menglong8.dong@xxxxxxxxx wrote: > From: Menglong Dong <dong.menglong@xxxxxxxxxx> > > As Luis Chamberlain suggested, I split the patch: > [init/initramfs.c: make initramfs support pivot_root] > (https://lore.kernel.org/linux-fsdevel/20210520154244.20209-1-dong.menglong@xxxxxxxxxx/) > into three. > > The goal of the series patches is to make pivot_root() support initramfs. > > In the first patch, I introduce the function ramdisk_exec_exist(), which > is used to check the exist of 'ramdisk_execute_command' in LOOKUP_DOWN > lookup mode. > > In the second patch, I create a second mount, which is called > 'user root', and make it become the root. Therefore, the root has a > parent mount, and it can be umounted or pivot_root. > > In the third patch, I fix rootfs_fs_type with ramfs, as it is not used > directly any more, and it make no sense to switch it between ramfs and > tmpfs, just fix it with ramfs to simplify the code. This idea sounds good to me. I have tested it with MINCS container shell script (https://github.com/mhiramat/mincs). However, I found different issue on init_eaccess() (or symlink lookup) with this series. I'm using a busybox initramfs, and it makes /init as a symlink of "/sbin/init" (absolute path) When CONFIG_INITRAMFS_USER_ROOT=n, it booted. But CONFIG_INITRAMFS_USER_ROOT=y, it failed to boot because it failed to find /init. If I made the /init as a symlink of "sbin/init" (relative path), it works. Would you have any idea? Thank you, -- Masami Hiramatsu <mhiramat@xxxxxxxxxx>