Hi, On Fri, 18 Nov 2022 at 21:53, 黄蓉刚 <happy.every....@126.com> wrote: > > November 19, 2022 > > > Dear All, > > > Execute me. I need your help. > > > I am interested in qemu x86_64 and I have a problem that I want to input > u-boot into a sdcard file and start Linux with the sdcard file, like > grub-install(grub2) way. > > > The grub2 method (Method 1) is right, I want to use u-boot method (Method 2) > to bootloader Linux kernel in x86. I guess that it needs write a program like > grub-install to reach this aim. > > > Please help me to give a clear way like grub-install way. Thanks! > > > My steps: > > cd ~/Code/kernel_sources > > git clone https://github.com/qemu/u-boot.git > > git checkout v2022.10-rc4 > > git reset --hard > > > cd ~/Code/kernel_sources/u-boot > > export ARCH=arm > > export CROSS_COMPILE=arm-linux-gnueabi- > > make distclean > > make vexpress_ca9x4_defconfig > > make -j4 all > > > # Busybox and rootfs is ready > > ... > > > # Kernel > > cd ~/Code/kernel_sources/linux-4.19.256 > > export ARCH=arm > > export CROSS_COMPILE=arm-linux-gnueabi- > > make clean > > make bzImage -j2 ARCH=arm CROSS_COMPLIE=arm-linux-gnueabi- > > make dtbs > > > cd ~/Code/kernel_sources/linux-4.19.256 > > # Create rootfs.img > > sudo sh -c 'find . | cpio -o --format=newc > ../initrd.img' > > > # Common disk method > > cd ~/Code/kernel_sources/linux-4.19.256 > > rm -rf busybox_u-boot_64M_4.19.256.img > > dd if=/dev/zero of=busybox_u-boot_64M_4.19.256.img bs=1 seek=63MiB count=1024 > > > cd ~/Code/kernel_sources/linux-4.19.256 > > sudo parted busybox_u-boot_64M_4.19.256.img > > mklabel msdos > > mkpart primary ext4 2MiB 98% > > toggle 1 boot > > print > > quit > > sudo kpartx -a busybox_u-boot_64M_4.19.256.img > > echo y | sudo mkfs.ext4 /dev/mapper/loop0p1 > > cd ~/Code/kernel_sources/linux-4.19.256 > > sudo rm -rf /mnt/rootfs/* > > sudo mkdir -p /mnt/rootfs/boot/ > > sudo cp arch/arm/boot/zImage /mnt/rootfs/boot/zImage > > sudo cp initrd.img /mnt/rootfs/boot/initrd.img > > > # Method 1(Grub2): > > # Common disk method + Grub method > > cd ~/Code/kernel_sources/linux-4.19.256/ > > sudo losetup /dev/loop0 busybox_grub_2G_4.19.256.img > > sudo kpartx -a /dev/loop0 > > sudo grub-install --target=i386-pc --recheck --no-floppy > --boot-directory=/mnt/rootfs/boot/ /dev/loop0 > > > cd /mnt/rootfs/boot/grub/ > > sudo sh -c "cat > grub.cfg << EOF > > set timeout=5 > > set default=0 > > menuentry 'Linux 4.19.256, busybox, root=/dev/sda2' { > > linux /boot/zImage root=/dev/sda2 > > initrd /boot/initrd.img > > } > > > menuentry 'Reboot' { > > reboot > > } > > > menuentry 'Shutdown' { > > halt > > } > > EOF" > > > cd ~/Code/kernel_sources/linux-4.19.256 > > qemu-system-x86_64 -m 1024M -drive > format=raw,file=busybox_grub_2G_4.19.256.img -curses > > It can run successfully. > > > # Method 2(U-boot): > > # Common disk method + U-boot method > > cd ~/Code/kernel_sources/linux-4.19.256 > > dd if=~/Code/kernel_sources/u-boot/u-boot.bin > of=busybox_u-boot_64M_4.19.256_usb.img conv=notrunc bs=1 > > > cd ~/Code/kernel_sources/linux-4.19.256 > > qemu-system-arm -M vexpress-a9 \ > > -nographic \ > > -m 1024M \ > > -sd ./busybox_u-boot_64M_4.19.256.img > > ... > > It's can't start u-boot. > > > How use u-boot in sdcard file like grub-install?
The instructions in the documentation work OK for me: https://u-boot.readthedocs.io/en/latest/board/emulation/qemu-arm.html Can you try that first and then go from there? Regards, Simon