Почему загрузка моего кастомного ядра завершается неудачей на этапе mknod?

Почему загрузка моего кастомного ядра завершается неудачей на этапе mknod?

Я хочу собрать собственное ядро ​​под 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; вы собрали и загрузили его вместе с ядром?

Связанный контент