Re-compile Kernel For Supporting 512M Memory For RaspberryPI In Qemu
Mar 20, 2014
Technology
###Cross Compiler Prepration Get the cross-compiler from github:
[Trusty@XXXyyy tools]$ pwd
/media/y/raspberryPI/tools
[Trusty@XXXyyy tools]$ git clone git://github.com/raspberrypi/tools.git
Add the cross-compiler to system path:
export PATH="/media/y/raspberryPI/tools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:$PATH"
Now input “arm-linux-g” + tab you will see the cross-compiler is ready. ###Prepare the kernel Get the kernel source from github:
git clone git://github.com/raspberrypi/linux.git
Now we need to get the patches for supporting the raspberryPI, Torlus has done the patches which could also be downloaded from github:
Now we need to configure the kernel:
cd linux
make ARCH=arm versatile_defconfig
NO, I MADE A MISTAKE, IT SHOULDN’T COMPILE KERNEL, SHOULD COMPILE QEMU!!!
###Compile qemu Get the modified qemu branch from github:
git clone git://github.com/Torlus/qemu.git
Switch to ‘rpi’ branch:
git fetch origin
git branch -v -a # List the available branches.
git checkout -b raspberry origin/rpi # Checkout the origin/rpi to local raspberry
git fetch
git checkout raspberry
Begin to configure qemu, notice we have to use python2 for configuring the qemu:
workon venv2
./configure --help
./configure --target-list="arm-softmmu arm-linux-user" --enable-sdl
Now begin to make the qemu, use -j8 for speeding up, adjust the number according to your own machine:
make -j8
Now under the following directory you will get the qemu-system-arm:
$ pwd
/media/y/raspberryPI/qemu/arm-softmmu
Get the kernel.img from the SD image.
###Use the compiled qemu for running We have to change the scripts for running the qemu:
/media/y/raspberryPI/qemu/arm-softmmu/qemu-system-arm -net nic,macaddr=$macaddr -net user -kernel kernel.img -cpu arm1176 -m 512 -M raspi -no-reboot -serial stdio -append "rw earlyprintk loglevel=8 panic=120 keep_bootcon rootwait dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1024 bcm2708_fb.fbheight=768 bcm2708.boardrev=0xf bcm2708.serial=0xcad0eedf smsc95xx.macaddr=B8:27:EB:D0:EE:DF sdhci-bcm2708.emmc_clock_freq=100000000 vc_mem.mem_base=0x1c000000 vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait" -sd 2014-01-07-wheezy-raspbian.img -device usb-kbd -device usb-mouse -usbdevice net
Now we can run the raspberryPI in QEMU with 512MB memory, but, the network is still unavailable.