In my naive knowledge, and until someone will prove the contrary (with complete command line example),
the TCDV (Tiny Core Disk Virtual) boot code will not work in the scenario with "qemu -kernel aaa -initrd bbb -drive file=ccc,if=
virtio, ..."
Please correct the statements were I am wrong below.Thanks.
1. Qemu boots the
kernel (given on its command line)
2. Kernel sees
initrd (a ramfs type-temp memory, with no blocks) and decompress it in ram (still no device-blocks aware)
3. Kernel searches, in
few hard-coded places, to find the
starting init command (or
init=/blah if given as a kernel boot parameter)
if init=/bin/sh then the shell needs ONLY /dev/console, optionaly /dev/null (I tested this)
4. Kernel will automatically populate a lot of devices, in 3 cases: mount devpts, mdev or udev
with "mount devpts" kernel mounts, over original /dev, with its new default devices
(like 46 of tty# etc)
in tinycore case /dev/ were already populated, and devpts is not used to mount over them 5. Kernel now has mountpoints /dev/*, even without them being listed in /etc/fstab, neither mounted as /etc/mtab
6. Kernel gives execution further to
init, and supervise in the background
7. init can only runs commands or scripts from RAM (uncompressed rootfs.gz) and
any mounted (if any) devices (block, nfs etc)
8. So initial /TEST/sda1.qcow2 (placed on host machine) will only expose its "
content" to kernel and its rootfs system, if was on qemu command line
9.
Kernel does not see original files sda1.qcow2 and rootfs.gz anymore 10. the TCVD=abc.img is useless now, because "inside /TEST/sda1.qcow2" is no abc.img to mount
Summary: TCVD is not for qemu + virtio. Q.E.D.