On Mon, 14 Jun 2021 at 19:45, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote: > > We want to be able to mount virtiofs as rootfs and pass appropriate > kernel command line. Right now there does not seem to be a good way > to do that. If I specify "root=myfs rootfstype=virtiofs", system > panics. > > virtio-fs: tag </dev/root> not found > .. > .. > [ end Kernel panic - not syncing: VFS: Unable to mount root fs on > +unknown-block(0,0) ] > > Basic problem here is that kernel assumes that device identifier > passed in "root=" is a block device. But there are few execptions > to this rule to take care of the needs of mtd, ubi, NFS and CIFS. > > For example, mtd and ubi prefix "mtd:" or "ubi:" respectively. > > "root=mtd:<identifier>" or "root=ubi:<identifier>" > > NFS and CIFS use "root=/dev/nfs" and CIFS passes "root=/dev/cifs" and > actual root device details come from filesystem specific kernel > command line options. > > virtiofs does not seem to fit in any of the above categories. In fact > we have 9pfs which can be used to boot from but it also does not > have a proper syntax to specify rootfs and does not fit into any of > the existing syntax. They both expect a device "tag" to be passed > in a device to be mounted. And filesystem knows how to parse and > use "tag". > > So there seem to be a class of filesystems which specify root device > using a "tag" which is understood by the filesystem. And filesystem > simply expects that "tag" to be passed as "source" of mount and > how to mount filesystem using that "tag" is responsibility of filesystem. > > This patch proposes that we internally create a list of filesystems > which pass a "tag" in "root=<tag>" and expect that tag to be passed > as "source" of mount. With this patch I can boot into virtiofs rootfs > with following syntax. > > "root=myfs rootfstype=virtiofs rw" The syntax and the implementation looks good. Acked-by: Miklos Szeredi <mszeredi@xxxxxxxxxx>