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 mknod
etapa. Ele tenta mknod
novos 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-package
para 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 .deb
pacotes que você pode instalar da maneira usual ( dpkg -i SOME-FILE.deb
)
Responder2
Você deve ter um devtmpfs
or tmpfs
montado /dev
e 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?