搭建基於busybox和qemu的arm-linux系統

來源:互聯網
上載者:User

轉載請註明出處:http://writeblog.csdn.net/PostEdit.aspx?entryId=5826373

 

一、系統版本選擇
    交叉編譯器版本4.4.0
    核心版本2.6.30.8
    busybox版本1.16.2

二、核心編譯
    修改Makefile, ARCH=arm, CROSS_COMPILE=arm-eabi-。
    make mrproper
    make versatile_defconfig
    添加eabi支援:[*] Use the ARM EABI to compile the kernel
    添加虛擬檔案系統tmpfs支援。
    make

三、busybox編譯、裁剪
    1.make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- defconfig   
    2.make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
        a.選擇上靜態編譯。
        b.Busybox Library Tuning  --->
             [*]     Username completion                             
             [*]   Fancy shell prompts
        這兩項必須選上,不然BusyBox將無法識別環境變數PS1裡的參數。
    3.make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install

四、建立根檔案系統
    mkdir -v {dev,proc,sys,etc,lib,tmp,bin,sbin,usr}
    mkdir -v usr/include
    mkdir -v usr/lib
    chmod 1777 tmp

    添加兩個必要的結點
    sudo mknod -m 600 dev/console c 5 1
    sudo mknod -m 666 dev/null c 1 3
    在etc/下建立檔案:hostname、init.d/rcS、inittab、profile
    複製busybox中的_install目錄到root目錄下。

/etc/inittab

   # System initialization.
   #/etc/inittab
   ::sysinit:/etc/init.d/rcS
   ::askfirst:-/bin/sh
   ::ctrlaltdel:/sbin/reboot
   ::shutdown:/bin/umount -a -r

五、添加mdev支援
    在rcS中添加:
    mount -t sysfs sysfs /sys

    mount -t proc none /proc
    sysctl -w kernel.hotplug=/sbin/mdev
    mdev -s

六、ubunut下添加nfs的支援
    /etc/exports添加:
        /home/xxxxx/root *(rw,sync,no_root_squash)
    重新啟動nfs:
        sudo /etc/init.d/nfs-kernel-server  restart

七、qemu啟動arm-linux系統
    1.添加qemu的啟動指令碼:qemu-ifup
    #!/bin/sh
    echo "Executing /etc/qemu-ifup"
    #echo "Bringing up $1 for bridged mode..."
    sudo ifconfig $1 10.0.0.1
    #echo "Adding $1 to br0..."
    #sudo /usr/sbin/brctl addif br0 $1
    #sleep 2
    2.運行qemu:
    sudo qemu-system-arm -M versatilepb -kernel zImage /
        -append root="/dev/nfs nfsroot=10.0.0.1: /home/xxxxx/root rw /
        ip=10.0.0.2:10.0.0.1:10.0.0.1:255.255.255.0" -net nic,vlan=0 /
        -net tap,vlan=0,ifname=tap0,script=./qemu-ifup

 

八、令arm-linux可以用nat方式上網
    1.主機端設定iptables:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth1 -s 10.0.0.1/24 -j MASQUERADE
    2.arm-linux系統添加檔案/etc/resolv.conf指定dns伺服器:
    nameserver 192.168.1.1

 

九、ramdisk方式啟動時,製作initrd映象檔案

#mkdir initrd
#dd if=/dev/zero of=initrd.img bs=1k count=4096
#/sbin/mke2fs -F -v -m0 initrd.img
#mount -o loop initrd.img initrd
#cp -av rootfs/* initrd
#umount
#gzip -9 initrd.img

啟動命令:qemu-system-arm -M versatilepb -kernel linux-source/linux/arch/arm/boot/zImage -initrd initrd.img.gz -append root="/dev/ram0 rw"

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.