- Не загружается Ubuntu/Mint/Kali с initramfs в BusyBox
- Проблема с суперблоком
- Ошибка диска fsck
- Ошибка диска: /dev/sda1 does not exist
- Проблема с fstab
- Проблема с железом
- Кали не загружается: чёрный экран initramfs.
- Симптомы проблемы
- СПРАВОЧКА
- Проблема initramfs : вариант первый
- Проблема initramfs : вариант второй
- Проблема initramfs : вариант третий
- LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- Re: LiveCD, initramfs
- error update-initramfs запуск через chroot из Live-CD
Не загружается Ubuntu/Mint/Kali с initramfs в BusyBox
В данной статье мы рассмотрим варианты решения проблем, когда виртуальный или физический серверы на базе Ubuntu/Mint/Kali не загружаются и отваливается в busybox в момент инициализации initramfs. При этом Linux не загружается, и пользователю доступна только командная строка initramfs.
Проблема с суперблоком
Если Ubuntu свалилась в busybox при инициализации initramfs, возможно на диске оказался испорченный суперблок. Linux хранит несколько копий суперблоков.
Для восстановления в случае такой проблемы, нам нужно загрузиться с образа/диска и запустить Terminal. После загрузки, в терминале вводим команду:
# sudo fdisk -l|grep Linux|grep -Ev ‘swap’
Команда вернет информацию о нашем разделе:
Запомните имя раздела и укажите его в следующей команде:
# sudo dumpe2fs /dev/vda2 | grep superblock
Команда вернет список запасных суперблоков:
Мы будем использовать второй резервный суперблок для замены поврежденного (можно выбрать любой, кроме Primary). Выполним проверку диска с использованием резевного суберблока для восстановления:
# sudo fsck -b 98304 /dev/vda2 -y
Нужно отмонтировать раздел:
# umount /dev/vda2
После успешного выполнения замены суперблока, вы должны получить такое сообщение:
Теперь перезагрузите компьютеры, отключив диск с дистрибутивом и все должно быть в порядке.
Ошибка диска fsck
Второй вариант ошибки, наличие следующей строки в окне терминала:
В ошибке будет указан том, который требует запуска ручной проверки диска. В командной строке initramfs выполните:
После полной проверки, нужно перезапустить сервер и проверить все ли в порядке.
Ошибка диска: /dev/sda1 does not exist
Проблема с fstab
Если при загрузке сервера вы видите ошибку:
Скорее всего вы только что установили Linux или то на вашем сервере есть проблемы в fstab. Чаще всего проблема возникает при установке системы с usb-накопителя. Раздел на который ругается система, может быть какой угодно. Как и в первом случае, нам нужно загрузиться с образа системы и выполнить некоторые действия. Проверьте UUID диска командой:
Система выдаст что-то подобное:
Отсюда уже видно, что система должна загружаться с sda2, а по факту загружается с sda1.
Монтируем наш раздел в любую директорию, например:
# sudo mount /dev/sda2 /mnt
Получаем в директории /mnt весь наш раздел /dev/sda2, находим там файл /etc/fstab и изменяем строку, содержащую /dev/sda1 на:
Сохраняем файл. Отмонтируем раздел от /mnt и перезагрузимся, если проблема была связана с не неправильным адресом разделе, сервер загрузится.
Так же данный вариант можно решить, загрузившись в emergency. Перемонтируйте корень для записи:
# sudo mount -o remount,rw /
После чего измените fstab и перезапустите сервер.
Проблема с железом
На некоторых материнских платах порты SATA могут получать произвольные номера. Это также может вызвать описанную в предыдущем пункте ошибку. Для исправления ошибки нужно изменить загрузчик grub.
Загрузитесь в режиме emergency или с live-cd и измените файл /boot/grub/grub.cfg
В строке где происходит загрузка раздела, например:
Измените путь до диска на UUID:
Источник
Кали не загружается: чёрный экран initramfs.
В статье рассмотрена ошибка загрузки Кали Линукс, сопровождающаяся появлением командной строки от имени initramfs и требующей от пользователя неких действий. Рассмотрим наиболее часто встречающиеся варианты решения проблемы и возможные причины.
Симптомы проблемы
- Кали Линукс загружается в чёрный экран смерти с единственно возможной командной строкой initramfs
- вас «приветствует» сообщение от BusyBox соответствующей версии
- вероятно, у вас двойная загрузка одновременно с Windows (не обязательно)
- после решения и проверки диска ситуация повторяется
- если Windows в мультизагрузочной системе присутствует, та также отказывается загружаться
Как я уже говорил, причин несколько, но практически все они связаны с повреждением файловой системы и исправляются проверкой тома, где расположен загрузчик Кали.
СПРАВОЧКА
Без неё никак. Initramfs — это полноценный набор директорий, который вы найдёте в корневой файловой системе. Он упакован в архив специального формата и сжат с помощью специального алгоритма. В момент загрузки системы загрузчик выгружает ядро и образ initramfs в память. Ядро проверяет присутствие initramfs и, обнаружив, монтирует его в символ / , запуская /init. Init представляет собой обычно шел-скрипт, а потому процесс загрузки с помощью init достаточно продолжительный, но в нашем случае обязательный: он создаёт возможность загружаться с локального тома, запароленный вход и т.д. Однако любой сбой в части блоков initramfs автоматически «ломает» ядро системы, вызывая ошибку загрузки.
Проблема initramfs : вариант первый
Внимательно изучаем окно терминала. В числе прочих строк обнаруживается запись типа:
обратите внимание на номер тома в начале строки /dev/sda* , где вместо * цифра тома, требующего ручного запуска проверки диска. Так тут же, в терминале и наберите:
или диск целиком (тоже вариант, но если у вас на жёстком ещё и Windows на NTFS, то советую лучше не рисковать):
- Х — номер вашего тома с Линукс
- -y — разрешение на проведение операции
Перезагружаемся и входим в систему обычным порядком.
Проблема initramfs : вариант второй
Этот вариант (через Китай, но есть возможность проверить результаты работы) подсмотрен на форуме Ubuntu-водов. Вам понадобится загрузочная флешка с Кали Линукс. Запускаем живую Кали и в окне терминала вводим команду:
Отображаем список суперблоков:
не забываем заменить символ * на цифру тома с Линукс на жёстком диске. Сейчас терминал вернёт вот это:
Я выделил номера резервных суперблоков, их мы и будем использовать в качестве альтернативы побитым. Выбираем любой (я беру второй за номером 98304):
После исправления пробуем смонтировать побитый раздел и проверить, восстановлена ли файловая система (вводите команды по отдельности):
Если термина не ругается, у вас всё получилось. Перезагружайтесь и входите в системы обычным порядком.
Проблема initramfs : вариант третий
Проблема повторяется всякий раз после перезагрузки . Однако, обратите внимание. Если терминал с initframs преследует вас ИМЕННО ПОСЛЕ РАБОТЫ В WINDOWS, советую вам повторить любой из шагов, который вернул вам нормальную загрузку, но в этот раз:
- отправляемся не в Кали, а прямиком в Windows
- обнаруживаем ВСЕ ПРОГРАММЫ, которые позволяют читать файловую систему ext* из Wind-овой NTFS. По личному опыту скажу: 99% возвращающейся ошибки initframs являются драйверы таких программ, которые загружаясь с Windows, «наводят порядок» на томе с Кали, даже если вы такую программу и не запускаете вовсе. В любом случае утилит, позволяющих попасть в Кали из Windows, несколько. Выберите ту, которая не вызывает вываливания в BusyBox с initframs.
- нашли и удалили? Запускаем проверку диска с Windows с перезагрузкой:
Источник
LiveCD, initramfs
Вот пытаюсь создать LiveCD, под рукой crux-2.4.iso, gentoo minimal и slamd64 12.0. Вот смотрю у всех есть initramfs(initrd) и еще какой-то файл *.squashfs. Может кто-то объяснить, зачем настоящую fs не запихивают в initramfs, а упаковывают отдельно в squashfs?
И если уж выделять отдельно rootfs, то что в ней должно быть? Или чем squashfs просмотреть? =)
Re: LiveCD, initramfs
Экономия места. С LZMA-патчами squashfs-образы занимают ещё меньше.
mount -t squashfs image.squashfs /mnt/squashfs -o loop
(Ванильное ядро ещё не держит LZMA-squashfs-образы).
Алсо, squashfs-tools: `mksquashfs(1)`, `unsquashfs(1)`.
Re: LiveCD, initramfs
Re: LiveCD, initramfs
Просто судя по сообщениям разработчиков Linux, initramfs задумывался именно как root fs, по этой причине там теперь init, а не linuxrc.
Ядро патчить не хочется. А быстрее ли будет грузиться по сравнению с корнем в initramfs, если я корень вынесу в виде fs, сжатой gzipом? Скорость загрузки увеличивается из-за того, что грузится ядром, а не BIOSом?
Re: LiveCD, initramfs
> если я корень вынесу в виде fs, сжатой gzipом?
В смысле? И в squashfs и в cramfs по умолчанию и так gzip-сжатие.
А если ты хочешь сделать образ корневой фс и затем целиком пожать его гзипом, то будет скорее всего намного медленней, так как придется образ полностью распаковывать в память. Жопа будет, короче.
Re: LiveCD, initramfs
То есть gzipом обычный диск, сделанный на loop жать смысла нет? А можно чем-то squashfs заменить, только чтобы ядро не патчить? Какие-то стандартные решения ведь должны в официальном ядре быть?
Re: LiveCD, initramfs
А можно вообще не жать, а просто примонтировать? Тогда ведь распаковывать не придется?
Re: LiveCD, initramfs
Ну и вот из init с crux-2.4.iso:
echo «Mounting squashfs filesystem. »
mkdir /.tmpfs/.squashfs
mount -r -t squashfs -o loop /.tmpfs/.cdrom/crux.squashfs /.tmpfs/.squashfs
echo «Populating root filesystem. »
mkdir -p /newroot
echo «Mounting new root filesystem. »
mount -t tmpfs tmpfs /newroot
echo «Copying files from squashfs. »
cp -af /.tmpfs/.squashfs/* /newroot/
То же самое ведь — все файлы копируются в память. Так не лучше ли всю rootfs поместить в образ initramfs?
Re: LiveCD, initramfs
Туплю, нашел в линуксе cramfs, буду его вместо squashfs юзать.
LiveCD у которых все в initramfs на самом деле почему-то не грузятся на qemu. Поэтому запихну-ка я все в cramfs.
Re: LiveCD, initramfs
Re: LiveCD, initramfs
Я уже cramfs выбрал по причине наличия в vanilla linux. =)
Вместо
/static/dd if=/cdrom/root.cfs of=/dev/ram1 2>/dev/null
/static/mount -t cramfs -o ro /dev/ram1 /uLin
У меня
mount -t cramfs -o ro,loop /cdrom/rootfs.img /mnt
Потом из /mnt буду все копировать в каталог /newroot и делать switch_root в него(switch_root входит в состав busybox).
Ну и вместо linuxrc у меня init(и initramfs вместо initrd). Вообщем все работает, только glibc я вытащил из gentoo(когда сам собираю почему-то пишет что не может найти libc.6, хотя в initramfs он есть). А busybox слинкованный с uclibc ты сам собирал? Описание сборки на сайте довольно странное и незавершенное, а у меня все собирает Makefile, так что всякие chrootы в нем делать не удобно. =(
Re: LiveCD, initramfs
И еще странная проблема: при вызове switch_root /newroot /sbin/init пишет «switch_root: bad newroot /newroot». Что бы это могло быть? В гугле находятся даже сырцы switch_root, но решения нет.
Re: LiveCD, initramfs
Проблема была в том, что я /newroot не смонтировал как tmpfs. Теперь все грузится. До полностью своего LiveCD осталось собрать glibc(или busybox с uclibc) и rootfs(сейчас просто скопировал из RIPLinux и немного почистил).
Было бы замечательно если бы кто-то объяснил, как собрать busybox с uclibc.
Re: LiveCD, initramfs
а как ты линковал busybox с uClibc? Можно про этот процесс поподробнее?
Источник
error update-initramfs запуск через chroot из Live-CD
Вообщем запускаю «sudo update-initramfs -u -k all» из под chroot, выбивает ошибку:
Гугл внятного ответа не даёт. Как мне обновить initramfs ?
cannot open /proc/mounts: No such file
Напрашивается совет смонтировать «/proc», но судя по
cryptsetup: WARNING: Couldn’t determine root device»
ничем хорошим это все равно не кончится.
Оглашай настоящую задачу.
Напрашивается совет смонтировать «/proc», но судя по
ничем хорошим это все равно не кончится.
да, сам только что вчитался, что /proc пустой вообще.. Сейчас открываю архив с бэкапом системы, и смотрю папку, на каком этапе случился этот косяк..
Я просто готовил систему к полнодисковому по факту уже в Live-CD, а надо было перед бэкапом.. Именно об этой комманде «sudo update-initramfs -u -k all» я тупо забыл, что с ней будет головняк.
эммм… /proc и в бэкапе пустой…. Как так то ? Не корректно забэкапилось ? В лайве он полон. Я никогда просто туда не заглядывал )
Все правильно, /proc не надо бэкапить, там псевдофайлы соответствующие текущей загруженной системе. Его надо просто примонтировать.
Все правильно, /proc не надо бэкапить, там псевдофайлы соответствующие текущей загруженной системе. Его надо просто примонтировать.
Как его примонтировать, если раздел я не размечал, а загрузился из live-ubuntu, когда ставлю вообще дебиан?
Приблизительно так: sudo mount -t proc proc /proc .
Ну или, для выполнения снаружи чрута: sudo mount —rbind /proc /proc , все равно небось для /sys и /dev тоже будет нужно.
Ну и, еще раз, задавай вопросы по самой задаче, а то это так и будет прыжками с одной грабли на другую.
Где /mnt/root — точка монтирования корневой файловой системы.
Я понял. Попробую сейчас по другому, чтобы не мучатся с chroot, я просто эту же систему разверну на флешке, и проведу «подготовку» уже на флешке т.к. я же уже UUID точный создал и знаю, после чего напрямую перенесу на диск. Изначальная сложность просто была в том что был зашифрован только home, и поэтому не менял crypttab, fstab вначале. Вообщем из-за большого объёма файлов и бэкапов, не предусмотрел все тонкости. Если не прокатиться, вернусь к твоему последнему сообщению. Спасибо )
В общем, не понятно вообще в чём сложность chroot.
Монтируешь корень, монтируешь /dev, /proc, /sys, делаешь chroot и готово.
И обрати внимание как пишутся слова «в общем» и «вообще», они пишутся только так. Слова «вообщем» нет.
Если не прокатиться, вернусь к твоему последнему сообщению.
Писать как хочется не прокатит, так же и делать как хочется.
Я не из России, и мой национальный язык другой. Если я делаю незначительные ошибки — да, не приятно может быть, но не критично. Если просто к чему-то придраться — пожалуйста, сколько влезет «аноним»)) если нет, то моего ответа будет достаточно. Лучше по теме давай.
Если твой родной язык не русский и тебе указывают на незначительные ошибки, то не плохо бы запомнить как ещё лучше знать язык, который ты учишь.
Это не придирки, мы все учимся и косвенно учим других.
По теме я тебе уже написал.
Перед chroot смонтируй /dev, /proc, /sys, сделай chroot и далее у тебя вся будет работать.
Если твой родной язык не русский и тебе указывают на незначительные ошибки, то не плохо бы запомнить как ещё лучше знать язык, который ты учишь.
Без проблем. Замечания учёл, спасибо.)
Перед chroot смонтируй /dev, /proc, /sys, сделай chroot и далее у тебя вся будет работать.
Источник