Skip to main content
Qualcommยฎ Linux ไฝฟ็”จ systemd-boot ไฝœไธบ UEFI ๅฏๅŠจ็ฎก็†ๅ™จใ€‚Linux ๅ†…ๆ ธๅœจ็ผ–่ฏ‘ๆ—ถๅฏ็”จไบ† EFI stub ๆ”ฏๆŒ๏ผŒๅ› ๆญค UEFI ๅ›บไปถๅ’Œ systemd-boot ๅฏไปฅๅฐ†ๅ…ถไฝœไธบ EFI ๅฏๆ‰ง่กŒๆ–‡ไปถ็›ดๆŽฅๅŠ ่ฝฝใ€‚ๅฏๅŠจ้“พไธญๆฒกๆœ‰ GRUB ๆˆ–ๅ…ถไป–็ฌฌไบŒ้˜ถๆฎตๅผ•ๅฏผๅŠ ่ฝฝ็จ‹ๅบใ€‚

UEFI ๅฏๅŠจ็ฎก็†ๅ™จๆฆ‚่ฟฐ

UEFI ๅฏๅŠจ็ฎก็†ๅ™จๆ˜ฏๅœจๅ›บไปถๅนณๅฐๅˆๅง‹ๅŒ–ไน‹ๅŽ่ฟ่กŒ็š„็จ‹ๅบ๏ผŒ่ดŸ่ดฃ้€‰ๆ‹ฉๅนถๅฏๅŠจๆ“ไฝœ็ณป็ปŸ้•œๅƒใ€‚ๅœจ Qualcomm Linux ไธŠ๏ผš
  1. XBL ๅ›บไปถๅˆๅง‹ๅŒ–็กฌไปถ๏ผˆDDRใ€ๆ—ถ้’Ÿใ€ๅฎ‰ๅ…จ๏ผ‰๏ผŒๅนถๅฐ†ๆŽงๅˆถๆƒ็งปไบค็ป™ๅญ˜ๅ‚จๅœจ abl_a / abl_b ๅˆ†ๅŒบไธญ็š„ UEFI ้•œๅƒใ€‚
  2. UEFI ๅ›บไปถๆ‰ง่กŒ UEFI ๅนณๅฐๅˆๅง‹ๅŒ–๏ผŒๅ‘็Žฐ EFI ็ณป็ปŸๅˆ†ๅŒบ๏ผˆESP๏ผ‰๏ผŒๅนถๅฏๅŠจ้ป˜่ฎค็š„ EFI ๅบ”็”จ็จ‹ๅบ๏ผˆsystemd-boot๏ผ‰ใ€‚
  3. systemd-boot ไปŽ ESP ่ฏปๅ–ๅฏๅŠจๆก็›ฎ๏ผŒๅฟ…่ฆๆ—ถๆ˜พ็คบ่œๅ•๏ผŒๅนถๆ‰ง่กŒๆ‰€้€‰ๅ†…ๆ ธ EFI ไบŒ่ฟ›ๅˆถๆ–‡ไปถใ€‚
ๆœ‰ๅ…ณ UEFI ่ง„่Œƒๅ’ŒๅฏๅŠจ็ฎก็†ๅ™จ่กŒไธบ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚้˜… UEFI Boot Managerใ€‚

systemd-boot ่กŒไธบ

systemd-boot ๆ˜ฏๆฅ่‡ช systemd ้กน็›ฎ็š„ไธ€ไธช็ฒพ็ฎ€ใ€็ฌฆๅˆ่ง„่Œƒ็š„ UEFI ๅฏๅŠจ็ฎก็†ๅ™จใ€‚ๅฎƒๅฎž็Žฐไบ† Boot Loader Specification (BLS)๏ผŒๅนถๅŒๆ—ถๆ”ฏๆŒ Type 1 ๅ’Œ Type 2 ๅฏๅŠจๆก็›ฎใ€‚

ๅฏๅŠจๆก็›ฎๅ‘็Žฐ

ๅฏๅŠจๆ—ถ๏ผŒsystemd-boot ไผšๅœจ ESP ็š„ไปฅไธ‹ไฝ็ฝฎๆ‰ซๆๆœ‰ๆ•ˆๆก็›ฎ๏ผš ๅœจ Qualcomm Linux ไธŠ๏ผŒๅ†…ๆ ธไป…ไปฅๆ”พ็ฝฎๅœจ EFI/Linux/ ไธญ็š„ Type 2 UKI ้•œๅƒๅฝขๅผๆ‰“ๅŒ…ใ€‚

loader.conf

systemd-boot ็š„ๅ…จๅฑ€้ป˜่ฎค่ฎพ็ฝฎๅญ˜ๅ‚จๅœจ ESP ไธŠ็š„ loader/loader.conf ไธญใ€‚Qualcomm Linux ็š„ Yocto ๆž„ๅปบไผšๅ†™ๅ…ฅไธ€ไธช็ฒพ็ฎ€็š„ loader.conf๏ผš

ๆŸฅ็œ‹ๅฏๅŠจๆก็›ฎๆ ผๅผ

Type 1 ๆ’ๅ…ฅๅผ .conf ๆ–‡ไปถ

Type 1 ๆก็›ฎๆ˜ฏๆ”พ็ฝฎๅœจ ESP ไธŠ loader/entries/ ไธญ็š„็บฏๆ–‡ๆœฌ .conf ๆ–‡ไปถใ€‚ๆฏไธชๆ–‡ไปถๆ่ฟฐไธ€ไธชๅฏๅŠจๆก็›ฎ๏ผš
Qualcomm Linux ๅœจ็”Ÿไบง็Žฏๅขƒไธญไธไฝฟ็”จ Type 1 ๆก็›ฎใ€‚ๆญคๅค„ๅฑ•็คบ่ฏฅๅธƒๅฑ€ไป…ไพ›ๆทปๅŠ ่‡ชๅฎšไน‰ๆก็›ฎๆ—ถๅ‚่€ƒใ€‚

Type 2 ็ปŸไธ€ๅ†…ๆ ธ้•œๅƒ๏ผˆUKI๏ผ‰

UKI ๆ˜ฏๅ•ไธช EFI ไบŒ่ฟ›ๅˆถๆ–‡ไปถ๏ผŒๅ…ถไธญๅตŒๅ…ฅไบ† Linux ๅ†…ๆ ธ้•œๅƒใ€initramfsใ€ๅ†…ๆ ธๅ‘ฝไปค่กŒ๏ผŒไปฅๅŠๅฏ้€‰็š„่ฎพๅค‡ๆ ‘ใ€‚UEFI ๅ›บไปถ๏ผˆๆˆ– systemd-boot๏ผ‰ๅฏไปฅ็›ดๆŽฅๆ‰ง่กŒ UKI๏ผŒๆ— ้œ€ไปปไฝ•่พ…ๅŠฉ .conf ๆ–‡ไปถใ€‚ UKI ๆ–‡ไปถๆ”พ็ฝฎๅœจ ESP ไธŠ็š„ EFI/Linux/ ไธญ๏ผŒๅนถไปฅ .efi ๆ‰ฉๅฑ•ๅๅ‘ฝๅ๏ผˆไพ‹ๅฆ‚ linux.efiใ€linux-rt.efi๏ผ‰ใ€‚systemd-boot ้€š่ฟ‡ๆ‰ซๆ่ฏฅ็›ฎๅฝ•่‡ชๅŠจ่ฏ†ๅˆซๅฎƒไปฌใ€‚ ๆœ‰ๅ…ณ UKI ้•œๅƒๆ ผๅผ่ง„่Œƒ๏ผŒ่ฏทๅ‚้˜… Type 2 EFI Unified Kernel Imagesใ€‚

็”Ÿๆˆ Yocto ESP ้•œๅƒ

Yocto ็š„ meta-qcom ๅฑ‚ๆไพ›ไบ†้…ๆ–น recipes-kernel/images/esp-qcom-image.bb๏ผŒ็”จไบŽ็ป„่ฃ… ESP ้•œๅƒ๏ผˆefi.bin๏ผ‰ใ€‚่ฏฅ้…ๆ–น๏ผš
  1. ไปŽ systemd ่ฝฏไปถๅŒ…ๆž„ๅปบ systemd-boot๏ผŒๅนถๅฐ† systemd-boot.efi ไบŒ่ฟ›ๅˆถๆ–‡ไปถๅคๅˆถๅˆฐ EFI/BOOT/BOOTAA64.EFI๏ผŒๅณ้ป˜่ฎค็š„ UEFI ๅฏ็งปๅŠจไป‹่ดจๅฏๅŠจ่ทฏๅพ„ใ€‚
  2. ไฝฟ็”จ ukify ๅฐ†ๅ†…ๆ ธใ€initramfs ๅ’Œๅ‘ฝไปค่กŒๆ‰“ๅŒ…ๆˆ UKI๏ผŒๅนถๅ†™ๅ…ฅ EFI/Linux/linux.efi๏ผˆRT ๆž„ๅปบๅˆ™ไธบ EFI/Linux/linux-rt.efi๏ผ‰ใ€‚
  3. ๅ†™ๅ…ฅๅŒ…ๅซ้ป˜่ฎค่ถ…ๆ—ถๅ’Œๆก็›ฎ็ญ–็•ฅ็š„ loader/loader.confใ€‚
  4. ๅฐ†ๆ‰€ๆœ‰ๅ†…ๅฎนๆ ผๅผๅŒ–ไธบ FAT32 ้•œๅƒ๏ผŒๅนถไฝœไธบ efi.bin ๅญ˜ๅ‚จๅœจๆž„ๅปบ้ƒจ็ฝฒ็›ฎๅฝ•ไธญใ€‚
็”Ÿๆˆ็š„ efi.bin ไผš่ขซๅˆทๅ†™ๅˆฐ่ฎพๅค‡ไธŠ็š„ efi ๅˆ†ๅŒบใ€‚ ๆœ‰ๅ…ณๅˆทๅ†™่ฏดๆ˜Ž๏ผŒ่ฏทๅ‚้˜… ๅฎ‰่ฃ…ๅนถๅฏๅŠจๅ†…ๆ ธใ€‚ ๆœ‰ๅ…ณๅฎ‰ๅ…จๅฏๅŠจ้›†ๆˆ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚้˜… ไฝฟ็”จ systemd-boot ๅ’Œ UKI ้…็ฝฎๅนถๅฎž็Žฐๅฎ‰ๅ…จๅฏๅŠจใ€‚