Минимальное ядро gentoo (+ добавил опций для eeepc), сборка initramfs от genkernel,.. предлагает шел busybox
Решил сдуть пыль со старого нетбука eeepc900. После попытки 'по быстрому' поднять на нем последнюю ubuntu понял что ребята из каноникал делают что то сильно не то и решил заточить последнюю gentoo под него.
Немного модифицировал настройки ядра, взятые от сюда по тамошним же мануалам, только что wifi там другой..
За сборку ядра и образа initramfs отвечал genkernel (скопировал изначальный .config в папку /usr/src/linux):
genkernel all --menuconfig --oldconfig --symlink
Загрузчик grub2
Систему собирал на 'большом брате' в виртуалке (CFLAGS="-O2 -march=i686 -pipe" CHOST="i686-pc-linux-gnu" ACCEPT_KEYWORDS="~x86"...) потом переносил по сети через nfs tar-ом (я в шоке! в gentoo minimal нет netcat, но раньше он точно был).
Файловая система ext4, один раздел без выделенного /boot (поддержку вкомпилил в ядро не модулем, и отключил предварительно ext2 и ext3, так как по умолчанию система пытается монтировать раздел в ext2). В /dev проверил, есть null и console.
Так вот после grub система грузит ядро (по логу единственная ошибка - не найдена soundcart, с этим я еще по возекаюсь позже) а так же сообщения об обнаружении usb контроллера и устройств на нем (картридер, вебкамера,..) и тут же выдает приглашение шела busybox с документацией по настройки сети с помощью net-setup (кстати в образ получается по умолчанию встроен сервер sshd, и работает).
Сеть работает, корневой раздел монтируются (вручную), а если подготовить среду для chroot (mount -o bind /dev.. /proc//) все прекрасно работает, собственно так сижу и донастраиваю.
Я не понимаю что я не так сделал, если системе подсунуть ядро с образом от livecd то система нормально грузится (только, что странно, поддержки сети почему то нет, не стал разбираться почему). Не считаю это решением, потому как в ядре от livecd слишком много всего накручено, оно грузится несколько секунд, а цель сделать очень быструю загрузку системы, заточенную под конкретное железо (будет squashfs + unionfs или aufs еще не решил? а для обновлений все буду подготавливать на быстрой машине).
Проблема в образе initramfs? Потому что в /init даже нет намека на использование switch_root или теперь используется что то другое? Кстати бинарник switch_root есть но я не знаю как им нормально пользоваться.
mkdir /1
mount /dev/sda1 /1
switch_root -c /dev/console /1 /sbin/init
выдает одно и то же сообщение с документацией по его использованию:
BusyBox v1.20.2 (2012-12-13 21:01:16) multi-call binary.
Usage: switch_root [-c /dev/console] NEW_ROOT NEW_INIT [ARGS]
Free initramfs and switch to another root fs:
chroot to NEW_ROOT, delete all /, move NEW_ROOT to /,
execute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.
-c DEV Reopen stdio to DEV after switch
Если запускать:
exec switch_root -c /dev/console /1 /sbin/init
то выдает ту же документацию, а после:
Kernel panic - not syncing: Attempted to kill init! exitcode=0.00000100
Pid: 1,comm: init Not tainted 3.7.1-gentoo #1
Call Trace:
...
Как видно я совсем не понимаю что именно нужно добавить в /init чтобы заработало, не хочу использовать тяжелый готовый скрипт от livecd, чуть позже попробую подсунуть его скрипт в свой образ (но, во первых я хочу разобраться, что же именно не дает подменить корень и запустить linux, а во вторых хочется поменьше лишнего и побыстрее загрузку системы с момента включения).
- Для комментирования войдите или зарегистрируйтесь
1. возможно, не совсем
1. возможно, не совсем внимательно прочел (пишите лаконичнее), но все же не понял — зачем нужен initramfs? Тем более его тяжеленная версия от genkernel?
2. gentoo minimal рекомендуется сменить на sysrescuecd, там все не так почикано.
Beelzebubbie написал(а): 2.
Не пора ли поднять на горге вопрос о направлении собственного формата install media следом за инсталлятором? :)
:wq
--
Live free or die
Beelzebubbie написал(а): 1.
Извиняюсь за сумбурность, хотел в одном сообщении вместить ответы на предполагаемые вопросы, чтобы тред не затянулся на несколько суток...
Мои скилы в gentoo немного подустарели, и само собой напишу свой /init из 5 строк, если разберусь, в том то и проблема что я не понимаю, что не так. От initramfs избавляться не собираюсь, так как в планах unionfs/aufs, плюс возможно будет чуть посложнее конфигурация, плюс те же методы будут использоваться совсем для других задач, а там нужен будет lvm и снапшоты.
И я не понимаю, почему 'этот монстроуозный' genkernel вообще не добавил код продолжения загрузки с использованием switch_root в свой /init !!!
p.s. у меня появилось чувство что в ядре должно быть что то включено, чтобы работал switch_root?
/
man genkernel /--real-root
?В
/etc/fstab
что прописано?:wq
--
Live free or die
real_root в опциях ядра в
real_root в опциях ядра в grub прописывал на само устройство /dev/sda1 и то же самое прописано в fstab
Мне кажется до fstab не доходит
все же любопытно, а если
все же любопытно, а если попробовать загрузиться пока без initramfs и поглядеть? чтобы исключить лишние поводы для «расстройства»?
а потом, если уж он нужен, то всегда допишете что надо самостоятельно.
(ошибся уровнем поста ;) )
Beelzebubbie написал(а):все
Да да, тоже подумал так, без initramfs все конечно грузится (правда udev не запускался без devtmpfs в ядре)...
p.s. Сейчас бодаюсь с видео, жаль времени мало разобраться с сабжем, xorg работает, mplayer видео кажет (звук еще под вопросом почему то), а вот в консоли черный экран, и где я опять что попутал, вроде kernel modesetting уже давно прекрасно работало, в т.ч. на intel.
>без devtmpfs в ядре Не в
>без devtmpfs в ядре
Не в этом ли корень как минимум некоторых проблем? Когда делал свой маленький initramfs, то без devtmpfs таки не работало, хотя не могу вспомнить, что именно.
Beelzebubbie написал(а): >без
к сожалению для работы switch_root этого недостаточно.
я как основу для собственного
я как основу для собственного initramfs использовал это: http://wiki.gentoo.org/wiki/Early_Userspace_Mounting
там есть немало ошибок, но в целом схема рабочая, и, конечно же, switch_root там используется.
Работоспособность проверена как минимум на 3х машинах совершенно различных в плане «истории» конфигов ядра, подобного Вашему эффекта не замечал.
/
Только не говори, что portage тебя об этом не предупреждал.
:wq
--
Live free or die
А есть ли возможность
А есть ли возможность получить список всех таких предупреждений?... пока у меня только глупый вариант, запустить emerge -e ... и записать вывод в лог, а то я хз где он может храниться по умолчанию.