Ubuntu server 12.04, превращенный в squashfs (toram) и частые паники ядра при запуске
У меня есть 64-битный сервер Ubuntu 12.04, упакованный в squashfs и загружающийся в оперативную память с помощью опции toram. Когда я перезагружаю машину, я испытываю панику в ядре 3 раза из 5, иногда несколько раз подряд, но в конечном итоге это сработает.
Это ошибка, которую я получаю:
Target filesystem doesn't have requested /sbin/init.
run-init: opening console: No such file or directory
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100
Очевидно, что / sbin / init существует, так как иногда система загружается без каких-либо проблем, без каких-либо изменений.
Более того, машина совершенно новая, и memtest предполагает, что нет проблем с самой оперативной памятью.
Вот как была подготовлена моя установка:
- Я собрал ядро Ubuntu-3.11.0-18.32 со встроенной поддержкой aufs и squashfs на внешнем 64-битном сервере Ubuntu 12.04 VirtualBox VM.
- Ядро было установлено на целевой машине, и я сделал squashfs из копии файловой системы с опцией -always-use-fragments.
Я установил сценарии Debian live-boot-3.0.1-1, чтобы иметь возможность загружать squashfs в RAM. Пункт меню grub выглядит так:
menuentry 'Ubun2RAM' --class ubuntu --class gnu-linux --class gnu --class os { linux /boot/vmlinuz-$(uname -r) BOOT=LIVE boot=live toram=filesystem.squashfs rw quiet splash apparmor=0 security="" $vt_handoff kernel.panic=1 initrd /boot/initrd.img-$(uname -r) }
Это основано на руководстве Ubun2RAM, доступном по адресу http://roadha.us/2013/01/resilient-ubuntu-boot-to-ram-usb-stick/, основное отличие в том, что в моем случае "ящик для большого пальца" и "target" - это одна установка сервера Ubuntu.
Я пытался либо выяснить, что вызывает панику ядра, либо заставить систему перезапуститься при ее обнаружении, передав kernel.panic=1 в качестве параметра загрузки, или поместив его в /etc/sysctl.conf.
Проблема в том, что я не могу просмотреть журналы неудачной попытки запуска (так как система загружается в ОЗУ), и система никогда не перезагружается после возникновения паники ядра (несмотря на то, что я настроил ее таким образом, как я думал).
Идеальным решением было бы избавиться от паники ядра, однако я был бы доволен перезагрузкой системы при возникновении паники ядра.
Любой вклад приветствуется.
MJD
1 ответ
Мне удалось это выяснить.
Очевидно, старый диск, на котором я сохранил образ файловой системы, иногда не готов, когда сделана попытка доступа (и я узнал об этом случайно). Я никогда не ожидал, что версия с активной загрузкой, помеченная как "стабильная", не будет иметь функции ожидания готовности диска, но, похоже, это так. К счастью, я обнаружил, что есть альфа-ветка 4.x, и обновление до 4.0~alpha21 решило мою проблему.
Я также позаботился о том, чтобы проблема не была связана с моим ядром, и получил точно такой же результат с исходниками ядра 3.11.0-20.34, скомпилированными на данной машине.