Разница в выполнении init со встроенными и внешними initramfs?

Если вы хотите, чтобы «либо» стало пустым, попробуйте ИЛИ || ?

if [ -z "$var" ] || [ -z "$var1" ]

... Неужели это так просто?

10
01.03.2018, 01:42
1 ответ

Вам также может быть интересно узнать, как Buildroot 2018.02 решает эту проблему.

Всякий раз, когда вы используете initramfs(BR2_TARGET_ROOTFS_INITRAMFS=y)или initrd (BR2_TARGET_ROOTFS_CPIO=n), он добавляет следующее /initк вашим rootfshttps://github.com/buildroot/buildroot/blob/2018.02/fs/cpio/init

#!/bin/sh
# devtmpfs does not get automounted for initramfs
/bin/mount -t devtmpfs devtmpfs /dev
exec 0</dev/console
exec 1>/dev/console
exec 2>/dev/console
exec /sbin/init "$@"

Копия сделанаhttps://github.com/buildroot/buildroot/blob/2018.02/fs/cpio/cpio.mk:

# devtmpfs does not get automounted when initramfs is used.
# Add a pre-init script to mount it before running init
define ROOTFS_CPIO_ADD_INIT
    if [ ! -e $(TARGET_DIR)/init ]; then \
        $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \
    fi
endef

Также полезно знать, что путь инициализации /initдля initramfs, в отличие от /sbin/initв противном случае:Что может привести к тому, что передача init=/path/to/program в ядро ​​не запустит программу как init?

2
27.01.2020, 20:03

Теги

Похожие вопросы