Страница 1 из 1
[Решено]Как происходит загрузка livecd
Добавлено: 31 янв 2018, 09:37
banzay242
возник вопрос Как происходит загрузка livecd?
интересная ситуация обновил Росу в systemd-nspawn -bD. все номуль, старое ядро удалилось 4.9.60. установилось новое 4.9.76.
если устанавливать систему то проблем нет, все чики пуки.
если грузимся в livecd то ядро грузится 4.9.60 ищет модули ядра а их уже нет в /lib/modules/ а их нет, есть 4.9.76. соответственно не работает команды типа dhclient -v говоит давай модуль ядра.
uname -r ядро 4.9.60, journalctr -b ядро 4.9.60
подозрение появилось что livecd грузится не через GRUB2. а через syslinux, /run/initramfs/live/isolinux/initrd0.img и /run/initramfs/live/isolinux/vmlinuz0 которые не обновились в systemd-nspawn.
можно ли тупо из директории /boot/ переименовть initrd-4.9.76-nrj-desktop-1rosa-i586.img и vmlinuz-4.9.76-nrj-desktop-1rosa-i586 соответственно?
или нужно устанавливать isolinux в /run/initramfs/live/isolinux/* или можно перегенерировать? типа syslinux -Ud /run/initramfs/live/isolinux/
в systemd-nspawn -bD папка /run/initramfs/live/isolinux/ отсутствует, только в livecd есть,
установить в распакованную папку syslinux?
Re: Как происходит загрузка livecd
Добавлено: 31 янв 2018, 11:49
Barmalei
livecd загружается в оперативную память. После выключения все теряется.
Re: Как происходит загрузка livecd
Добавлено: 31 янв 2018, 13:52
banzay242
это я понимаю, вот вопрос в syslinux и /boot/ одни и теже образы лежат? если так то можно скопировать с перемменованием в initdr0.img и в vmlinuz0
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 06:38
trs
banzay242 писал(а): 31 янв 2018, 09:37
можно ли тупо из директории /boot/ переименовть initrd-4.9.76-nrj-desktop-1rosa-i586.img и vmlinuz-4.9.76-nrj-desktop-1rosa-i586 соответственно?
Надо учесть, что при установке (обновлении) ядра и некоторых пакетов initrd пересобирается, а для возможности загрузки в Live образ должен содержать определённые модули. Для этого в chroot делал так:
Код: Выделить всё
# Временная конфигурация dracut
echo 'hostonly="no"' > /etc/dracut.conf.d/tmplive.conf
echo 'add_dracutmodules+=" dmsquash-live pollcdrom "' >> /etc/dracut.conf.d/tmplive.conf
echo 'omit_dracutmodules+=" aufs-mount "' >> /etc/dracut.conf.d/tmplive.conf
# Тут обновляем ядро
# ...
rm -f /boot/*old.img
rm /etc/dracut.conf.d/tmplive.conf
chmod +r /boot/initrd*
После чего можно копировать из chroot-каталога boot в isolinux
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 08:20
banzay242
как я понял загрузка livecd происходит через isolinux/, а загрузка установленной системы через grub2. при обновлении в chroot обновляется только система а isolinux/ загрузчик не обновляется, сейчас у меня именно такая ситуация.
поюзал две команды делают загрузчики, отсюда и вопрос можно поле этих команд использовать эти загрузчики в isolinux/, переименовывать их или нет, пожет просто в скрипте создания livecd прописать копирование загрузчиков и переименование в isolinux.cfg.
Код: Выделить всё
mkinitrd mkinitrd-dracut
# mkinitrd-dracut
No kernel found in /boot
usage: mkinitrd-dracut [--version] [--help] [-v] [-f] [--preload <module>]
[--image-version] [--with=<module>]
[--nocompress]
<initrd-image> <kernel-version>
(ex: mkinitrd-dracut /boot/initramfs-4.9.76-nrj-desktop-1rosa-i586.img 4.9.76-nrj-desktop-1rosa-i586)
Creating: target|kernel|dracut args|basicmodules
# mkinitrd
No kernel found in /boot
usage: mkinitrd [--version] [--help] [-v] [-f] [--preload <module>]
[--image-version] [--with=<module>]
[--nocompress]
<initrd-image> <kernel-version>
(ex: mkinitrd /boot/initramfs-4.9.76-nrj-desktop-1rosa-i586.img 4.9.76-nrj-desktop-1rosa-i586)
Creating: target|kernel|dracut args|basicmodules
можно ли по маске сразу грузить из /isolinux/ загрузчик из /boot/?
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 08:32
banzay242
trs писал(а): 01 фев 2018, 06:38
banzay242 писал(а): 31 янв 2018, 09:37
можно ли тупо из директории /boot/ переименовть initrd-4.9.76-nrj-desktop-1rosa-i586.img и vmlinuz-4.9.76-nrj-desktop-1rosa-i586 соответственно?
Надо учесть, что при установке (обновлении) ядра и некоторых пакетов initrd пересобирается, а для возможности загрузки в Live образ должен содержать определённые модули. Для этого в chroot делал так:
Код: Выделить всё
# Временная конфигурация dracut
echo 'hostonly="no"' > /etc/dracut.conf.d/tmplive.conf
echo 'add_dracutmodules+=" dmsquash-live pollcdrom "' >> /etc/dracut.conf.d/tmplive.conf
echo 'omit_dracutmodules+=" aufs-mount "' >> /etc/dracut.conf.d/tmplive.conf
# Тут обновляем ядро
# ...
rm -f /boot/*old.img
rm /etc/dracut.conf.d/tmplive.conf
chmod +r /boot/initrd*
После чего можно копировать из chroot-каталога boot в isolinux
если применить временный файл tmplive.conf
а потом dracut -f прокатит?
rm -f /boot/*old.img
rm /etc/dracut.conf.d/tmplive.conf
chmod +r /boot/initrd*
в /isolinux/есть файл vmlinuz0 его ведь тоже наверно надо копировать после обновления, или он не изменяется?
то бишь скриптик вот такой будет работать?
Код: Выделить всё
#!/bin/bash
echo готовим загрузчик для /syslinux/
touch /etc/dracut.conf.d/tmplive.conf
echo 'hostonly="no"' > /etc/dracut.conf.d/tmplive.conf
echo 'add_dracutmodules+=" dmsquash-live pollcdrom "' >> /etc/dracut.conf.d/tmplive.conf
echo 'omit_dracutmodules+=" aufs-mount "' >> /etc/dracut.conf.d/tmplive.conf
# Тут обновляем ядро
mkinitrd-dracut /boot/initramfs-4.9.76-nrj-desktop-1rosa-i586.img 4.9.76-nrj-desktop-1rosa-i586
rm -f /boot/*old.img
rm /etc/dracut.conf.d/tmplive.conf
chmod +r /boot/initrd*
echo можно копировать initrd в /syslinux/
echo после надо будет выполнить dracut -f наверное
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 09:02
trs
По-моему dracut -f можно выполнять вместо mkinitrd-dracut, указав версию ядра в параметре --kver
Но я не использую, т.к. dracut вызывается при обновлении ядра и так.
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 09:05
banzay242
какой файл сюда писать? initrd наверное для syslinux, а initramfs для grub?
initramfs initrd
initramfs-4.9.76-nrj-desktop-1rosa-i586.img
initrd-4.9.76-nrj-desktop-1rosa-i586.img
Благодарю! теории набрал теперь практикой займусь.
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 09:26
trs
initrd и initramfs это одно и тоже, просто разные названия.
А при копировании переименовать в initrd0.img
Код: Выделить всё
# Копируем ядро в стартовый каталог ISO
cp $SYSTEM_ROOT/boot/vmlinuz* $ISO_DIR/isolinux/vmlinuz0
cp $SYSTEM_ROOT/boot/initrd* $ISO_DIR/isolinux/initrd0.img
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 09:45
banzay242
Благодарю за пояснения в финишный скрипт копирование вставлю.
если временный файл dracut не удалять то ни чего не изменится? при загрузке эти модули будут подгружаться.
ну или dracut -fv чтобы посмотреть отключение.
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 09:57
trs
Если не удалить /etc/dracut.conf.d/tmplive.conf -- он будет перенесён в новую систему при установке и будет влиять на создаваемый там initrd (если не ошибаюсь, будут проблемы с загрузкой с жесткого диска).
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 10:07
banzay242
Благодарю! все понятьно.
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 11:27
banzay242
вы уверены что содержание файла tmplive.conf правильное?
Код: Выделить всё
hostonly="no"
add_dracutmodules+=" dmsquash-live pollcdrom "
omit_dracutmodules+=" aufs-mount "
aufs-mount такого модуля в /usr/lib/dracut/modules.d/ нет
вот листинг файла
Код: Выделить всё
ls /usr/lib/dracut/modules.d/
00bash/ 05busybox/ 90crypt/ 90qemu/ 95fcoe-uefi/ 95zfcp/ 98usrmount/
00bootchart/ 10i18n/ 90dm/ 90qemu-net/ 95fstab-sys/ 95zfcp_rules/ 99base/
00dash/ 30convertfs/ 90dmraid/ 91crypt-gpg/ 95iscsi/ 95znet/ 99fs-lib/
00systemd/ 40network/ 90dmsquash-live/ 91crypt-loop/ 95lunmask/ 96securityfs/ 99img-lib/
01fips/ 45ifcfg/ 90dmsquash-live-ntfs/ 91zipl/ 95nbd/ 97biosdevname/ 99shutdown/
01systemd-initrd/ 45url-lib/ 90kernel-modules/ 95cifs/ 95nfs/ 97masterkey/ 99uefi-lib/
02caps/ 50drm/ 90kernel-network-modules/ 95dasd/ 95resume/ 98dracut-systemd/ 99union-mount/
02fips-aesni/ 50gensplash/ 90livenet/ 95dasd_mod/ 95rootfs-block/ 98ecryptfs/
02systemd-networkd/ 50plymouth/ 90lvm/ 95dasd_rules/ 95ssh-client/ 98integrity/
03modsign/ 80cms/ 90mdraid/ 95dcssblk/ 95terminfo/ 98pollcdrom/
03rescue/ 80lvmmerge/ 90multipath/ 95debug/ 95udev-rules/ 98selinux/
04watchdog/ 90btrfs/ 90multipath-hostonly/ 95fcoe/ 95virtfs/ 98syslog/
add_dracutmodules+=" dmsquash-live pollcdrom " не раздельно модули пишутся? я синтаксиса тут не знаю
Код: Выделить всё
urpmi dracut-aufs
Package dracut-aufs-1.0-16-rosa2016.1.noarch is already installed
Marking dracut-aufs as manually installed, it won't be auto-orphaned
writing /var/lib/rpm/installed-through-deps.list
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 12:28
banzay242
вот вывод команды:
Код: Выделить всё
urpmf dracut-aufs
dracut-aufs:/usr/lib/dracut/modules.d/99union-mount
dracut-aufs:/usr/lib/dracut/modules.d/99union-mount/module-setup.sh
dracut-aufs:/usr/lib/dracut/modules.d/99union-mount/union-mount.sh
наверное вот так?
omit_dracutmodules+=" union-mount " ?
попробую вот так, как было не получилось.
Код: Выделить всё
touch /etc/dracut.conf.d/tmplive.conf
echo 'hostonly="no"' > /etc/dracut.conf.d/tmplive.conf
echo 'add_dracutmodules+=" dmsquash-live "' >> /etc/dracut.conf.d/tmplive.conf
echo 'add_dracutmodules+=" pollcdrom "' >> /etc/dracut.conf.d/tmplive.conf
echo 'omit_dracutmodules+=" union-mount "' >> /etc/dracut.conf.d/tmplive.conf
echo Тут обновляем ядро
dracut -fv /boot/initrd-4.9.76-nrj-desktop-1rosa-i586.img 4.9.76-nrj-desktop-1rosa-i586
rm -f /boot/*old.img
rm /etc/dracut.conf.d/tmplive.conf
chmod +r /boot/initrd*
Re: Как происходит загрузка livecd
Добавлено: 01 фев 2018, 12:53
banzay242
вместо omit add поставил на union-mount
вот выхлоп:
Код: Выделить всё
dracut: Executing: /usr/sbin/dracut -fv /boot/initrd-4.9.76-nrj-desktop-1rosa-i586.img 4.9.76-nrj-desktop-1rosa-i586
dracut: dracut module 'bootchart' will not be installed, because command '/sbin/bootchartd' could not be found!
dracut: dracut module 'busybox' will not be installed, because command 'busybox' could not be found!
dracut: dracut module 'multipath' will not be installed, because command 'multipath' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'dcbtool' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'fipvlan' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'lldpad' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'fcoemon' could not be found!
dracut: dracut module 'fcoe' will not be installed, because command 'fcoeadm' could not be found!
dracut: dracut module 'fcoe-uefi' will not be installed, because command 'dcbtool' could not be found!
dracut: dracut module 'fcoe-uefi' will not be installed, because command 'fipvlan' could not be found!
dracut: dracut module 'fcoe-uefi' will not be installed, because command 'lldpad' could not be found!
dracut: dracut module 'iscsi' will not be installed, because command 'iscsistart' could not be found!
dracut: dracut module 'iscsi' will not be installed, because command 'iscsi-iname' could not be found!
dracut: dracut module 'nbd' will not be installed, because command 'nbd-client' could not be found!
dracut: dracut module 'nfs' will not be installed, because command 'rpc.statd' could not be found!
dracut: dracut module 'nfs' will not be installed, because command 'mount.nfs' could not be found!
dracut: dracut module 'nfs' will not be installed, because command 'mount.nfs4' could not be found!
dracut: dracut module 'biosdevname' will not be installed, because command 'biosdevname' could not be found!
mknod: '/var/tmp/dracut.KIJuBI/initramfs/dev/kmsg': Operation not permitted
mknod: '/var/tmp/dracut.KIJuBI/initramfs/dev/console': Operation not permitted
dracut: *** Including module: bash ***
dracut: *** Including module: dash ***
dracut: *** Including module: systemd ***
dracut: *** Including module: systemd-initrd ***
dracut: *** Including module: modsign ***
dracut: *** Including module: i18n ***
dracut: *** Including module: network ***
dracut: *** Including module: ifcfg ***
dracut: *** Including module: drm ***
dracut: *** Including module: plymouth ***
dracut: *** Including module: btrfs ***
dracut: *** Including module: crypt ***
dracut: *** Including module: dm ***
dracut: Skipping udev rule: 64-device-mapper.rules
dracut: Skipping udev rule: 60-persistent-storage-dm.rules
dracut: Skipping udev rule: 55-dm.rules
dracut: *** Including module: dmraid ***
dracut: *** Including module: dmsquash-live ***
dracut: *** Including module: kernel-modules ***
dracut: *** Including module: kernel-network-modules ***
dracut: *** Including module: lvm ***
dracut: Skipping udev rule: 64-device-mapper.rules
dracut: Skipping udev rule: 56-lvm.rules
dracut: Skipping udev rule: 60-persistent-storage-lvm.rules
dracut: *** Including module: mdraid ***
dracut: Skipping udev rule: 64-md-raid.rules
dracut: *** Including module: qemu ***
dracut: *** Including module: qemu-net ***
dracut: *** Including module: cifs ***
dracut: *** Including module: lunmask ***
dracut: *** Including module: resume ***
dracut: *** Including module: rootfs-block ***
dracut: *** Including module: terminfo ***
dracut: *** Including module: udev-rules ***
dracut: Skipping udev rule: 40-redhat.rules
dracut: Skipping udev rule: 50-firmware.rules
dracut: Skipping udev rule: 50-udev.rules
dracut: Skipping udev rule: 91-permissions.rules
dracut: Skipping udev rule: 80-drivers-modprobe.rules
dracut: *** Including module: dracut-systemd ***
dracut: *** Including module: pollcdrom ***
dracut: *** Including module: usrmount ***
dracut: *** Including module: base ***
dracut: *** Including module: fs-lib ***
dracut: *** Including module: img-lib ***
dracut: *** Including module: shutdown ***
dracut: *** Including module: union-mount ***
dracut: *** Including modules done ***
dracut: *** Installing kernel module dependencies ***
dracut: *** Installing kernel module dependencies done ***
dracut: *** Resolving executable dependencies ***
dracut: *** Resolving executable dependencies done***
dracut: *** Generating early-microcode cpio image ***
dracut: *** Constructing AuthenticAMD.bin ****
dracut: *** Constructing GenuineIntel.bin ****
dracut: *** Store current command line parameters ***
dracut: *** Creating image file '/boot/initrd-4.9.76-nrj-desktop-1rosa-i586.img' ***
dracut: *** Creating initramfs image file '/boot/initrd-4.9.76-nrj-desktop-1rosa-i586.img' done ***
Re: Как происходит загрузка livecd
Добавлено: 02 фев 2018, 05:43
trs
banzay242 писал(а): 01 фев 2018, 11:27
aufs-mount такого модуля в /usr/lib/dracut/modules.d/ нет
omit_dracutmodules означает, что данный модуль должен быть исключён. Если его нет, он тем более не будет добавлен в initrd. Так что не страшно.
banzay242 писал(а): 01 фев 2018, 11:27
add_dracutmodules+=" dmsquash-live pollcdrom " не раздельно модули пишутся? я синтаксиса тут не знаю
Наименования модулей разделяются пробелами, и перед кавычками тоже пробелы ставят (не знаю, обязательны ли они в нынешних версиях dracut).
Мой скрипт
https://abf.io/st/rosa-pad/blob/master/rebuild_iso.sh
В оригинале образ создаётся при помощи livecd-tools, как формируется конфиг дракута -- см. пакет python-imgcreate файл live.py функцию __write_dracut_conf
add_dracutmodules я оттуда и взял.
Re: Как происходит загрузка livecd
Добавлено: 02 фев 2018, 06:38
banzay242
Я похоже по тому пути иду по которому вы уже проходили,
с этим initrd я уже второй раз на теже грабли наступаю, до этого тему создавал про choot, сейчас только ясность появилось.
скрипт надо создать для создания нормального initrd0 для /syslinux/, буду думать, информация появилась надо обкатать.
Благодарю за помощь! ваш скрипт запустил, вылазят костыли, выложу.
Re: Как происходит загрузка livecd
Добавлено: 05 фев 2018, 09:31
banzay242
Алгоритм действий у меня такой:
и не выходит.
захожу в chroot
удаляю task-lxqt
провожу обновление
устанавливаю task-mate
делаю изменение в sddm.cons
делаю изменение в os-realise
меняю название смонтированного chroot через blkid -L
меняю в isolinux.cfg как в blkid -L
применяю временную конфигурацию dracut
копирую с переименованием в syslinux/ initrd0.img vmlinuz0
востанавливаю chroot dracut -fv
собираю iso xorriso -as mkisofs \
-
-V ___________ \ как в isolinux.cfg
в результате root=live:CDLABEL= неправильный не загружается.
чрут в норме как узнать или задать правильный root=live:CDLABEL= в isolinux.cfg чтоб загружалось
это стандартная строка
abel linux0
menu label Start ROSA Desktop Fresh R10
kernel vmlinuz0
append initrd=initrd0.img root=live:CDLABEL=ROSA.FRESH.MATE.R10.i586 rootfstype=auto ro rd.live.image quiet rd.live.overlay.size=256 rootflags=rw,noatime rd.luks=0 rd.md=0 rd.dm=0 rhgb splash=silent logo.nologo
а вот так можно поменять?
root=live:CDLABEL=*
или
root=UUID="b3d12fc8-5261-4a23-a8dd-10a3a83905cf"
Re: Как происходит загрузка livecd
Добавлено: 05 фев 2018, 11:50
keleg
У нас ВКонтакте Владимир Пенчиков такие диски с крыской создает, можно у него проконсультироваться.
Re: Как происходит загрузка livecd
Добавлено: 05 фев 2018, 13:04
banzay242
проконсультировался, он с новым ядром не собирает, у него та же проблема что и у меня
кто нибудь может тольково ответить что с root=live:CDLABEL=ROSA.FRESH.MATE.R10.i586
isolinux не понимает новый initrd0 CDLABEL=ROSA.FRESH.MATE.R10.i586
хотя при сборке -V ROSA.FRESH.MATE.R10.i586 \
Re: Как происходит загрузка livecd
Добавлено: 06 фев 2018, 12:36
banzay242
поменял строчку на такую echo 'omit_dracutmodules+=" union-mount "' >> /etc/dracut.conf.d/tmplive.conf
urpmf dracut-aufs
dracut-aufs:/usr/lib/dracut/modules.d/99union-mount
dracut-aufs:/usr/lib/dracut/modules.d/99union-mount/module-setup.sh
dracut-aufs:/usr/lib/dracut/modules.d/99union-mount/union-mount.sh
Загрузился с новым ядром ура.
Благодарю всем кто участвовал!