Eu não acho que esteja executando com sucesso /sbin/modprobe
. Mas há algo que me interessou aqui. Parece que ele tenta abrir /dev/console
antes de "devtmpfs: mounted" ou "Mounted root (ext4 filesystem)", e não há outra tentativa de abrir /dev/console
. Mas achei que o kernel tinha que abrir /dev/console
de algum sistema de arquivos para o init (/ bin / sh no seu caso) ...
Parece que, se você não tiver um initramfs, o kernel cria um falso muito simples. Se eu estou seguindo corretamente, é por isso que ele pode abrir /dev/console
antes de montar um sistema de arquivos raiz real.
/*
* Create a simple rootfs that is similar to the default initramfs
*/
static int __init default_rootfs(void)
{
int err;
err = sys_mkdir((const char __user __force *) "/dev", 0755);
if (err < 0)
goto out;
err = sys_mknod((const char __user __force *) "/dev/console",
S_IFCHR | S_IRUSR | S_IWUSR,
new_encode_dev(MKDEV(5, 1)));
if (err < 0)
goto out;
err = sys_mkdir((const char __user __force *) "/root", 0700);
if (err < 0)
goto out;
return 0;
O diretório /root
é baseado em outro lugar no código do kernel, para montar e fazer a transição para o sistema de arquivos root=
real.
O commit que introduz esta função esclarece que esta função específica é usada somente quando o suporte initrd e initramfs são compilados. Caso contrário, o "default initramfs" forneceria o /dev/console
e o /root
, se você não tivesse passado um initramfs específico ao inicializar o kernel, e você não especificasse um initramfs para ser embutido no kernel.