This service is available only in Japanese-language.

yoctoでのSystemdで起動するデーモンのカスタマイズ方法

はじめまして、渡辺と申します。
NXP社製SoCのiMX6Soloとyoctoを用いてLinuxボードを開発しています。

yoctoでNXP社製のレシピを用いてLinuxの起動イメージを作成し、SDカードに書き込んでボードを起動させました。
その結果、ブートローダ、カーネルの起動は成功してSystemdでのデーモン起動まで行くのですが、途中で停止する状況です。
停止の原因の切り分けを行いたいため、yoctoでSystemdで起動するデーモンをカスタマイズしたいのですが、どのようにすればよいでしょうか?

よろしくお願いします。

■補足
・yoctoでのrootfsの生成とカーネル生成、SDカードイメージの作成、SDKの作成は成功しています。
・メモリチップをリファレンスボードから変更しているため、yoctoとは別のツリーでブートローダへメモリコントローラの設定を変更し、yoctoで生成したSDKを用いてビルドしています。
・U-bootでのメモリストレステストでエラーが出ない事は確認済みです。
・デバイスツリーはボードの実態に合わせてカスタマイズし、yoctoでカーネルと一緒にビルドしていますが正しい自信はありません
・yoctoでのイメージ作成に用いたコマンドは以下の通りです。
$ DISTRO=fsl-imx-wayland MACHINE=imx6solosabresd source fsl-setup-release.sh –b build-wayland_imx6
$ bitbake fsl-image-qt5-validation-imx

・以下に起動ログを添付します。

U-Boot 2017.03-00886-gb76bb1b (Oct 23 2020 - 13:47:36 +0900)

CPU: Freescale i.MX6SOLO rev1.3 996 MHz (running at 792 MHz)
CPU: Commercial temperature grade (0C to 95C) at 29C
Reset cause: POR
Model: Freescale i.MX6 DualLite SABRE Smart Device Board
Board: MX6-SabreSD
DRAM: 1 GiB
PMIC: PFUZE100! DEV_ID=0x10 REV_ID=0x21
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
switch to partitions #0, OK
mmc1 is current device
Net: No ethernet found.
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
reading boot.scr
** Unable to read file boot.scr **
reading zImage
6051656 bytes read in 297 ms (19.4 MiB/s)
Booting from mmc ...
reading imx6dl-sabresd.dtb
49619 bytes read in 27 ms (1.8 MiB/s)
Kernel image @ 0x12000000 [ 0x000000 - 0x5c5748 ]
## Flattened Device Tree blob at 18000000
Booting using the fdt blob at 0x18000000
Using Device Tree in place at 18000000, end 1800f1d2
switch to ldo_bypass mode!

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.9.88-imx_4.9.88_2.0.0_ga+g5e23f9d (oe-user@oe-host) (gcc version 7.3.0 (GCC) ) #1 SMP PREEMPT Thu Oct 22 11:00:46 JST 2020
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt:Machine model: TechnoLink TL0365 iMX6S HDMI Viewer Board
Reserved memory: created CMA memory pool at 0x3c000000, size 320 MiB
OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
Memory policy: Data cache writeback
CPU: All CPU(s) started in SVC mode.
percpu: Embedded 13 pages/cpu @ab71a000 s21900 r8192 d23156 u53248
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260096
Kernel command line: console=ttymxc0,115200 nosmp root=/dev/mmcblk2p2 rootwait rw
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 697864K/1048576K available (8192K kernel code, 339K rwdata, 2576K rodata, 1024K init, 442K bss, 23032K reserved, 327680K cma-reserved, 0K highmem)
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
vmalloc : 0xc0800000 - 0xff800000 (1008 MB)
lowmem : 0x80000000 - 0xc0000000 (1024 MB)
pkmap : 0x7fe00000 - 0x80000000 ( 2 MB)
modules : 0x7f000000 - 0x7fe00000 ( 14 MB)
.text : 0x80008000 - 0x80900000 (9184 kB)
.init : 0x80c00000 - 0x80d00000 (1024 kB)
.data : 0x80d00000 - 0x80d54fa0 ( 340 kB)
.bss : 0x80d56000 - 0x80dc48c4 ( 443 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
Preemptible hierarchical RCU implementation.
Build-time adjustment of leaf fanout to 32.
RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=2
NR_IRQS:16 nr_irqs:16 16
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 16 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 16 ways, 512 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76450001
Switching to timer-based delay loop, resolution 333ns
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 637086815595 ns
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 6.00 BogoMIPS (lpj=30000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x10100000 - 0x10100058
Brought up 1 CPUs
SMP: Total of 1 processors activated (6.00 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 512 (order: 3, 32768 bytes)
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
cpuidle: using governor menu
CPU identified as i.MX6DL, silicon rev 1.3
vddarm: bypassed regulator has no supply!
vddarm: failed to get the current voltage(-517)
vddsoc: bypassed regulator has no supply!
vddsoc: failed to get the current voltage(-517)
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
imx6dl-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
imx-gpc 20dc000.gpc: pu regulator not ready, retry
mxs-dma 110000.dma-apbh: initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
2000000.aips-bus:usbphy_nop1 supply vcc not found, using dummy regulator
2000000.aips-bus:usbphy_nop2 supply vcc not found, using dummy regulator
i2c i2c-0: IMX I2C adapter registered
i2c i2c-0: can't use DMA, using PIO instead.
i2c i2c-1: IMX I2C adapter registered
i2c i2c-1: can't use DMA, using PIO instead.
i2c i2c-2: IMX I2C adapter registered
i2c i2c-2: can't use DMA, using PIO instead.
Linux video capture interface: v2.00
imx-ipuv3 2400000.ipu: IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
MIPI CSI2 driver module loaded
imx rpmsg driver is registered.
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource mxc_timer1
VFS: Disk quotas dquot_6.6.0
VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 2, 16384 bytes)
UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
Bus freq driver module loaded
workingset: timestamp_bits=30 max_order=18 bucket_order=0
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
jffs2: version 2.2. (NAND) c 2001-2006 Red Hat, Inc.
fuse init (API version 7.26)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
imx-weim 21b8000.weim: Driver registered.
backlight supply power not found, using dummy regulator
mxc_sdc_fb fb@0: registered mxc display driver ldb
imx-ipuv3 2400000.ipu: IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)
Console: switching to colour frame buffer device 128x48
mxc_hdmi 20e0000.hdmi_video: Detected HDMI controller 0x13:0x1a:0xa0:0xc1
fbcvt: 1920x1080@60: CVT Name - 2.073M9
mxc_sdc_fb fb@1: registered mxc display driver hdmi
mxc_sdc_fb fb@3: registered mxc display driver ldb
mxc_sdc_fb fb@3: ipu0-di0 already in use
mxc_sdc_fb: probe of fb@3 failed with error -16
imx-sdma 20ec000.sdma: no iram assigned, using external mem
imx-sdma 20ec000.sdma: loaded firmware 3.3
pfuze100-regulator 1-0008: Full layer: 2, Metal layer: 1
pfuze100-regulator 1-0008: FAB: 0, FIN: 0
pfuze100-regulator 1-0008: pfuze100 found.
vddpu: supplied by SW1C
usb_otg_vbus: supplied by SWBST
usb_h1_vbus: supplied by SWBST
2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 26, base_baud = 5000000) is a IMX
console [ttymxc0] enabled
21ec000.serial: ttymxc2 at MMIO 0x21ec000 (irq = 71, base_baud = 5000000) is a IMX
imx sema4 driver is registered.
[drm] Initialized
[drm] Initialized vivante 1.0.0 20120216 on minor 0
brd: module loaded
loop: module loaded
m25p80 spi0.0: unrecognized JEDEC id bytes: 00, 00, 00
spi_imx 2008000.ecspi: probed
HSI/SSI char device loaded
libphy: Fixed MDIO Bus: probed
usbcore: registered new interface driver kaweth
pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver
usbcore: registered new interface driver pegasus
usbcore: registered new interface driver rtl8150
usbcore: registered new interface driver r8152
usbcore: registered new interface driver asix
usbcore: registered new interface driver ax88179_178a
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver cdc_eem
usbcore: registered new interface driver net1080
usbcore: registered new interface driver cdc_ncm
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-mxc: Freescale On-Chip EHCI Host driver
usbcore: registered new interface driver usb_ehset_test
2184800.usbmisc supply vbus-wakeup not found, using dummy regulator
ci_hdrc ci_hdrc.1: EHCI Host Controller
ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
mousedev: PS/2 mouse device common for all mice
snvs_rtc 20cc000.snvs:snvs-rtc-lp: rtc core: registered 20cc000.snvs:snvs-r as rtc0
i2c /dev entries driver
mxc_v4l2_output v4l2_out: V4L2 device registered as video16
mxc_v4l2_output v4l2_out: V4L2 device registered as video17
mxc_v4l2_output v4l2_out: V4L2 device registered as video18
imx2-wdt 20c0000.wdog: timeout 60 sec (nowayout=0)
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
sdhci-esdhc-imx 2194000.usdhc: Got CD GPIO
sdhci-esdhc-imx 2194000.usdhc: Got WP GPIO
mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
sdhci-esdhc-imx 2198000.usdhc: Got CD GPIO
sdhci-esdhc-imx 2198000.usdhc: Got WP GPIO
mmc2: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
mmc2: new high speed SDHC card at address 5048
mmc3: SDHCI controller on 219c000.usdhc [219c000.usdhc] using ADMA
mxc_vdoa 21e4000.vdoa: i.MX Video Data Order Adapter(VDOA) driver probed
mmcblk2: mmc2:5048 Y016L 14.5 GiB
mxc_hdmi_cec soc:hdmi_cec@00120000: HDMI CEC initialized
caam 2100000.caam: ERA source: CAAMVID.
caam 2100000.caam: AXI pipeline throttling enabled.
mmcblk2: p1 p2
caam 2100000.caam: device ID = 0x0a16010000000100 (Era 4)
job rings = 2, qi = 0
caam_jr 2101000.jr0: Entropy delay = 3200
caam_jr 2101000.jr0: Instantiated RNG4 SH0.
caam_jr 2101000.jr0: Instantiated RNG4 SH1.
mmc3: new DDR MMC card at address 0001
caam algorithms registered in /proc/crypto
mmcblk3: mmc3:0001 008GB0 7.28 GiB
caam_jr 2101000.jr0: registering rng-caam
platform caam_sm: blkkey_ex: 4 keystore units available
mmcblk3boot0: mmc3:0001 008GB0 partition 1 8.00 MiB
~中略~
caam-snvs 20cc000.caam-snvs: can't get snvs clock
caam-snvs 20cc000.caam-snvs: violation handlers armed - non-secure state
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
fsl-ssi-dai 202c000.ssi: No cache defaults, reading back from HW
imx-audio-hdmi sound-hdmi: hdmi-hifi.0 <-> soc:hdmi_audio@00120000 mapping ok
NET: Registered protocol family 26
NET: Registered protocol family 10
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
8021q: 802.1Q VLAN Support v1.8
Key type dns_resolver registered
cpu cpu0: regulators not ready, retry
vddarm: supplied by SW1AB
vddsoc: supplied by SW1C
imx-gpc 20dc000.gpc: Registered imx-gpc
mmcblk3boot1: mmc3:0001 008GB0 partition 2 8.00 MiB
mxc_vpu 2040000.vpu_fsl: VPU initialized
cpu cpu0: Registered imx6q-cpufreq
imx_thermal 2000000.aips-bus:tempmon: Commercial CPU temperature grade - max:95C critical:90C passive:85C
input: gpio-keys as /devices/soc0/gpio-keys/input/input0
snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01 00:00:01 UTC (1)
usb_otg_vbus: disabling
wm8962-supply: disabling
sensor-supply: disabling
mipi_dsi_pwr_on: disabling
VGEN2: disabling
VGEN3: disabling
ALSA device list:
#0: imx-hdmi-soc
mmcblk3rpmb: mmc3:0001 008GB0 partition 3 4.00 MiB
EXT4-fs (mmcblk2p2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (mmcblk2p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:2.
random: fast init done
devtmpfs: mounted
Freeing unused kernel memory: 1024K
systemd[1]: System time before build time, advancing clock.
systemd[1]: systemd 234 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN default-hierarchy=hybrid)
systemd[1]: Detected architecture arm.

Welcome to NXP i.MX Release Distro 4.9.88-2.0.0 (rocko)!

systemd[1]: Set hostname to <imx6solosabresd>.
systemd[1]: Created slice User and Session Slice.
[ OK ] Created slice User and Session Slice.
systemd[1]: Listening on Journal Socket (/dev/log).
[ OK ] Listening on Journal Socket (/dev/log).
systemd[1]: Listening on Journal Socket.
[ OK ] Listening on Journal Socket.
systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ OK ] Listening on /dev/initctl Compatibility Named Pipe.
systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ OK ] Started Dispatch Password Requests to Console Directory Watch.
systemd[1]: Reached target Remote File Systems.
[ OK ] Reached target Remote File Systems.
systemd[1]: Listening on udev Kernel Socket.
[ OK ] Listening on udev Kernel Socket.
[ OK ] Listening on Syslog Socket.
[ OK ] Reached target Host and Network Name Lookups.
[ OK ] Created slice System Slice.
Mounting Kernel Debug File System...
Starting Journal Service...
[ OK ] Created slice system-getty.slice.
[ OK ] Created slice system-serial\x2dgetty.slice.
Starting Load Kernel Modules...
Starting Setup Virtual Console...
[ OK ] Started Forward Password Requests to Wall Directory Watch.
galcore: loading out-of-tree module taints kernel.
galcore: clk_get vg clock failed, disable vg!
Galcore version 6.2.4.150331
[ OK ] Reached target Paths.
Starting Remount Root and Kernel File Systems...
[ OK ] Reached target Swap.
EXT4-fs (mmcblk2p2): re-mounted. Opts: (null)
Mounting Temporary Directory (/tmp)...
[ OK ] Reached target Slices.
[ OK ] Listening on Network Service Netlink Socket.
[ OK ] Listening on udev Control Socket.
[ OK ] Mounted Kernel Debug File System.
[ OK ] Mounted Temporary Directory (/tmp).
[ OK ] Started Setup Virtual Console.
[ OK ] Started Remount Root and Kernel File Systems.
[ OK ] Started Journal Service.
Starting Create System Users...
Starting Rebuild Hardware Database...
Starting Flush Journal to Persistent Storage...
[ OK ] Started Create System Users.
systemd-journald[190]: Received request to flush runtime journal from PID 1
Starting Create Static Device Nodes in /dev...
[ OK ] Started Flush Journal to Persistent Storage.
[ OK ] Started Create Static Device Nodes in /dev.
Starting udev Kernel Device Manager...
[ OK ] Reached target Local File Systems (Pre).
Mounting /var/volatile...
[ OK ] Started Load Kernel Modules.
[ OK ] Mounted /var/volatile.
[ OK ] Reached target Local File Systems.
Starting Rebuild Dynamic Linker Cache...
Starting Rebuild Journal Catalog...
Starting Create Volatile Files and Directories...
Starting Load/Save Random Seed...
Mounting FUSE Control File System...
Mounting Kernel Configuration File System...
Starting Apply Kernel Variables...
[ OK ] Mounted Kernel Configuration File System.
[ OK ] Mounted FUSE Control File System.
[ OK ] Started udev Kernel Device Manager.
[ OK ] Started Rebuild Journal Catalog.
[ OK ] Started Create Volatile Files and Directories.
[ OK ] Started Load/Save Random Seed.
Starting Network Time Synchronization...
Starting Update UTMP about System Boot/Shutdown...
[ OK ] Started Apply Kernel Variables.
[ OK ] Started Network Time Synchronization.
[ OK ] Started Update UTMP about System Boot/Shutdown.
[ OK ] Reached target System Time Synchronized.
[ OK ] Started Rebuild Hardware Database.
Starting udev Coldplug all Devices...
[ OK ] Started udev Coldplug all Devices.
[ OK ] Found device /dev/ttymxc0.
(ここで停止)

rootfs にインストールされている各種デーモンは、レシピと呼ばれるファイルの記載に従ってbitbakeを使って生成されたパッケージを
用いて生成されます。
1.インストールされているデーモンのスクリプトファイルを変更する
2.不要なデーモンのパッケージをインストールしないように変更する

1の場合は、デーモンパッケージの生成元であるレシピファイルに対する差分ファイルを作成することになります。
ファイルの置き換えで良い場合は、
https://yoctobbq.lineo.co.jp/?q=node/272
を参考にしていたでければ良いかと。

2の場合は、conf/local.conf 等で、
PACKAGE_EXCLUDE+= "インストールしたくないパッケージ名 "
といった形で記載することでrootfsには含まれれなくなります。
https://yoctobbq.lineo.co.jp/?q=comment/61#comment-61
を参考にしていただければ良いかと。

②の方法が変更箇所も少ないため、まずはそちらの方法で試してみたいと思います。
便乗で申し訳ありませんが、インストールされるパッケージ名の一覧を出力する方法はありますでしょうか?

tmp/deploy/licenses/ ディレクトリの 
[イメージ名]-[マシン名]-[構築日時分秒] ディレクトリ、今回の例では
fsl-image-qt5-validation-imx-imx6solosabresd-202011DDHHMMSS/
以下のpackage.manifest にイメージに含まれるパッケージ一覧が
テキストファイルとして保存されています。

インストールされているパッケージ一覧を確認できました。
ありがとうございました。