システムが「緊急/回復モード」で起動しています。

システムが「緊急/回復モード」で起動しています。

これはYocto自体の問題ではなく、Avenger96(STM32MP1)ボードからLinuxを正しく起動するのに問題がある可能性があります。私は現在Yocto(Dunfell)と一緒にAvenger96を使っています。目的は、SWUpdate OTAアップデートシステムを実装することです。そのために私はA / B戦略を使用します。私もsystemd代わりに使用していますsysVinitconf/local.conf

DISTRO_FEATURES_append = " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"

私の.wksファイルは次のとおりです。

part fsbl1 --source rawcopy --sourceparams="file=u-boot-spl.stm32" --part-name "fsbl1" --ondisk mmcblk --align 1 --size 256k
part fsbl2 --source rawcopy --sourceparams="file=u-boot-spl.stm32" --part-name "fsbl2" --ondisk mmcblk --align 1 --size 256k
part ssbl --source rawcopy --sourceparams="file=u-boot.itb" --part-name "ssbl" --ondisk mmcblk --align 1 --size 2M
part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --label root_A --part-name "rootfs_A" --align 4096 --use-uuid --active --size 3G
part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --label root_B --part-name "rootfs_B" --align 4096 --use-uuid --size 3G

bootloader --ptable gpt

画像を作成してSDカードにコピーできます。ただし、起動時に次の問題/エラーが発生します。

[  OK  ] Started D-Bus System Message Bus.
         Starting Load/Save RF Kill Switch Status...
You are in rescue mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" or "exit"
to boot into default mode.
Press Enter for maintenance
(or press Control-D to continue):

「Ctrl+D」を押すと、次のようになります。

Reloading system manager configuration
[ 1306.916497] systemd-fstab-generator[202]: Mount point fsbl1 is not a valid path, ignoring.
[ 1306.940236] systemd-fstab-generator[202]: Mount point fsbl2 is not a valid path, ignoring.
[ 1306.947455] systemd-fstab-generator[202]: Mount point ssbl is not a valid path, ignoring.
Starting default target
.
.

その後、ログインを要求して「root」としてログインできます。なぜ緊急モードまたは回復モードに切り替えられるのか理解できません。 Googleでは、私はそれが通常/etc/fstabに関連していることを発見しました。 /etc/fstab/の内容は次のとおりです(ボードからコピー)。

# stock fstab - you probably want to override this with a machine specific one
/dev/root            /                    auto       defaults              1  1
proc                  /proc              proc       defaults              0  0
devpts              /dev/pts         devpts    mode=0620,ptmxmode=0666,gid=5      0  0
tmpfs                /run               tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
tmpfs               /var/volatile    tmpfs      defaults              0  0
 
# uncomment this if your device has a SD/MMC/Transflash slot
#/dev/mmcblk0p1       /media/card          auto       defaults,sync,noauto  0  0
 
/dev/mmcblkp1   fsbl1   vfat    defaults            0            0
/dev/mmcblkp2   fsbl2   vfat    defaults            0            0
/dev/mmcblkp3   ssbl    vfat    defaults            0            0

もう一つ質問:緊急/構造モードでソフトウェアアップデートを実行するとどうなりますか?私の場合、SWUpdateを使用してアップデートをインストールできましたが、再起動後にシステムが以前のパーティションから再起動されました。ただし、手動で最新のパーティションに切り替えて、新しいイメージがインストールされてu-boot envいることを確認できます。したがって、私はこの動作が再びu-bootのいくつかの問題に関連していると仮定します(新しく設定された環境が次回の起動時に消去される可能性があります)。 u-boot環境ではfw_printenv/fw_setenv、パーティションのアクセス、設定、変更などの他の操作も実行できます。bootlimit

aが使用されていることを発見しboot.scr、これをスクリプトに設定しました。rootfspartu-bootヘッダファイルには次のようなものがあります。"rootfspart=4\0" \

setenv bootargs "${bootargs} root=/dev/mmcblk0p${rootfspart} rdinit=/bin/kinit rw rootwait single"

ここにどんな潜在的な問題があるのか​​教えてくれる人はいますか?研究方向の提案があれば役に立ちます。

ご協力ありがとうございます。

よろしくお願いします。

PS:欠落している情報があれば教えてください。そしてログイン後に確認してみてjournalctl -xbください。しかし、多分ここに何かが落ちたかもしれません。Alternate GPT is invalid, using primary GPT.GPT: Use GNU Parted to correct GPT errors.

ベストアンサー1

おすすめ記事