Я пытаюсь создать встроенный Linux образ для встроенной системы, над которой я работаю.
Он использует Build root, и мы пытаемся установить в него пакеты generi c.
Это работает до того момента, когда я устанавливаю скрипт в каталог / etc / init.d / на целевом образе.
Чтобы встроить свое программное обеспечение в образ, я создал следующий make-файл, который был собран Build root.
. Он предназначен для копирования файла JAR в файловую систему с некоторыми дополнительными сценариями.
Я обнаружил, что сценарии, начинающиеся с буквы S, запускаются автоматически.
См .: https://buildroot.org/downloads/manual/manual.html#_init_system
define MY_GATEWAY_INSTALL_TARGET_CMDS
$(INSTALL) -d $(TARGET_DIR)/$(DST_FOLDER); \
$(INSTALL) -D -m 0644 $(@D)/*.jar $(TARGET_DIR)/$(DST_FOLDER); \
\
$(INSTALL) -D -m 0700 /work/package/mycompany/my-gateway/artifacts/start_heimdall $(TARGET_DIR)/$(DST_FOLDER); \
ln -snrf $(TARGET_DIR)/$(DST_FOLDER)/start_heimdall $(TARGET_DIR)/usr/bin/start_heimdall; \
\
$(INSTALL) -D -m 0755 /work/package/mycompany/my-gateway/artifacts/S99gateway $(TARGET_DIR)/$(DST_FOLDER); \
$(INSTALL) -D -m 0755 /work/package/mycompany/my-gateway/artifacts/S99gateway $(TARGET_DIR)/etc/init.d/S99gateway; \
\
if [[ "$(BR2_HSDP_GATEWAY_INCLUDE_VERSION_FILE)" == "y" ]]; then \
echo $(HEIMDALL_VERSION) > $(TARGET_DIR)/my_gw_version; \
fi
endef
После создания моего изображения я обнаружил, что файл JAR и скрипт start_heimdall правильно размещены в ожидаемом каталог.
Это не относится к сценарию S99gateway , который отсутствует в каталоге /etc/init.d/.
Поэтому мое приложение не запущено.
Целевой каталог встроенного изображения выглядит следующим образом:
ls -al $(TARGET)/usr/heimdall
total 19476
drwxr-xr-x 2 rick rick 4096 feb 28 08:43 .
drwxr-xr-x 8 rick rick 4096 feb 28 08:43 ..
-rw-r--r-- 1 rick rick 19924893 feb 28 08:40 heimdall-squidlink-1.0.0-1582809178-release.jar
-rwxr-xr-x 1 rick rick 362 feb 28 08:40 S99gateway
-rwx------ 1 rick rick 230 feb 28 08:40 start_heimdall
ls -al /etc/init.d
total 68
drwxr-xr-x 2 rick rick 4096 feb 28 08:43 .
drwxr-xr-x 14 rick rick 4096 feb 28 08:43 ..
-rwxr-xr-x 1 rick rick 423 dec 4 14:50 rcK
-rwxr-xr-x 1 rick rick 408 dec 4 14:50 rcS
-rwxr-x--- 1 rick rick 1295 aug 13 2014 S01logging
-rwxr-xr-x 1 rick rick 241 feb 28 08:19 S10mdev
-rwxr-x--- 1 rick rick 1708 nov 4 2016 S10modules
-rwxr-x--- 1 rick rick 396 mei 30 2016 S11led
-rwxr-x--- 1 rick rick 968 mrt 17 2015 S12automount
-rwxr-x--- 1 rick rick 397 apr 27 2015 S15hostname
-rwxr-xr-x 1 rick rick 1365 dec 4 14:50 S20urandom
-rwxr-x--- 1 rick rick 48 apr 22 2015 S40network
-rwxr-xr-x 1 rick rick 936 feb 28 08:40 S49ntp
-rwxr-xr-x 1 rick rick 4066 feb 28 08:31 S50dropbear
-rwxr-xr-x 1 rick rick 435 feb 28 08:41 S50stunnel
-rwxr-xr-x 1 rick rick 462 feb 28 08:31 S80dnsmasq
-rwxr-xr-x 1 rick rick 362 feb 28 08:40 S99gateway
Последняя строка показывает, что мой скрипт успешно скопирован в нужный каталог.
Когда я запускаю sh изображение на мое встроенное устройство и S SH в него, я вижу следующее:
ls -al /usr/heimdall
total 19468
drwxr-xr-x 2 root root 408 Feb 28 2020 .
drwxr-xr-x 8 root root 616 Feb 28 2020 ..
-rwxr-xr-x 1 root root 362 Feb 28 2020 S99gateway
-rw-r--r-- 1 root root 19924893 Feb 28 2020 heimdall-squidlink-1.0.0-1582809178-release.jar
-rwx------ 1 root root 230 Feb 28 2020 start_heimdall
ls -al /etc/init.d
total 56
drwxr-xr-x 2 root root 1128 Jan 17 22:12 .
drwx--x--x 14 root root 3088 Jan 17 22:12 ..
-rwxr-x--- 1 root root 1295 Aug 13 2014 S01logging
-rwxr-xr-x 1 root root 241 Feb 7 2020 S10mdev
-rwxr-x--- 1 root root 1708 Nov 4 2016 S10modules
-rwxr-x--- 1 root root 396 May 30 2016 S11led
-rwxr-x--- 1 root root 968 Mar 17 2015 S12automount
-rwxr-x--- 1 root root 397 Apr 27 2015 S15hostname
-rwxrwxr-x 1 root root 1365 Dec 4 2019 S20urandom
-rwxr-x--- 1 root root 48 Apr 22 2015 S40network
-rwxr-xr-x 1 root root 936 Jan 17 22:12 S49ntp
-rwxr-xr-x 1 root root 4066 Feb 7 2020 S50dropbear
-rwxr-xr-x 1 root root 435 Feb 7 2020 S50stunnel
-rwxr-xr-x 1 root root 462 Feb 7 2020 S80dnsmasq
-rwxrwxr-x 1 root root 423 Dec 4 2019 rcK
-rwxrwxr-x 1 root root 408 Dec 4 2019 rcS
В этом случае после перепрошивки сценарий S99 больше не существует.
Является ли / etc /init.d/ каталог защищен каким-то образом? Я пытаюсь понять, почему скрипта больше нет.
Важна ли правильность внутренней работы скрипта для процесса установки?