[ARMedslack] N00b alert: "Kernel image must be specified" (Qemu - Windows host)
Dave Dowell
dowelld at netscape.net
Tue Aug 16 00:01:40 UTC 2011
Hello Ottovio,
It's a bit of all of them.
On ARM systems you always need to tell it to load the kernel image. What
happens then is very dependent upon how things have been built.
For example it's possible to build a combined image where the kernel and
the initrd are rolled into one package, or more often they're kept as
seperate images.
In the case of ARMedslack the kernel and the initrd are kept seperate,
this makes modifying things easier.
The initrd itself can do different things dependent on how it was designed.
For example the initrd on the Sheevaplug uClibc Debian system is the
actual root filesystem, the same is true for the iConnect Debian uClibc
system.
The ARMedslack initrd is only a initial ramdisk, which contains relevant
modules (in your specific case the module for ext2fs) to allow the
kernel to access the real root device. So the initrd is about giving the
kernel the ability to access the real root device, so that it can mount
the real root filesystem and continue the system bringup, read up on
pivot root to find out more about this.
It should be possible to compile a kernel to include the necessary
drivers to directly access the real root device, although I've not tried
that yet.
It is possible to combine a kernel and initrd into a single image, and
thus only load one file into memory and boot that, but that's not the
design in play here.
It is possible to use an initrd as the real rootdev, but reducing it to
fit into the flash memory available onboard most ARM devices requires a
lot of work yet, and isn't really in scope for the straight port of
Slackware to ARM.
I hope that covers your questions?
Thanks
Dave
On 16/08/2011 00:35, Ottavio wrote:
> Hello, first time here, please be patient.
>
> I apologise asking this question here, but the Qemu user forum is
> currently down and the qemu-devel list is aimed at developers only.
>
> I have converted the -Current Miniroot fs to a proper image on a Linux
> host, made some minor corrections to ftstab and inittab, transferred
> it to a flash drive and tried to boot it on a Windows host with this
> line:
>
> qemu-system-arm.exe -drive file=slackware-arm-root,index=0,media=disk
> -M versatilepb -m 256 -usb -k en-gb
>
> but I got the error: "Kernel image must be specified".
>
> So I downloaded zImage-versatile and initrd-versatile.gz and added this :
>
> -kernel zImage-versatile -initrd initrd-versatile.gz -append
> "root=/dev/sda1 rootfs=ext2"
>
> and It works fine.
>
> Why does qemu-system-arm need a kernel and a initrd? Is it possible to
> boot an ARM image directly? Is this a limitation of the ARM
> Architecture or of the volatile board emulation or of qemu-system-arm
> altogether?
>
> Then I'd have some more n00b questions but I'll ask them later.
>
> Thank you
>
>
>
More information about the ARMedslack
mailing list