[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