Здравствуйте. Имеется следующая проблема. Пытаюсь запустить EFI ядро Linux на Zynq 7000 серии. Собрал последний uboot с поддержкой EFI. Собрал arm-efi grub. Создал 2 раздела на SD карте. Первый 512mb с BOOT.bin, dtb, ядром и grub. Второй ext4 c корнем.
U-Boot 2021.01-00102-g43adebe34b-dirty (Oct 24 2021 - 20:40:28 +0300)
CPU: Zynq 7z020
Silicon: v3.1
DRAM: ECC disabled 1 GiB
Flash: 0 Bytes
NAND: 1024 MiB
MMC: mmc@e0100000: 0
Loading Environment from FAT... *** Warning - bad CRC, using default environment
In: serial@e0000000
Out: serial@e0000000
Err: serial@e0000000
Net:
ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr -1, interface rgmii-id
Warning: ethernet@e000b000 (eth0) using random MAC address - be:b0:d9:e9:06:c9
eth0: ethernet@e000b000
ZYNQ GEM: e000c000, mdio bus e000c000, phyaddr -1, interface gmii
Could not get PHY for eth1: addr -1
Hit any key to stop autoboot: 0
Zynq>
Zynq> load mmc 0:1 0x1f00000 dtb/zynq-mine.dtb
11689 bytes read in 24 ms (475.6 KiB/s)
Zynq> load mmc 0:1 0x2000000 EFI/grub/grubarm.efi
98304 bytes read in 30 ms (3.1 MiB/s)
Zynq> bootefi 0x2000000 0x1f00000
Попадаем в grub и он загружает ядро Linux EFI, но застревает на данном моменте
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
Есть предположение, что ядро стартует, только выхлоп загрузки не попадает в консоль. printenv
Zynq> printenv
arch=arm
baudrate=115200
board=zynq
board_name=zynq
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdti
boot_efi_bootmgr=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc0 jtag mmc0 mmc1 qspi nand nor usb0 usb1 pxe dhcp
bootcmd=run distro_bootcmd
bootcmd_dhcp=setenv devtype dhcp; run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${sc;
bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && source ${scriptaddr}; echo JTAG: SCRIPT FAILED: con;
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_nand=nand info && nand read ${scriptaddr} ${script_offset_f} ${script_size_f} && echo NAND: Trying to boot sc;
bootcmd_nor=cp.b ${script_offset_nor} ${scriptaddr} ${script_size_f} && echo NOR: Trying to boot script at ${scriptad;
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_qspi=sf probe 0 0 0 && sf read ${scriptaddr} ${script_offset_f} ${script_size_f} && echo QSPI: Trying to boot;
bootcmd_usb0=devnum=0; run usb_boot
bootcmd_usb1=devnum=1; run usb_boot
bootcmd_usb_dfu0=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && dfu 0 ram 0 60 && echo DFU0: Trying t;
bootcmd_usb_dfu1=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && dfu 1 ram 1 60 && echo DFU1: Trying t;
bootcmd_usb_thor0=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && thordown 0 ram 0 && echo THOR0: Tryi;
bootcmd_usb_thor1=setenv dfu_alt_info boot.scr ram $scriptaddr $script_size_f && thordown 1 ram 1 && echo THOR1: Tryi;
bootdelay=2
bootm_low=0
bootm_size=30000000
cpu=armv7
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
fdt_addr_r=0x1f00000
fdtcontroladdr=3ead3110
kernel_addr_r=0x2000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
modeboot=sdboot
pxefile_addr_r=0x2000000
ramdisk_addr_r=0x3100000
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run sc;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; ft
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soce
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Foi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${e
script_offset_f=fc0000
script_offset_nor=0xE2FC0000
script_size_f=0x40000
scriptaddr=3000000
soc=zynq
stderr=serial@e0000000
stdin=serial@e0000000
stdout=serial@e0000000
ubifs_boot=env exists bootubipart || env set bootubipart UBI; env exists bootubivol || env set bootubivol boot; if ubi
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
vendor=xilinx
Файлы на 0 разделе карты
.
├── boot
│ └── grub
│ ├── arm-efi
│ │ ├── acpi.mod
│ │ ├── adler32.mod
│ │ ├── affs.mod
│ │ ├── afs.mod
│ │ ├── afsplitter.mod
│ │ ├── all_video.mod
│ │ ├── archelp.mod
│ │ ├── bfs.mod
│ │ ├── bitmap.mod
│ │ ├── bitmap_scale.mod
│ │ ├── blocklist.mod
│ │ ├── boot.mod
│ │ ├── bswap_test.mod
│ │ ├── btrfs.mod
│ │ ├── bufio.mod
│ │ ├── cat.mod
│ │ ├── cbfs.mod
│ │ ├── chain.mod
│ │ ├── cmdline_cat_test.mod
│ │ ├── cmp.mod
│ │ ├── cmp_test.mod
│ │ ├── command.lst
│ │ ├── configfile.mod
│ │ ├── core.efi
│ │ ├── cpio_be.mod
│ │ ├── cpio.mod
│ │ ├── crc64.mod
│ │ ├── cryptodisk.mod
│ │ ├── crypto.lst
│ │ ├── crypto.mod
│ │ ├── ctz_test.mod
│ │ ├── datehook.mod
│ │ ├── date.mod
│ │ ├── datetime.mod
│ │ ├── diskfilter.mod
│ │ ├── disk.mod
│ │ ├── div_test.mod
│ │ ├── dm_nv.mod
│ │ ├── echo.mod
│ │ ├── efifwsetup.mod
│ │ ├── efi_gop.mod
│ │ ├── efinet.mod
│ │ ├── elf.mod
│ │ ├── eval.mod
│ │ ├── exfat.mod
│ │ ├── exfctest.mod
│ │ ├── ext2.mod
│ │ ├── extcmd.mod
│ │ ├── f2fs.mod
│ │ ├── fat.mod
│ │ ├── fdt.mod
│ │ ├── file.mod
│ │ ├── font.mod
│ │ ├── fshelp.mod
│ │ ├── fs.lst
│ │ ├── functional_test.mod
│ │ ├── gcry_arcfour.mod
│ │ ├── gcry_blowfish.mod
│ │ ├── gcry_camellia.mod
│ │ ├── gcry_cast5.mod
│ │ ├── gcry_crc.mod
│ │ ├── gcry_des.mod
│ │ ├── gcry_dsa.mod
│ │ ├── gcry_idea.mod
│ │ ├── gcry_md4.mod
│ │ ├── gcry_md5.mod
│ │ ├── gcry_rfc2268.mod
│ │ ├── gcry_rijndael.mod
│ │ ├── gcry_rmd160.mod
│ │ ├── gcry_rsa.mod
│ │ ├── gcry_seed.mod
│ │ ├── gcry_serpent.mod
│ │ ├── gcry_sha1.mod
│ │ ├── gcry_sha256.mod
│ │ ├── gcry_sha512.mod
│ │ ├── gcry_tiger.mod
│ │ ├── gcry_twofish.mod
│ │ ├── gcry_whirlpool.mod
│ │ ├── geli.mod
│ │ ├── gettext.mod
│ │ ├── gfxmenu.mod
│ │ ├── gfxterm_background.mod
│ │ ├── gfxterm_menu.mod
│ │ ├── gfxterm.mod
│ │ ├── gptsync.mod
│ │ ├── gzio.mod
│ │ ├── halt.mod
│ │ ├── hashsum.mod
│ │ ├── hello.mod
│ │ ├── help.mod
│ │ ├── hexdump.mod
│ │ ├── hfs.mod
│ │ ├── hfspluscomp.mod
│ │ ├── hfsplus.mod
│ │ ├── http.mod
│ │ ├── iso9660.mod
│ │ ├── jfs.mod
│ │ ├── jpeg.mod
│ │ ├── json.mod
│ │ ├── keystatus.mod
│ │ ├── ldm.mod
│ │ ├── linux.mod
│ │ ├── loadenv.mod
│ │ ├── loopback.mod
│ │ ├── lsacpi.mod
│ │ ├── lsefimmap.mod
│ │ ├── lsefi.mod
│ │ ├── lsefisystab.mod
│ │ ├── lsmmap.mod
│ │ ├── ls.mod
│ │ ├── lssal.mod
│ │ ├── luks2.mod
│ │ ├── luks.mod
│ │ ├── lvm.mod
│ │ ├── lzopio.mod
│ │ ├── macbless.mod
│ │ ├── macho.mod
│ │ ├── mdraid09_be.mod
│ │ ├── mdraid09.mod
│ │ ├── mdraid1x.mod
│ │ ├── memdisk.mod
│ │ ├── memrw.mod
│ │ ├── minicmd.mod
│ │ ├── minix2_be.mod
│ │ ├── minix2.mod
│ │ ├── minix3_be.mod
│ │ ├── minix3.mod
│ │ ├── minix_be.mod
│ │ ├── minix.mod
│ │ ├── mmap.mod
│ │ ├── moddep.lst
│ │ ├── modinfo.sh
│ │ ├── mpi.mod
│ │ ├── msdospart.mod
│ │ ├── mul_test.mod
│ │ ├── net.mod
│ │ ├── newc.mod
│ │ ├── nilfs2.mod
│ │ ├── normal.mod
│ │ ├── ntfscomp.mod
│ │ ├── ntfs.mod
│ │ ├── odc.mod
│ │ ├── offsetio.mod
│ │ ├── part_acorn.mod
│ │ ├── part_amiga.mod
│ │ ├── part_apple.mod
│ │ ├── part_bsd.mod
│ │ ├── part_dfly.mod
│ │ ├── part_dvh.mod
│ │ ├── part_gpt.mod
│ │ ├── partmap.lst
│ │ ├── part_msdos.mod
│ │ ├── part_plan.mod
│ │ ├── part_sun.mod
│ │ ├── part_sunpc.mod
│ │ ├── parttool.lst
│ │ ├── parttool.mod
│ │ ├── password.mod
│ │ ├── password_pbkdf2.mod
│ │ ├── pbkdf2.mod
│ │ ├── pbkdf2_test.mod
│ │ ├── pgp.mod
│ │ ├── png.mod
│ │ ├── priority_queue.mod
│ │ ├── probe.mod
│ │ ├── procfs.mod
│ │ ├── progress.mod
│ │ ├── raid5rec.mod
│ │ ├── raid6rec.mod
│ │ ├── read.mod
│ │ ├── reboot.mod
│ │ ├── regexp.mod
│ │ ├── reiserfs.mod
│ │ ├── romfs.mod
│ │ ├── scsi.mod
│ │ ├── search_fs_file.mod
│ │ ├── search_fs_uuid.mod
│ │ ├── search_label.mod
│ │ ├── search.mod
│ │ ├── serial.mod
│ │ ├── setjmp.mod
│ │ ├── setjmp_test.mod
│ │ ├── sfs.mod
│ │ ├── shift_test.mod
│ │ ├── signature_test.mod
│ │ ├── sleep.mod
│ │ ├── sleep_test.mod
│ │ ├── smbios.mod
│ │ ├── squash4.mod
│ │ ├── strtoull_test.mod
│ │ ├── syslinuxcfg.mod
│ │ ├── tar.mod
│ │ ├── terminal.lst
│ │ ├── terminal.mod
│ │ ├── terminfo.mod
│ │ ├── test_blockarg.mod
│ │ ├── testload.mod
│ │ ├── test.mod
│ │ ├── testspeed.mod
│ │ ├── tftp.mod
│ │ ├── tga.mod
│ │ ├── time.mod
│ │ ├── tpm.mod
│ │ ├── trig.mod
│ │ ├── tr.mod
│ │ ├── true.mod
│ │ ├── udf.mod
│ │ ├── ufs1_be.mod
│ │ ├── ufs1.mod
│ │ ├── ufs2.mod
│ │ ├── video_colors.mod
│ │ ├── video_fb.mod
│ │ ├── videoinfo.mod
│ │ ├── video.lst
│ │ ├── video.mod
│ │ ├── videotest_checksum.mod
│ │ ├── videotest.mod
│ │ ├── xfs.mod
│ │ ├── xnu_uuid.mod
│ │ ├── xnu_uuid_test.mod
│ │ ├── xzio.mod
│ │ ├── zfscrypt.mod
│ │ ├── zfsinfo.mod
│ │ ├── zfs.mod
│ │ └── zstd.mod
│ ├── fonts
│ ├── grub.cfg
│ ├── grubenv
│ └── locale
├── BOOT.bin
├── dtb
│ ├── devicetree.dtb
│ └── zynq-mine.dtb
├── EFI
│ └── grub
│ └── grubarm.efi
├── initrd
│ └── initrd.img-5.4.0-1006-raspi2
└── kernel
├── vmlinuz-4.15.0-1060-raspi2
└── vmlinuz-5.4.0-1006-raspi2
grub.cfg
set default=0
set timeout=5
menuentry "Astra Linux for Raspberry Pi 2" {
UUID=00501d8a-b7f3-403e-9735-a056f96033ed
linux /kernel/vmlinuz-4.15.0-1060-raspi2 console=tty0 console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait earlyprintk
initrd /initrd/initrd.img-5.4.0-1006-raspi2
}
Заранее спасибо