Я хочу собрать собственное ядро под Ubuntu. Я настроил и собрал новое ядро. Новое ядро не имеет initrd и поставляется из исходников vanilla. Я собираю это новое монолитное ядро только с необходимыми ему драйверами.
Когда я пытаюсь загрузить новое ядро, я застреваю на mknod
шаге. Он пытается загрузить mknod
новые устройства, такие как /dev/sda1
/dev/vca4
. Он терпит неудачу, потому что корневой раздел смонтирован только для чтения.
Я думаю, проблема в том, что я что-то потерял в своем оборудовании. Если я загружаюсь с ядром Ubuntu по умолчанию, у меня нет никаких проблем. Может ли кто-нибудь помочь мне понять, почему это происходит?
решение1
При загрузке корневая файловая система почти всегда монтируется только для чтения, так что вы можете работать fsck
на ней. После того, как вы закончите, принято перемонтировать корневую файловую систему для чтения и записи, используя что-то вроде:
mount / -o remount,rw
Хотя, поскольку вы используете Ubuntu, компиляция ядра должна быть намного проще, чем это. Если вы еще не используете его, я рекомендую использовать kernel-package
для компиляции ядра. Просто получите пакет и исходники ядра, распакуйте и скажите что-то вроде
make-kpkg -j3 --initrd binary
Затем будут созданы .deb
пакеты, которые вы можете установить обычным способом ( dpkg -i SOME-FILE.deb
)
решение2
У вас должен быть devtmpfs
или tmpfs
смонтированный /dev
и управляемый udev
; таким образом, каталог доступен для записи независимо от состояния /
. В Ubuntu это обычно настраивается initramfs; вы собрали и загрузили его вместе с ядром?