LINUX.ORG.RU
ФорумAdmin

Исследовать initrd

 ,


0

1

Допустим я взял initrd с некоего live-образа и распаковал его, смотрю - файловая система, systemd, как мне узнать при монтировании этого initrd в какой последовательности юниты запустятся. Ну я могу конечно глянуть на что указывает симплинк /etc/systemd/system/default.target, а потом последовательно просмотреть директивы After и Before во всех юнитах, коих там до сотни, но есть ли более быстрый способ?

★★★★★

Загрузиться в него при отсутствующем носителе с которого был взят initrd, тебя выбросит в emergency shell когда systemd не сможет смонтировать реальный корень. Оттуда уже можно запускать systemd-analyze и прочие интересные команды.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от sunny1983

в хелпе пишут, что можно ещё так

     --root=PATH         Enable/disable/mask unit files in the specified root
                         directory

Только ты учти что симлинки «распакованного» systemd/etc будут вести на твой локальный systemd, посему лучше chroot

sparks ★★★
()
Ответ на: комментарий от sparks

Перед чрутом биндить /proc, /sys и /dev нужно как обычно?

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от eternal_sorrow

systemd-analyze там нет, набрал «systemctl list-dependencies default.target» выдало такое:

default.target
● ├─dev-root.device
● ├─dracut-cmdline-ask.service
● ├─dracut-cmdline.service
● ├─dracut-initqueue.service
● ├─dracut-mount.service
● ├─dracut-pre-mount.service
● ├─dracut-pre-pivot.service
● ├─dracut-pre-trigger.service
● ├─dracut-pre-udev.service
● ├─initrd-parse-etc.service
● ├─basic.target
● │ ├─iscsid.service
● │ ├─iscsiuio.service
● │ ├─paths.target
● │ ├─slices.target
● │ │ ├─-.slice
● │ │ └─system.slice
● │ ├─sockets.target
● │ │ ├─iscsid.socket
● │ │ ├─iscsiuio.socket
● │ │ ├─systemd-journald-dev-log.socket
● │ │ ├─systemd-journald.socket
● │ │ ├─systemd-udevd-control.socket
● │ │ └─systemd-udevd-kernel.socket
● │ ├─sysinit.target
● │ │ ├─kmod-static-nodes.service
● │ │ ├─multipathd-configure.service
● │ │ ├─multipathd.service
● │ │ ├─plymouth-start.service
● │ │ ├─rngd.service
● │ │ ├─systemd-ask-password-console.path
● │ │ ├─systemd-journald.service
● │ │ ├─systemd-modules-load.service
● │ │ ├─systemd-sysctl.service
● │ │ ├─systemd-tmpfiles-setup-dev.service
● │ │ ├─systemd-tmpfiles-setup.service
● │ │ ├─systemd-udev-trigger.service
● │ │ ├─systemd-udevd.service
● │ │ ├─cryptsetup.target
● │ │ ├─local-fs.target
● │ │ └─swap.target
● │ └─timers.target
● ├─initrd-fs.target
● ├─initrd-root-device.target
● └─initrd-root-fs.target
Теперь бы понять какой из этих юнитов должен запускать команду, монтирующую лайв

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

systemd-analyze там нет

Смонтируй устройство на котором он есть и запускай оттуда, что как маленький.

Теперь бы понять какой из этих юнитов должен запускать команду, монтирующую лайв

Судя по всему его там нет. Он должен был сгенерироваться автоматически и попасть в initrd-root-fs.target, но этого не произошло так как нужный параметр не был передан.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Судя по всему его там нет. Он должен был сгенерироваться автоматически и попасть в initrd-root-fs.target, но этого не произошло так как нужный параметр не был передан.

Ты что-то знаешь о systemd, чего не знаю я. Можешь объяснить как это через параметр?

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

Скорее всего через параметр ядра. Но я не знаю точно как. Посмотри что в {/usr,}/lib/systemd/system-generators/.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от sunny1983

Кстати, вместо загрузки можно попробовать сделать systemd-nspawn в распакованный образ initrd.

eternal_sorrow ★★★★★
()

Ох, простите, не могу удержаться. Но какой интересный вопрос ТС задал и как в очередной раз оказывается, что systemd «прозрачный» и «немонолитный», а bash-портянки это «ужасный ужас».

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.