Re: Running m68k on qemu with external initramfs?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 11 Apr 2020, Rob Landley wrote:

On 4/11/20 1:12 AM, Finn Thain wrote:
On Fri, 10 Apr 2020, Rob Landley wrote:

I'm adding m68k support to toybox's "make root" target and I have a 
kernel and a rootfs.cpio.gz, but qemu's -initrd option doesn't put the 
rootfs image somewhere the m68k kernel can find it.

Is this a "modify qemu" problem or a "modify kernel" problem?

It sounds more like a "modify kernel .config" problem. But it could be a 
regression; what versions of qemu and kernel did you try?

"Works for me", got it. I'll keep digging.


If you want to try a kernel binary that works for me, so as to narrow down 
the problem, you can get one from here:
https://sourceforge.net/projects/linux-mac68k/files/

QEMU is the one Laurent Vivier maintains that's been out of tree for 
something like 12 years now, the default branch claims to be "q800-dev" 
and the last commit was in december.

Should be fine. For the last few months I've used mainline QEMU instead.

It still runs my old aboriginal linux system image from 2014 (boots to a 
shell prompt).

Kernel is vanilla v5.6 with the arch configured with:

QEMU="m68k -M q800" KARCH=m68k KARGS=ttyS0 VMLINUX=vmlinux
KCONF=MMU,M68040,M68KFPU_EMU,MAC,SCSI_MAC_ESP,MACINTOSH_DRIVERS,ADB,ADB_MACII,NET_CORE,MACSONIC,SERIAL_PMACZILOG,SERIAL_PMACZILOG_TTYS,SERIAL_PMACZILOG_CONSOLE

Which is top of:

BASE=EARLY_PRINTK,BINFMT_ELF,BINFMT_SCRIPT,NO_HZ,HIGH_RES_TIMERS,BLK_DEV,BLK_DEV_INITRD,RD_GZIP,BLK_DEV_LOOP,EXT4_FS,EXT4_USE_FOR_EXT2,VFAT_FS,FAT_DEFAULT_UTF8,MISC_FILESYSTEMS,SQUASHFS,SQUASHFS_XATTR,SQUASHFS_ZLIB,DEVTMPFS,DEVTMPFS_MOUNT,TMPFS,TMPFS_POSIX_ACL,NET,PACKET,UNIX,INET,IPV6,NETDEVICES,NET_CORE,NETCONSOLE,ETHERNET

As interpreted by:

  sed -E '/^$/d;s/([^,]*)($|,)/CONFIG_\1=y\n/g' <<< "$BASE,$KCONF > mini.conf
  make ARCH=$KARCH allnoconfig KCONFIG_ALLCONFIG=mini.conf
  make ARCH=$KARCH CROSS_COMPILE="$CROSS_COMPILE" -j $(nproc)

Plus of course:

  echo "qemu-system-$QEMU" '"$@"' -nographic -no-reboot -m 256 \
       "-kernel $(basename "$VMLINUX") -initrd root.cpio.gz" \
       "-append \"quiet panic=1 HOST=$TARGET console=$KARGS \$KARGS\"" \
       ${DTB:+-dtb "$(basename "$DTB")"} > "$OUTPUT/qemu-$TARGET.sh"


That works for me, with a few tweaks:

qemu-system-m68k -M q800 -serial none -serial mon:stdio -nographic 
-no-reboot -m 256 -kernel vmlinux-4.14.167-mac-backport+ 
-initrd sysroot.cpio.gz -append console=ttyS0

I.E. the usual. 

This is my usual invocation:

qemu-system-m68k -M q800 -m 992M
-serial none -serial mon:stdio -g 800x600x4
-drive file=guest-root,format=raw
-drive file=guest-swap,format=raw
-append "fbcon=font:ProFont6x11 console=tty0 console=ttyS0 root=/dev/sda rw ignore_loglevel"
-kernel vmlinux
-net nic,model=dp83932,addr=00:00:00:01:02:03 -net bridge
-rtc base=localtime

(I'm trying to add m68k support to 
https://github.com/landley/toybox/blob/master/scripts/mkroot.sh which 
already boots armv5l, armv7l, aarch64, i486, i686, x86_64, mips, mipsel, 
powerpc, s390x, and sh4 to a shell prompt under qemu, although you still 
have to KARGS=rdinit=/bin/sh because I haven't QUITE got my new shell 
making it through the end of the init script. Should do in another 
couple days.)


Nice!

Rob




[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux