系统设置:
1. Generic x86-64 bit target hardware
2. Linux kernel 4.4.131
3. Yocto with core-image-base target build system
4. GRUB boot loader with booting-pcbios loader source code
5. WIC image generation to write image on storage media
WKS文件生成WIC图像,
# short-description: Create an direct disk image for genericx86*
part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024
part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
#part /home --ondisk sda --fstype=ext4 --label data --align 1024 --size 3072M
#part swap --ondisk sda --size 44 --label swap1 --fstype=swap
#bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0"
# Direct disk image without GPT
bootloader --timeout=5 --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=ttyS0,115200n8 console=tty0"
# Direct disk image with GPT
#bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4 video=vesafb vga=0x318 console=ttyS0,115200n8 console=tty0"
通过这些设置,我可以创建WIC镜像。一旦我在USB驱动器上使用DD命令写下相同的内容,我就可以从USB设备正确引导。现在问题来了,当我通过DD命令将WIC映像写入SSD驱动器时,系统卡在等待根设备PARTUUID=<…>。
我已经尝试了以下事情来正确启动,
1. Provide root partition - DISK_SIGNATURE
2. Direct disk image vs live image - bootimg-pcbios inlace of bootimg-efi - Seems one step towards actual setup
3. Systemd vs old initrd
4. Use bs=1M when doing dd
5. Remove GPT option from bootloader in WKS file
6. --uuid ${DISK_SIGNATURE_UUID} - Didn’t work out, seems to be not properly configure
7. Grub-efi to systemd-efi boot loader change
8. Try with ISO image
9. Remove —-use-uuid option from rootfs - To use rootfs from /dev/sda2
10. Change kernel configuration with AUTOFS, and systemd init service manager
11. Use bs=32K and bs=8K
12. Format SSD and Use bs=512
13. Change on-disk to sdb - Will not be affect, as kernel is also part of SDA which is booting
以上所有的实验我都没做过。
你可能想查看许多其他更改,所以让我知道你想要的具体项目,我会分享更多细节。
非常感谢您的帮助。
经过一夜的调试,我发现SATA设备驱动程序作为模块保留在内核配置中。我已经从模块变成了静态,它开始工作了。类似的问题,我已经面临的可启动USB创建。所以,快乐的结局,总是在任何随机尝试之前检查内核配置。:(