Por que a inicialização falha com meu kernel personalizado na etapa mknod?

Por que a inicialização falha com meu kernel personalizado na etapa mknod?

Quero construir um kernel personalizado no Ubuntu. Eu configurei e construí o novo kernel. O novo kernel não tem initrd e vem da fonte vanilla. Eu construo este novo kernel monolítico apenas com os drivers necessários.

Quando tento inicializar o novo kernel, fico preso na mknodetapa. Ele tenta mknodnovos dispositivos como /dev/sda1 /dev/vca4. Ele falha porque a partição raiz está montada como somente leitura.

Acho que o problema é que perdi algo no meu hardware. Se eu inicializar com o kernel padrão do Ubuntu, não tenho problemas. Alguém poderia me ajudar a entender por que isso acontece?

Responder1

Na inicialização, o sistema de arquivos raiz é quase sempre montado como somente leitura, para que você possa executá fsck-lo. Quando terminar, é comum remontar a leitura e gravação do sistema de arquivos raiz usando algo como:

mount / -o remount,rw

Embora, como você está usando o Ubuntu, compilar um kernel deva ser muito mais simples que isso. Se você ainda não estiver usando, recomendo usar kernel-packagepara compilar o kernel. Simplesmente pegue o pacote e os fontes do kernel, descompacte e diga algo como

make-kpkg -j3 --initrd binary

Isto irá então construir .debpacotes que você pode instalar da maneira usual ( dpkg -i SOME-FILE.deb)

Responder2

Você deve ter um devtmpfsor tmpfsmontado /deve gerenciado por udev; portanto, o diretório pode ser gravado independentemente do estado do arquivo /. No Ubuntu, isso geralmente é configurado pelo initramfs; você construiu e carregou um com seu kernel?

informação relacionada