Lenovo Yoga C630 に FreeBSD が入らない

Lenovo Yoga C630

Lenovo Yoga C630 ( Lenovo Yoga C630 製品仕様書 81JL0012JP | レノボジャパン ) は Qualcomm の Snapdragon 850 を積んだラップトップで、最近は新品なり中古なりが3万円程度で手に入る。 AArch64 はいまや UEFI で統一されようとしているという話で、このPCもそうなので FreeBSD のインストールも楽にゆくかなと思って一台手に入れてみた。だが、インストールイメージを入れた USBメモリを挿して電源を入れてもうんともすんとも言わない。試しに Grub2 を突っ込んでみたら、こちらは起動する。

loader.efi を 4kB align するにはどうすればよいのか

FreeBSD-arm ML に泣きを入れたところ、Qualcommファームウェアは 4kBアラインメントを要求するよということを教えてもらった。検索したらば、Linux を移植した人たちもそこで苦労したとか書いている。 Porting Linux to AArch64 Laptops - Linaro

Grub2 の util/mkimage.c grub2/mkimage.c at master · rhboot/grub2 · GitHub の arm64-efi の部分を見るに、

      .section_align = GRUB_PE32_SECTION_ALIGNMENT,
      .vaddr_offset = EFI64_HEADER_SIZE,

となってて、どちらの定数も 4096 になるので、FreeBSD の loader.efi も各セクションが 4kB でアライメントされていればよいらしいというところまではわかった。

しかし、どうすればそれが実現できるのかが分からない。

CFLAGS+= -mcmodel=small
LDFLAGS+= -Wl,-zcommon-page-size=0x1000

とやってみたり、ldscript の arm64 のところ ( ldscript.arm64 « arm64 « arch « loader « efi « stand - src - FreeBSD source tree ) のアライメントのところをやみくもに ALIGN(4096) に置き換えてみたりとやってみたが、 画面が真っ暗なままうんともすんとも言わないか、プレインストールされている Windows が立ち上がってくるかのどっちかにしかならなかった。 そうして、どっちの方が解決に近いのかも分からない。

どうすればよいか分かる方がいらしたら教えてください。よろしくおねがいします。