The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"загрузка самодельного ядра"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Система / Linux)
Изначальное сообщение [ Отслеживать ]

"загрузка самодельного ядра"  +/
Сообщение от handler2006 email(ok) on 29-Янв-11, 19:46 
И снова здравствуйте!
Задался вопросом сборки небольшой системы.
Начало простое:
1. собрал ядро дефолтное
2. собрал вручную initrd (ext2 ВАЖНО!)
3. нацарапал linuxrc простейший
4. отформатировал флешку fat32
5. установил grub на флешку
6. скопировал ядро и initrd.gz
7. нацарапал grub.conf
8. загрузился с флешки
Все прошло благополучно, выдало командную строку.

Теперь вопросы:
1. С момента когда grub начал загрузку в ПАМЯТЬ (не выполнение!) initrd.gz и ядра, до момента, когда ядро начинает грузиться (~5сек.) - черный экран, а я хочу видеть процес загрузки файлов в память.
2. корневая ФС монтируется в ext4 (/dev/root.old). Если убрать поддержку ext4 в ядре - перестает грузиться вообще. Как мне поменять тип ФС?
3. При сборке initrd добавил сетевые команды (ifconfig и т.п.) в /bin /sbin, но при загрузке ядра они не работают, оболочка ash, busybox тоже не имеет сетевой поддержки. Как мне добавить основные команды работы с сетью?

Хочу собрать минимальную систему (что-то типа микроядра), работающую как веб или файловый  сервер.
Буду рад ссылкам на умные статьи и Ваши пинки.
С ув. Алексей

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "загрузка самодельного ядра"  +/
Сообщение от Serge (??) on 30-Янв-11, 00:06 
man LFS book
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "загрузка самодельного ядра"  +/
Сообщение от handler2006 email(ok) on 30-Янв-11, 11:54 
> man LFS book

Спасибо, читал, но почему-то забыл за него.
Сейчас разбираюсь - потом отпишусь

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "загрузка самодельного ядра"  +/
Сообщение от tux2002 (ok) on 03-Фев-11, 21:25 
>> man LFS book
> Спасибо, читал, но почему-то забыл за него.
> Сейчас разбираюсь - потом отпишусь

Для утилит нужны библиотеки(.so).  Смотри напр. ldd /sbin/ifconfig. budybox собран статически, потому и работает. Можешь взять готовое - погугли buildroot. Но удовольствие от самоподелывания потеряешь :).

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "загрузка самодельного ядра"  +/
Сообщение от handler2006 email(??) on 04-Фев-11, 01:33 
>>> man LFS book
>> Спасибо, читал, но почему-то забыл за него.
>> Сейчас разбираюсь - потом отпишусь
> Для утилит нужны библиотеки(.so).  Смотри напр. ldd /sbin/ifconfig. budybox собран статически,
> потому и работает. Можешь взять готовое - погугли buildroot. Но удовольствие
> от самоподелывания потеряешь :).

Это я уже понял, только вот столкнулся с прблемой монтирования корневой ФС в момент загрузки - ядро не может найти корень и виснет. В начале проведения опытов все было в порядке, а теперь ничего не грузится и я не знаю, где искать причину.

Причины:
1. Ядро - здесь, думаю, причины не может быть. Единственное, что монтирует ядро при загрузки корень в ext4.
2. initrd - здесь я создаю /dev/sd* (т. к. грузимся с флешки, а она определяется как scsi). Пробовал копировать готовые с /dev и пробовал создавать сам - результат тот же. Единственное, что радует, что ядро при панике пишет, что не может найти устройство (x, y), которые я указываю для mknode /dev/sdx x y.
3. init - скрипт. Скорее всего здесь при поиске /bin/sh возникает колизия. Однако пробовал и busybox - он скомпилился статически и создал все нужные директории.
4. grub.conf kernel bzImage root=device я тут ничего не писал да и не представляю, какое устройство ему указать.

Самое обидное, что в начале опытов все работало, а теперь - нет

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "загрузка самодельного ядра"  +/
Сообщение от tux2002 (ok) on 06-Фев-11, 17:20 
>[оверквотинг удален]
> В начале проведения опытов все было в порядке, а теперь ничего
> не грузится и я не знаю, где искать причину.
> Причины:
> 1. Ядро - здесь, думаю, причины не может быть. Единственное, что монтирует
> ядро при загрузки корень в ext4.
> 2. initrd - здесь я создаю /dev/sd* (т. к. грузимся с флешки,
> а она определяется как scsi). Пробовал копировать готовые с /dev и
> пробовал создавать сам - результат тот же. Единственное, что радует, что
> ядро при панике пишет, что не может найти устройство (x, y),
> которые я указываю для mknode /dev/sdx x y.

Ну для флешки ещё нужен и драйвер - usb-storage.ko. Вообще образ initrd дорлжен содержать все нужные драйвера для монтирования корня, или пересобирайте ядро (что проще) с монолитными драйверами usb и extX - что нужно для корня.

> 3. init - скрипт. Скорее всего здесь при поиске /bin/sh возникает колизия.

Передайтк в grub параметр ядра init=/bin/sh
> Однако пробовал и busybox - он скомпилился статически и создал все
> нужные директории.
> 4. grub.conf kernel bzImage root=device я тут ничего не писал да и
> не представляю, какое устройство ему указать.
> Самое обидное, что в начале опытов все работало, а теперь - нет

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "загрузка самодельного ядра"  +/
Сообщение от handler2006 email(??) on 06-Фев-11, 17:26 
Спасибо за совет - попробую с init=/bin/sh
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "загрузка самодельного ядра"  +/
Сообщение от handler2006 email(ok) on 17-Апр-11, 18:33 
Теперь по-порядку:

1. Вот что выдает при загрузке:
VFS: Mounted root (ext2 filesystem) readonly on device 1:0
devtmpfs: mounted
Freeing unused kernel memory: 780K freed
Write protecting the kernel read-only data: 10240K
Freeing unused kernel memory: 1704K freed
Freeing unused kernel memory: 1840K freed
Kernel panic - not syncing: No init found. Try passing init+option to kernel

2. grub.conf
    root (hd0,0)
    kernel /boot/bzImage ro root=/dev/ram0 ramdisk_size=32768
    initrd /boot/initrd.gz

3. Мои действия:
ramdisk_size=32768 пришлось указать, т.к. изначально ядро не грузилось из-за нехватки места под ramdisk.
root=/dev/ram0 - Здесь очень интересный момент: я всегда думал, что здесь указывается устройство, откуда мы грузимся (что-то типа нашей загрузочной флешки), оказалось, что это соответствует устройству в нашем initrd (/dev/ram0, который мы создали сами). С этого момента ядро стало монтировать наш ramdisk.

4. Судя по всему, ядро загрузилось, распаковало и успешно прикрутило наш initrd (в ext2 как мы и создавали), но не смогло найти скрипт init (он есть, равно как и linuxrc). При сборке ядра поддержка initramfs и ext2 включена. Тем не менее, мне кажется, ядру не хватает модулей для работы с фс, но ведь ядро прикрутило ramdisk и devtmpfs ?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "загрузка самодельного ядра"  +/
Сообщение от handler2006 email(??) on 16-Май-11, 19:35 
В общем, разобрался.
Проблема загрузки ram-диска (в большинстве случаев и не только у меня) состоит в неправильном создании этих самых образов. У меня был пропущен параметр gzip -9 при сборке ram-диска, поэтому и не грузилась система.
Данные  ошибки помогають детально изучить предметную область, так что я даже рад.
Теперь новый вопрос:
Нам нужно загрузить модуль соответствующего сетевого устройства.
собрал модули для сетевых устройств и положил их в папку /lib/net ram-диска.

for mod in /lib/net do
   modprobe -n $mod
done

т.е. поочередно пробовать каждый модуль  это грубо.
Я слышал, что при загрузке ядро опрашивает все устройства и получает от них определенного рода сообщения, т.е. сетевые устройства отвечают на запрос ядра, перехватив которое мы можем загрузить требуемый модуль.
Что это за сообщения и где можно найти пример их использования?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру