搭建基于busybox和qemu的arm-linux系统

转载请注明出处: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"



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值