Лично мною не проводились ввиду отсутствия интереса к именно этим пунктам
1. Заявлено. В оригинале, похоже, все для этого есть
2. Что задать - то и будет
changes=/dev/device
changes=/path/
changes=/path/file.dat
3. Насколько я понял - можно. Даже, вроде, в Initrd было fsck для reiserfs
На мой взгляд этот initrd интересен:
a. Нет либ ядра (не надо пересобирать)
б. За счет noload можно избежать длинных строк загрузчика
в. rootcopy
г. база из сколько угодно модулей
д. debug
С этими полезными функциями надо разбираться, а Вы в какие-то дебри...
Доработал porteus-initrd для работы с любым AUFS ядром. Пример (http://forum.puppyrus.org/index.php/topic,15288.new.html#new) Добавил в начало
for x in `find /lib/modules/$(uname -r)/kernel -name "*.ko" 2>/dev/null | sed 's/.ko//g'`; do modprobe `basename $x` 2>/dev
for x in `find /lib/modules/$(uname -r)/kernel -name "*.ko.gz" 2>/dev/null | sed 's/.ko.gz//g'`; do modprobe `basename $x`
1. Методика сборки porteus-initrd в любом arch:
1.0. Подключить mkinitcpio-0.11.2-lf.pfs в PRA и скопировать нужные модули ядра
1.1. inirtd-edit initrd.xz (из аттача ;где initrd.xz- porteus-initrd
1.2. mkinitcpio -k ver -g initrd.gz ;где ver: версия нужного ядра (в формате `uname -r`)
В mkinitcpio.conf достаточно
HOOKS=" pata sata usb"
MODULES="vfat ext4 iso9660 aufs squashfs"
1.3. inirtd-edit initrd.gz
1.4. cp -R initrd-tree-gz/usr/lib/modules initrd-tree-xz/lib
1.5. depmod -b initrd-tree-xz ver
1.6. inirtd-edit initrd-tree-xz
2. Методика сборки porteus-initrd в любом линукс:
1.1 (то же что выше)
2.2.1 Используя средства сборки initrd Вашего дистра (или универсальные типа dracut) собрать
initrd под нужное ядро с параметрами модулей аналогичными HOOKS MODULES из 1.2
Без aufs squashfs гарантировано не получится.
aufs можно скомпилить, вдохновясь (https://aur.archlinux.org/packages/aufs3/)
2.2.2 Можно просто взять initrd нужного дистра, но там может не оказаться нужного и много ненужного
2.2.3 Можно взять весь /lib/modules. Будет долго загружаться
В итоге получаем initrd.gz (lz bz узнать что имено утилитой file )
1.3 - 1.6
1. - проверенный вариант
2.2.1 для опытных
2.2.2 для везучих
2.2.3 для невезучих
Попутно нашел ошибку в оригинале
#value() { egrep -o " $1=[^ ]+" /proc/cmdline | cut -d= -f2; }
value() { egrep -o "(^| )$1=[^ ]+" /proc/cmdline | cut -d= -f2; } #sfs
Изящнее конечно было бы переделать в hook для mkinitcpio, но пока лень
Полученные initrd дистронезависимы. Сборка не в арче возможна (mkinitcpio - bash скрипт), но не тестировалась
Ядра с модулями.gz лучше распаковать (в mc удобно : поиск *.gz + выделить+f2 +распаковать ). pfs получится на треть меньше
Вживление в дистрибутив (http://forum.puppyrus.org/index.php/topic,15276.msg86443.html#msg86443)
140113 3. dracut методика сборки porteus-initrd в любом линукс:
3.1. Установить dracut (http://pkgs.org/search/?query=dracut&type=smart) в любой линукс
3.2. Скопировать модули нужного ядра в /lib/modules
3.3. porteus-d (в аттаче) ,где k=версия нужного ядра
3.4. в menu.lst : initrd /%d%/initrd.xz /%d%/полученный.xz . В grub2 и grub4dos можно слоить
initrd.xz - из аттача
Собрать 2->1: cat /%d%/полученный.xz /%d%/initrd.xz >/%d%/initrd2.xz
Передрал у Вас (http://forum.puppyrus.org/index.php/topic,15129.30.html)
dracut --force --xz --kernel-only -d " pata_acpi ata_generic ahci xhci-hcd iso9660 isofs ext4"
Это было осмысленно написано?
Кроме isofs и ext(причем 2) таких модулей ядра нет. Отрицательно на результат не влияет, но не лишнее ли?
и далее --filesystems "aufs squashfs vfat msdos ext4 isofs" - это не повтор...
Я добавил usbkbd (http://forum.puppyrus.org/index.php/topic,14190.msg86465.html#msg86465) - наверное и Вам надо
Т.е надо так?
dracut --force --xz --kernel-only -d " pata_acpi ata_generic ahci xhci-hcd iso9660 usbkbd" \
--filesystems "aufs squashfs vfat msdos ext4 isofs"
Модули я искал по имени в дефолтном юбунту ядре. Мне надо под любое ядро
Очень затейливо делаете
chroot не нужен
dracut надо было просто распаковать, чтобы зависимостями не парил
Да, сделайте Вы в PRA или дайте lib/modules - я Вам сделаю
Была проблема с загрузкой с флэшки. Частично решил
dracut --force --xz --kernel-only -d " pata_acpi ata_generic ahci xhci-hcd iso9660 usbkbd usb-storage " \
--filesystems "aufs squashfs vfat msdos ext4 isofs nls_utf8 nls_cp866" \
-v -M initrd-$k+.xz $k >dracut.log 2>&1
Все равно fat парит опцией монтирования utf8
Вывод - лучше юзать тюнингованные ядра. Проблем меньше, размер меньше.
Спасибо за помощь, Александр.
Я верю, что Вы нащупали решение, но пока все это зыбко.
Есть результат в PRA и в Porteus, но в них и без LF "все пучком".
А вот в Дебиан - увы. Остаются те самые мелочи, "в которых ..."
Получается вот такое:
1.
initrd /initrd.xz /initrd-3.2.0-4-686-pae+.xz
(как вариант: cat initrd-3.2.0-4-686-pae+.xz initrd.xz >initrd2.xz
initrd /initrd2.xz)
собрал ISO и загрузил.
в обоих случаях сообщения:
идет поиск файла porteus-v2.0-i486.sgn
устройство еще не готово? Ждем 6 сек
Модули дистрибутива не найдены ... ... ... (т.е. это уже из fatal)
2.
скопировал из нового initrd-3.2.0-4-686-pae+.xz usr/lib/dracut и usr/lib/modules в исходный initrd и запаковал снова.
собрал ISO и загрузил. Сообщения об ошибках:
no filesystem could mount root, tried:
kernel panic - no syncing: VFS: Unable to mount root fs ... ... ...
3.
содержимое моего ISO (по последнему варианту):
/initrd2.xz
/vmlinuz
/debian/base/01-port-wheezy-lf.xzm
... ... ...
####/debian/wheezy-i686.sgn
/debian/porteus-v2.0-i486.sgn
/isolinux/isolinux.cfg
по 1-му варианту:
LABEL PortDeb-Live
MENU LABEL TEST Portdeb LF
linux /vmlinuz
initrd /initrd.xz /initrd-3.2.0-4-686-pae+.xz
append dir=/debian sgnfile=/debian/porteus-v2.0-i486.sgn
LABEL PortDeb-Live
MENU LABEL 0 Always Fresh Portdeb LF base_only norootcopy
linux /vmlinuz
initrd /initrd.xz /initrd-3.2.0-4-686-pae+.xz
append nomagic base_only norootcopy dir=/debian sgnfile=/debian/porteus-v2.0-i486.sgn
по 2-му варианту:
LABEL PortDeb-Live
MENU LABEL TEST Portdeb LF
linux /vmlinuz
initrd /initrd2.xz
append dir=/debian sgnfile=/debian/wheezy-i686.sgn
LABEL PortDeb-Live
MENU LABEL 0 Always Fresh Portdeb LF base_only norootcopy
linux /vmlinuz
initrd /initrd2.xz
append nomagic base_only norootcopy dir=/debian sgnfile=/debian/wheezy-i686.sgn
У меня есть Дебиан,который собран как Дебиан, загружается под управлением vmlinuz и initrd (modified) Портеус и остается Дебиан'ом, но я не уверен, что такая модификация initrd будет успешной в другом семействе Линукс.
portdebian-wheezy-LXDE-sfs.iso 205.5 MB
http://yadi.sk/d/Mvrcqj1TGF3PB (http://yadi.sk/d/Mvrcqj1TGF3PB)
Дядя Шурик скомпилил (http://wiki.puppyrus.org/programming/busybox) статический busybox для pra. Спасибо+
Сейчас используется busybox от портеус + 2 прицепа моей компиляции с недостающим (что костыльно)
Т.е. никакого нового функционала. В идеале должен работать как старый
Из проблем - при загрузке с debug (http://wiki.puppyrus.org/soft/porteus-initrd#debug)
sh: can`t access tty; job control turned off
Вроде ничему не мешает
Нашел https://www.linux.org.ru/forum/general/6211553 setsid в busybox нет. Просто сделал sh 2>/dev/null
В аттаче так же конфиг
Скомпил https://aur.archlinux.org/packages/busybox-static-musl-git и просто со static в конфиге - размер в 3 раза больше
Но вроде не логчно, оно же путь ждет.
Смотри, выхлоп blkid: /dev/sda1: LABEL="SYSTEM" UUID="fab6e7ae-ea22-4786-851e-0d673bbf7e87" TYPE="ext3
Грепаем# grep /dev/sda1 /tmp/uuid.lst
/dev/sda1: LABEL="SYSTEM" UUID="fab6e7ae-ea22-4786-851e-0d673bbf7e87" TYPE="ext3"
# grep /dev/sda1 /tmp/uuid.lst | cut -f1 -d' '
/dev/sda1:
# grep "fab6e7ae-ea22-4786-851e-0d673bbf7e87" /tmp/uuid.lst | cut -f1 -d' '
/dev/sda1:
# grep UUID="fab6e7ae-ea22-4786-851e-0d673bbf7e87" /tmp/uuid.lst | cut -f1 -d' '
#
При правильно заданном значении в любом случае получаем /dev/sda1
Теперь логично?