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

Автор Тема: Initrd PRA-Porteus  (Прочитано 25131 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #30 : 25 Декабрь 2013, 09:34:36 »
Я тоже. Если использовать copy2ram - это оптимально. Нацеленность именно на такой вариант

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #31 : 11 Январь 2014, 14:58:07 »
Доработал porteus-initrd для работы с любым AUFS ядром. Пример Добавил в начало
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 можно скомпилить, вдохновясь
      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 получится на треть меньше
Вживление в дистрибутив

140113 3. dracut методика сборки porteus-initrd в любом линукс:
3.1. Установить dracut в любой линукс
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
« Последнее редактирование: 29 Март 2016, 17:53:50 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #32 : 14 Январь 2014, 09:15:22 »
Дописал выше постом: dracut методика сборки porteus-initrd в любом линукс
Результат тестировал только в virtualbox. Bозможно придется добавить модулей в список porteus-p
Уже менее костыльно и оптимизированее по размеру. Т.е. initrd.xz - неизменен и универсален

Спасибо neobht за то, что вдохновлял

140114
Протестировал dracut-multi-initrd (вариант 3). В режиме debug на ноуте не работала внешняя usk клава. Добавил модуль ядра usbkbd. porteus-d перезалил. Теперь ок

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #33 : 18 Январь 2014, 10:11:29 »
Передрал у Вас
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 - наверное и Вам надо
« Последнее редактирование: 18 Январь 2014, 10:15:10 от sfs »

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 943
  • Репутация: +14/-0
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #34 : 18 Январь 2014, 10:24:22 »
это повтор. Просто забыл удалить.

другие модули ядра у нас есть.
возможно, у вас они в ядре. Это модули поддержки жестких дисков и USB3 в частности.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #35 : 18 Январь 2014, 10:29:20 »
Т.е надо так?
dracut --force --xz --kernel-only -d " pata_acpi ata_generic ahci xhci-hcd iso9660 usbkbd" \
        --filesystems "aufs squashfs vfat msdos ext4 isofs"
Модули я искал по имени в дефолтном юбунту ядре. Мне надо под любое ядро

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 943
  • Репутация: +14/-0
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #36 : 18 Январь 2014, 10:38:40 »
Т.е надо так?
dracut --force --xz --kernel-only -d " pata_acpi ata_generic ahci xhci-hcd iso9660 usbkbd" \
        --filesystems "aufs squashfs vfat msdos ext4 isofs"
Модули я искал по имени в дефолтном юбунту ядре. Мне надо под любое ядро

Да. Ну и файловые системы какие могут быть нужны: btrfs, ntfs

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #37 : 18 Январь 2014, 11:43:16 »
btrfs - в портеусе не было - это уже отдельно
ntfs в портеус-инитрд монтируется внутренней ntfs-3g

Оффлайн sklimkin

  • Пользователь
  • **
  • Сообщений: 78
  • Репутация: +4/-0
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #38 : 19 Январь 2014, 18:41:17 »
Все делал в chroot-среде с уже установленным и тестированным debian-wheezy
Цитировать
140113 3. dracut методика сборки porteus-initrd в любом линукс:
Цитировать
3.1. Установить dracut в любой линукс
dpkg -i dracut_020-2_all_wheezy.deb
это потребовало удалиь initramfs-tools
следом были удалены linux-image-3.2.0-4-686-pae и vmlinuz-3.2.0-4-686-pae
т.е. /boot оказался пустым
далее сообщение: надо установить module-init-tools а к нему kpartx
установил, после этого установился dracut
Цитировать
3.2. Скопировать модули нужного ядра в /lib/modules
скопировал
Цитировать
3.3. porteus-d (в аттаче) ,где k=версия нужного ядра
команда из терминала (porteus-d распаковал в корень системы):
./porteus-d 3.2.0-4-686-pae
drakut естественно не находит ни initrd.img ни vmlinuz
копирую их в /boot из сохраненного архива и повторяю:
./porteus-d 3.2.0-4-686-pae
dracut уменьшил размер Дебиановского initrd.img с 11 до 7 MB
получаю только dracut.log в котором последняя строка:
F: installkernel failed in module kernel-modules

Вот была бы развлекуха, если бы я все это (установку dracut) проделал на HOST-машине, а не в chroot

dpkg -i dracut_020-2_all_wheezy.deb
Selecting previously unselected package dracut.
dpkg: regarding dracut_020-2_all_wheezy.deb containing dracut:
 dracut conflicts with initramfs-tools
  initramfs-tools (version 0.109.1) is present and installed.
dpkg: error processing dracut_020-2_all_wheezy.deb (--install):

root@ubuntu:/# apt-get purge initramfs-tools
The following packages will be REMOVED:
  initramfs-tools* linux-image-3.2.0-4-686-pae*
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 82.4 MB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 50876 files and directories currently installed.)
Removing linux-image-3.2.0-4-686-pae ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-4-686-pae /boot/vmlinuz-3.2.0-4-686-pae
update-initramfs: Deleting /boot/initrd.img-3.2.0-4-686-pae
The link /vmlinuz is a damaged link
Removing symbolic link vmlinuz
You may need to re-run your boot loader
The link /initrd.img is a damaged link
Removing symbolic link initrd.img
You may need to re-run your boot loader
Purging configuration files for linux-image-3.2.0-4-686-pae ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-4-686-pae /boot/vmlinuz-3.2.0-4-686-pae
rmdir: failed to remove `/lib/modules/3.2.0-4-686-pae': Directory not empty
Removing initramfs-tools ...
Purging configuration files for initramfs-tools ...

dpkg -i dracut_020-2_all_wheezy.deb
 dracut depends on kpartx; however:
  Package kpartx is not installed.
dpkg: error processing dracut (--install):

apt-get install module-init-tools
Package module-init-tools is not available, but is referred to by another package.
However the following packages replace it:
  kmod
E: Package 'module-init-tools' has no installation candidate

root@ubuntu:/# apt-get update                  

apt-get install module-init-tools
The following packages have unmet dependencies:
 dracut : Depends: kpartx but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

apt-get -f install
Setting up module-init-tools (9-3) ...
Setting up kpartx (0.4.9+git0.4dfdaf2b-7~deb7u2) ...
Setting up dracut (020-2) ...

./porteus-d 3.2.0-4-686-pae
====copy to /boot vmlinuz-3.2.0-4-686-pae & initrd.img-3.2.0-4-686-pae
then retry install dracut====
dpkg -i dracut_020-2_all_wheezy.deb
(Reading database ... 47318 files and directories currently installed.)
Preparing to replace dracut 020-2 (using dracut_020-2_all_wheezy.deb) ...
Unpacking replacement dracut ...
Setting up dracut (020-2) ...
dracut: Generating /boot/initrd.img-3.2.0-4-686-pae
E: Directories consolefonts, consoletrans, keymaps not found.  Please inform us about the issue including your OS name and version.
cм. log в attachment

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #39 : 19 Январь 2014, 19:54:31 »
Очень затейливо делаете
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
Вывод - лучше юзать тюнингованные ядра. Проблем меньше, размер меньше.

Оффлайн sklimkin

  • Пользователь
  • **
  • Сообщений: 78
  • Репутация: +4/-0
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #40 : 19 Январь 2014, 21:45:24 »
Цитировать
Очень затейливо делаете
В чем затейливость? В том, что я целевую систему модифицирую по Вашему рецепту из chroot, и только потом собираю в ISO-образ?
Цитировать
chroot не нужен
"скрипач не нужен" - к/ф Кин-Дза-Дза
Что так, а мне в нем спокойно и привычно - это не аргумент?
Цитировать
dracut надо было просто распаковать, чтобы зависимостями не парил
Так ведь я читаю не по диагонали:
3.1. Установить dracut в любой линукс
Вот и устанавливал. Это для "чистоты эксперимента".
Цитировать
Да, сделайте Вы в PRA или дайте lib/modules - я Вам сделаю
Ну Дебиан у меня, и делать надо в нем и для него.
Согласитесь, что на PRA Линуксы не заканчиваются.
Мы же сейчас говорим о методике сборки "в любом Линукс"
Если я правильно понял, то lib/modules надо из initrd.img-3.2.0-4-686-pae
сделайте пожалуйста, может тогда прояснится - выкладываю:
http://yadi.sk/d/tU2SM8mEGMUTY   modules.tar.gz 7,9 МБ
Цитировать
Вывод - лучше юзать тюнингованные ядра
Моя не понимать "тюнингованные ядра"
« Последнее редактирование: 19 Январь 2014, 21:46:57 от sklimkin »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #41 : 20 Январь 2014, 09:45:56 »
chroot ... Что так, а мне в нем спокойно и привычно - это не аргумент?
chroot - необязателен. Все (ну или LF) манипуляции со сборкой ядра (кросскомпиляция) и инитрд можно делать в любом линуксе
Так ведь я читаю не по диагонали:
Вы переоцениваете уровень моих мануалов.  :)
Согласитесь, что на PRA Линуксы не заканчиваются.
Соглашусь. Но я писал и делал под ним. Чтобы адаптировать по другие дистры - правильный путь :
1. повторить эксперимент , получить результат в PRA
2. повторить эксперимент в другом дистре, описать отличия
Мы же сейчас говорим о методике сборки "в любом Линукс"
Если я правильно понял, то lib/modules надо из initrd.img-3.2.0-4-686-pae
Хотелось бы под любой
Подумал - пожалуй можно без дракут. Уже понятно, что он делает. Можно это скриптом
сделайте пожалуйста
ок
Моя не понимать "тюнингованные ядра"
Специально скомпиленные (PR(A), porteus) , работающие без либ ядра в инитрд

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #42 : 22 Январь 2014, 15:23:50 »
дайте lib/modules - я Вам сделаю
Если я правильно понял, то lib/modules надо из initrd.img-3.2.0-4-686-pae
сделайте пожалуйста, может тогда прояснится
В аттаче

Оффлайн sklimkin

  • Пользователь
  • **
  • Сообщений: 78
  • Репутация: +4/-0
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #43 : 23 Январь 2014, 18:09:11 »
Спасибо за помощь, Александр.
Я верю, что Вы нащупали решение, но пока все это зыбко.
Есть результат в 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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 17495
  • Репутация: +137/-0
    • PuppyRus-A
Re:Эксперименты c Live (Initrd) из Porteus
« Ответ #44 : 23 Январь 2014, 20:33:24 »
portdebian-wheezy-LXDE-sfs.iso - не зайти под q 111111
Похоже depmod не сделан
Завтра подробнее