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

1

Eu quero construir um kernel personalizado no Ubuntu. Eu configurei e construí o novo kernel. O novo kernel não tem initrd e vem de fonte de baunilha. Eu construo este novo kernel monolítico apenas com drivers que ele precisa.

Quando tento inicializar o novo kernel, estou preso na etapa mknod . Ele tenta mknod novos dispositivos, como /dev/sda1 /dev/vca4 . Ele falha porque a partição raiz é montada como somente leitura.

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

    
por user17545 09.04.2012 / 17:35

2 respostas

1

Na inicialização, o sistema de arquivos raiz é quase sempre montado como somente leitura, para que você possa executar fsck nele. Assim que estiver pronto, é costume remontar o sistema de arquivos raiz de leitura-gravação usando algo como:

mount / -o remount,rw

Embora, desde que você esteja usando o Ubuntu, compilar um kernel deve ser muito mais simples do que isso. Se você ainda não estiver usando, recomendo usar kernel-package para compilar o kernel. Basta pegar o pacote e as fontes do kernel, descompactar e dizer algo como

make-kpkg -j3 --initrd binary

Isso criará .deb pacotes que você pode instalar da maneira usual ( dpkg -i SOME-FILE.deb )

    
por 09.04.2012 / 18:06
1

Você deve ter um devtmpfs ou tmpfs montado em /dev e gerenciado por udev ; assim, o diretório é gravável, independentemente do estado de / . No Ubuntu, isso geralmente é configurado pelo initramfs; você construiu e carregou um com seu kernel?

    
por 09.04.2012 / 21:35