Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1562224
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2013-01-04 22:47:29

一、系统版本选择
    交叉编译器版本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   //此处(为4M)的count块根据你的文件系统的大小进行调整
#/sbin/mke2fs -F -v -m0 initrd.img
#mount -o loop initrd.img initrd
#cp -av rootfs/* initrd
#umount initrd
#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"

原文链接:
http://blog.csdn.net/arriod/article/details/5826373
阅读(2000) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~