Search code examples
linuxlinux-kernellinux-device-drivervirtualizationqemu

Just black screen after running Qemu


I have just installed QEMU and compiled linux kernel with ARM support but when I run below command

qemu-system-arm -M versatilepb -m 128M -kernel /home/arit/QEMU/linux-3.8.4/arch/arm/boot/uImage -append "console=tty1"

I could only see Black screen ,I also tried what is being suggested in below thread

Qemu shows a black screen

But still it didn't work.

Following is the output of make command which I run to compile kernel Source

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -s

 Image Name:   Linux-3.8.4
 Created:      Tue Dec 24 12:49:07 2013
 Image Type:   ARM Linux Kernel Image (uncompressed)
 Data Size:    4406472 Bytes = 4303.20 kB = 4.20 MB
 Load Address: fffffff2
 Entry Point:  fffffff2

Are Load and Entry points OK here?


Solution

  • No your Load and Entry points ARE NOT CORRECT. typically below is load and entry address

    Image Name:   Linux-3.9.0
    Created:      Thu Dec 26 09:50:57 2013
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    1908056 Bytes = 1863.34 kB = 1.82 MB
    Load Address: 00008000
    Entry Point:  00008000
    

    Moreover if you try with your command, kernel will be panic in the absence of rootfs. initrd parameters are missing. Also you might be missing some configuration while building kernel.

    Try these steps:

    1)make ARCH=arm distclean

    2)make ARCH=arm versatile_defconfig

    3)make ARCH=arm menuconfig

    here you need to enable below feature.

    Kernel Features ---> [*] Use the ARM EABI to compile the kernel. (enable this).

    4)make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

    5)qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -append "console=tty1"

    Here you will get console saying that kernel panic. to avoid this pass your rootfs parameter.

    I guess you built rootfs from busybox if so try below command to boot system completely

    6)qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -initrd rootfs.img -append "root=/dev/ram mem=128M rdinit=/sbin/init" -serial stdio.