Сайт | Скачать | Видео | Wiki

Автор Тема: pra-porteus-initrd + обычное aufs ядро  (Прочитано 29000 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #15 : 23 Январь 2016, 23:50:41 »
Приделал udev174. Скомпилил статический.
http://www.puppyrus.org/~melvik/puppyrus/ftp/puppyrus/puppyrus-a64/kernel/4.4.0-1-MANJARO/
Код
title PRA64. manj44 + pra-porteus-initrd udev
set d=pra64
set c=copy2ram rammod=001;070
find --set-root --ignore-floppies --ignore-cd /%d%/initrd.xz
kernel /%d%/vmlinuz-4.4-x86_64 %bl%   dir=%d%  noswap  quiet %c% noload=Mini;xorg-1.18 load=Xfce;nVi
initrd /%d%/initrd160124.xz /%d%/initrd-mj44+.xz /%d%/initrd-udev.xz
Если initrd-udev.xz  нет - работает как раньше.
В initrd-udev.xz вынет то, что вырезал из udev (если udev не сработал - подключать udev+ четвертым)
Добавлены правки ander
т.е. можно юзать initrd160124.xz везде

Поддержка файловых систем (fat ntfs isofs) и железа зависит от набора модулей ядра в initrd-mj44+.xz
Теоретически должно работать везде где работал c UIRD pra6406-test4
« Последнее редактирование: 26 Январь 2016, 15:03:01 от sfs »

Оффлайн I-Jurij

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 533
  • Репутация: +16/-0
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #16 : 25 Январь 2016, 20:20:29 »
Цитата
title PRA64. manj44 + pra-porteus-initrd udev
set d=pra64
set c=copy2ram rammod=001;070
find --set-root --ignore-floppies --ignore-cd /%d%/initrd.xz
kernel /%d%/vmlinuz-4.4-x86_64 %bl%   dir=%d%  noswap  quiet %c% noload=Mini;xorg-1.18 load=Xfce;nVi
initrd /%d%/initrd160124.xz /%d%/initrd-mj44+.xz /%d%/initrd-udev.xz

Если initrd-udev+.xz нет - работает как раньше.

Какой initrd-udev - крайний, с плюсиком или без?
Какой initrd в find --set-root?
Передача load=, noload= через переменные - ничего не сломает?
« Последнее редактирование: 25 Январь 2016, 20:22:12 от I-Jurij »

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
  • Автор темы
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #17 : 25 Январь 2016, 22:11:07 »
Рецепт BK : MODALIASES="`cat /sys/bus/pci/devices/*/modalias`" - у меня в initrd не сработал

В initrd modprobe другой - из busybox, может быть, он по алиасам грузить не умеет?
Что интересно, в initrd и depmod из busybox другой, вместо нескольких modules.* формирует единственный modules.bb
Будет время, поэкспериментирую, возможно с такой базой modprobe из initrd и отработает.

UPD.  Что то я не понял, что у вас не сработало.  Тупо загрузился в pra03 1512 game с debug, пропустил один шелл, чтобы linuxrc подцепил 000-kernel.

lsmod - ничего нет
cat /sys/bus/pci/devices/*/modalias  - выдало алиасы
for i in `cat /sys/bus/pci/devices/*/modalias`; modprobe -v "$i"; done - ничего не выдало, но видеорежим изменился, модули по lsmod появились, в dmesg сообщения о найденном оборудовании и невозможности найти для него firmware, (что естественно, модуль с фирмваре еще не подключен).
for i in `cat /sys/bus/usb/devices/*/modalias`; modprobe -v "$i"; done - модулей ядра и сообщений в dmesg прибавилось.

То есть в первом приближении такая подгрузка модулей ядра работает.  Надо сделать фирмварь доступной на этот момент и железо свои драйвера получит.
Но только железо.  Нужные файловые системы, криптование и т.п. надо подгружать отдельно, поскольку для них записей на шинах нет - это же чистый софт.
И файлы в /dev/, наверно, надо создавать, с этим еще не разбирался.
« Последнее редактирование: 25 Январь 2016, 23:59:19 от ander »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #18 : 26 Январь 2016, 16:03:25 »
Какой initrd-udev - крайний, с плюсиком или без?
Поправил выше. udev+ - добавка, а не другая версия
Какой initrd в find --set-root?
Сюда можно любой уникальный файл. grub4dos находит его и делает этот раздел рутовым
Передача load=, noload= через переменные - ничего не сломает?
Если не накосячить не сломает. Хотите посмотреть что вышло :
Код
kernel /%d%/vmlinuz-4.4-x86_64 %bl%   dir=%d%  noswap  quiet %c% noload=Mini;xorg-1.18 load=Xfce;nVi

Рецепт BK :  Что то я не понял, что у вас не сработало.  
Похоже - во всех вариантах из этой темы проблема не в том что модули не загрузились - а в том, что на некотором железе этого недостаточно и не понятно что еще можно сделать, если все модули с которыми Uird грузится загружены, а флэшку не видит
Надо сделать фирмварь доступной на этот момент и железо свои драйвера получит.
А как же uird работает без firmware?
Но только железо.  Нужные файловые системы, криптование и т.п. надо подгружать отдельно, поскольку для них записей на шинах нет - это же чистый софт.
Похоже так и есть - с сд (в виртуалке) пока не добавил после udev : modprobe aufs squashfs  ata_piix
Почему  udev сам не подключил ata_piix  - не понятно...
И файлы в /dev/, наверно, надо создавать, с этим еще не разбирался.
Если вообще все модули ядра загружены и не работает - может дествительно в этом дело...
А разве udev их сам не создает?

В итоге объединил весь функционал в http://www.puppyrus.org/~melvik/puppyrus/ftp/puppyrus/puppyrus-a64/kernel/4.4.0-1-MANJARO/initrd160125.xz
Работает в 3х режимах (переключается автоматически):
1. initrd160125.xz - обычный (только для спец-ядер)
2. initrd160125.xz /%d%/initrd-mj44+.xz - загружает\выгружает ВСЕ модули ядра из initrd-mj44+.xz. Самый медленный и идейно кривой, но наиболее вероятно сработает. У меня работает на hdd-ext4 и сд
3. initrd160124.xz /%d%/initrd-mj44+.xz /%d%/initrd-udev.xz - модули грузит udev. Быстрее 2, но загрузка менее вероятна

В итоге не знаю в какую сторону двигаться. Рубеж флэш-fat не взят. UIRD пока впереди  :)
« Последнее редактирование: 26 Январь 2016, 16:07:42 от sfs »

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #19 : 27 Январь 2016, 14:05:55 »
Надо использовать uird и не мается лишними телодвижениями. Зачем несколько лет создавать то, что уже есть. Причем есть не только с точки зрения подьзователя, но и архитектурно достаточно гибко. Очень трудно будет придумать более гибко и также компактно при таком мощнейшем функционале.

Помогайте делать uird еще более красивым и правильным. Это значительно полезнее, чем не пойми чего добиваться.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #20 : 27 Январь 2016, 14:21:14 »
Надо использовать uird и не мается лишними телодвижениями.
В ПРА UIRD приняли без восторга (см. голосование)
Мне эта тема интересна в 1ю очередь для понимания работы системы. UIRD большой и сложный. Анализировать его код мне тяжело.
Зачем несколько лет создавать то, что уже есть.
pra-porteus-initrd активно использовался задолго до зарождения идеи uird
Особой разработки pra-porteus-initrd не ведется. Большинство устраивает. Меня тоже
Помогайте делать uird еще более красивым и правильным. Это значительно полезнее, чем не пойми чего добиваться.
Помогайте внедрить uird в ПРА. Нужны свежие версии UIRD и правка скриптов ПРА под UIRD (с этим готов помогать)
В одиночку  поддержку двух initrd мне не потянуть

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
  • Автор темы
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #21 : 27 Январь 2016, 17:12:22 »
Помогайте делать uird еще более красивым и правильным. Это значительно полезнее, чем не пойми чего добиваться.

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #22 : 27 Январь 2016, 17:24:32 »
UIRD - без Вас в нем разобраться сложно. Функционал и дистр под который делается идейно очень далек от ПРА. Может Вы  завтра бросите свой UIRD. А pra-porteus-initrd  - прост и понятен

Нерабочая клава сильно усложняла эксперименты
В режиме 2 грузятся все модули ядра из nitrd-mj44+.xz - но это не помогает ни клаве ни флэшке
Грузить все модули ядра 001 теоретически можно , но как-то не очень
Хотя может и попробовать , а после выгрузки - посмотреть какие модули не выгрузятся - они то и нужны. Я так для сд вычислял
Чтобы debug не запаривал - добавил аналог : stop

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #23 : 27 Январь 2016, 18:59:01 »
Прост и понятен initrd DDSh для любого, кто умеет читать shell.

Porteus initrd - сложно и непонятно. Просто вы к коду уже привыкли потому что немного в нем пробовали разобраться.
Uird в этом плане будет проще для понимания потому что он написан чище и модульнее.

Чтобы успешно внедрить uird нужно выкинуть из сознания глупость по поводу 14Мб - жирно. Не нужно пытаться убрать то, что не имеет смысла убирать.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
  • Автор темы
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #24 : 28 Январь 2016, 17:14:47 »
Очередной эксперимент над ядром MANJARO.
Удалось нормально войти в режим debug, клавиатура работает.
Всего-то надо было подгрузить модуль atkbd, но поскольку в initrd-mj44+.xz такового нет, для экспериментов сделал инитрд со всеми модулями из рядом лежащего pfs.

for i `cat /sys/bus/pci/devices/*/modalias`; do modprobe -v "$i"; done  - работает.
Поскольку в /sys/bus/  не одна шина, прошелся аналогичным образом по usb, hid, acpi
atkbd пока грузил просто вписав после этого modprobe atkbd, а поскольку запускал в режиме с debug, то попав в шелл с работающей клавиатурой начал измываться вручную.
Флешку видно еще не было, поэтому аналогичными for прошелся по platform (возможно, если бы клавиатура не была загружена, взялась бы отсюда) и scsi
После этого blkid разделы HDD и флешки уже увидел, но чтобы смонтировать флешку, понадобилось еще
подгрузить vfat, nls_cp437, nls_iso8859-1 (не знаю, зачем), nls_utf8.  После этого файлы дистрибутива нашлись, но дальше встало, поскольку я забыл подгрузить aufs  :)
Кстати, устройства в /dev создавать не пришлось, на devtmpfs они сами появились.
« Последнее редактирование: 28 Январь 2016, 17:22:40 от ander »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #25 : 28 Январь 2016, 17:30:06 »
for i `cat /sys/bus/pci/devices/*/modalias`; do modprobe -v "$i"; done  - работает.
т.е. можно и без udev обойтись....
Насколько мне известно он модули параллельно (т.е. быстрее грузит)
К файловым системам надо еще squashfs isofs
В итоге с флэшки загрузились?

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
  • Автор темы
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #26 : 28 Январь 2016, 17:35:15 »
Нет еще. :)
Я ж написал, дошел до создания aufs, обнаружилось, что забыл ее подгрузить и вывалился на этом.  А поскольку кучу всего вручную вколачивал, к этому времени надоело.
Потом с учетом всего, что накопал, еще попробую.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #27 : 28 Январь 2016, 21:46:16 »
Насколько мне известно он модули параллельно (т.е. быстрее грузит)
Не параллельно и не быстрее. Поэтому я на чистый udev ушёл.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
  • Автор темы
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #28 : 28 Январь 2016, 22:19:46 »
Вот, загрузился таки.
В начале linuxrc, там где Let's start, вписал
Код
for bus in pci usb hid acpi platform scsi; do                                   
    for i in `cat /sys/bus/${bus}/devices/*/modalias`; do                      
        modprobe -v "$i"                                                        
    done                                                                        
    sleep 1                                                                    
done                                                                            
for i in atkbd loop aufs squashfs lz4_compress fuse ntfs \                                
         nls_cp437 nls_cp866 nls_iso8859-1 nls_utf8; do                        
    modprobe "$i"                                                              
done                                                                            
Не уверен, что все это нужно, наверняка что-то можно и не грузить, но это экспериментов требует.
Вторым initrd подсовывал то, что сделал из 000-kernel, то есть там вообще все модули.  Это, конечно, лишнее, потом проблемы одни, к примеру модуль wifi потом пришлось перегружать, поскольку в initrd он не подтянул firmware.  Но это я только на этапе эксперимента, потом, понятно, надо только самое необходимое оставить.
Но что интересно, pra64 при такой загрузке сразу X поднял в правильном разрешении, а раньше исправлялось только после выбрасывания окошка с вопросом "Устраивает ли вас разрешение".  Может быть это из-за ранней загрузки драйвера i915?
Ну и в /base еще заменил 000-kernel, хотя, думаю, можно было просто положить от обоих ядер, только имя изменить.
Вот, сейчас пишу из под pra64, вариант с xfce, но ядро manjaro
« Последнее редактирование: 28 Январь 2016, 22:21:32 от ander »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re:pra-porteus-initrd + обычное aufs ядро
« Ответ #29 : 29 Январь 2016, 09:31:40 »
sleep в нашем busubox нет - usleep
В одном цикле железо и фс не работает?
В итоге с fat-флэшки загрузилось?
У меня - blkid fat видит, но mount не монтирует (модули fat vfat загружены)

Интел видяха с этим ядром работала по дефолту (sna\uxa) и с uird (у меня). Это отдельная тема, в которой надо понять - есть ли смысл ломаться за uxa и чего для этого не хватает в нашем ядре...

Насколько мне известно он модули параллельно (т.е. быстрее грузит)
Не параллельно и не быстрее. Поэтому я на чистый udev ушёл.
чистый udev - это что такое?