构建嵌入式linux系统 、制作根文件系统

主要命令:
   准备工具
    tar xf crosstoll-0.43.tar.gz
    sudo chmod a+w /opt   //  注意文件的可读写性
    sudo ln -sf bash sh  //注意运行shell 的 bash
    export PATH=$PATH:/opt/crosstoll/gcc-4.0.2-glib/arm-linux/bin //编译工具
    tar xf crosstoll.tar.bz2 -C/opt  //工具地方
  u-boot 命令
    setenv ipaddr 192.168.1.122
    printenv
    saveenv
    reset
    setenv bootmode nfs/nand
    parts /mtdparts /mtdparts default # 一般来说nand default 分u-boot kernel ext2 tmp
    nand erase kernel //nand 使用前要 erase   
    nand write 0x30008000 kernel 0x200000 //0x30008000 指内存中的地址前提是已经在它指向的地方有内容了 kernel 分区名 0x200000大小
    tftp 0x30008000 ext2fs.img //这个命令主要是利用TFTP 的面向无连接请内容数据向主机//tftp 建立看前面内容注意的是如果不能用的话,用apt-get rm 捍,重安一次就可以用了,还是就是文件的可用权限 777
    set bootcmd nand read 0x30008000 kernel 0x20000 ; myboot 0x30008000
    set bootargs noinitrd console=ttySAC0,115200
    set bootmode nand
    set init /linuxrc
    set root /dev/mtdblock2
    saveenv
    cat /proc/cmdline //
    myboot 0x30008000 //可以直接启动内核 在内存中
 nfs启动
    vi /etc/exports ;     /home/xxx/rootfs *(rw,sync,no_root_squash)
    mkdir ~/rootfs
    sudo mount -o loop /tftpboot/ext2fs.img ~/rootfs
    sudo /etc/init.d/nfs-kernel-server restart
    rpcinfo -p ; exportfs  //看看是否成功
yaffs 系统  //cramfs 只读不可写,一般用来放系统,另一个jffs 或yaffs可写用来放数据
    flash_eraseall /dev/mtd2  //flash_eraseall 来源于mtd
    mount -t yaffs /dev/mtdblock2 /mnt
    ls /mnt
    mkdir -p /mnt/proc /mnt/sys /mnt/dev /mnt/mnt /mnt/var/run
    mknod /mnt/dev/console -m 600 c 5 1   //console
    mknod /mnt/dev/null -m 666 c 1 3   //null
    mknod -m 600 /mnt/dev/s3c2410_serialo0 c 204 64  //serial
    umount mnt
    reboot

    set bootmode nand
    set root /dev/mtdblock2
    set bootargs noinitrd rootfstype=yaffs rw console=ttySAC0,115200
    saveenv
    reset
    
编译内核
    tar xf linux-2.6.26.tar.bz2
    cd linux-2.6.26
    找到Makefile 改  ARCH    ?=arm ;  CROSS_COMPILE ?=arm-linux-
    patch -p1 < ../patch-2.6.26-xx
    cp arch/arm/configs/ak2440_defconfig  .config
    make menuconfig
     出现一个对话窗口,进行自己的设置
    make
    cd arch/arm/boot/zImage  这个就是我们自己的内核
作用根文件系统
    mkdir -p bin dev etc/init.d etc/network etc/network/if-down.d etc/network/if-post-down.d etc/network/if-pre-up.d etc/network/if-up.d  lib mnt opt proc sbin srv sys tmp usr/bin usr/lib usr/sbin var/run
    下载busybox http://www.busybox.net/
    tar xf busybox-1.9.1.tar.bz2; cd busybox-1.9.1/
    和内核一样,找到ARCH ?=$(SUBARCH) 改为 ARCH  ?=arm  ;  CROSS_COMPILE ?=arm-linux-
    make defconfig
    make menuconfig
    根据爱好设置  //注意最后这一项:settting -->install options -->busybox installation prefix 内容改为自的目录 shell->choose shell
    make
    make install
        这时自已的文件中就有linuxrc 和其它/bin 文件下的内容了
    cd rootfs/dev; sudo mknod -m 600 console c 5 1 ; sudo mknod -m 666 null c 1 3 //console null
        //Documentation/devices.txt 中找到
    vi ~/rootfs/etc/inittab:
        ::sysinit:/etc/init.d/rcS
        ::respawn:/sbin/getty 115200 s3c2410_serial0
        ::restart:/sbin/init
        ::shutdown:/bin/nmount-a -r
    vi ~/rootfs/etc/init.d/rcS
        #!/bin/sh
        mount-a
    chmod +x rcS
    vi ~/rootfs/etc/fstab    
        #<file name> <mount point> <type> <options> <dump><pass>
        proc /proc proc defaults 0 0    //这些文件都是内核接口
        sys /sys sysfs default 0 0
        
    cd rootfs/dev; sudo mknod -m 600 s3c2410_serial0 c 204 64
    vi ~/rootfs/etc/passwd   //如果要密码的话:把主机上/etc/shadow 文件中root账号那一行放到开发板根文件系统中
        root::0:0:root:/:/bin/sh
    vi ~/rootfs/etc/group
        root::0:
            ----glibc--------
    cd /opt/crosstool/gcc-4.0.3.-glibc-2.3.6/arm-linux/arm/lib; cp -dp *  /home/xxx/rootfs/lib/
    cp crosstoll-0.43/build/arm-linux/gcc-4.0.2.-glic-2.6/build-glic/elf/ldconfig rootfs/sbin/
            --------mdev ----udev ------
    vi ~/rootfs/etc/init.d/rcS
        mount -t tmpfs mdev /dev
        mdev -s
        mkdir /dev/input
        ln -s /dev/mice /dev/input/mice
    touch rootfs/etc/mdev.conf

    cp /etc/localtime ~/rootfs/etc/    
    vi ~/rootfs/etc/init.d/rcS
        hwclock --hctosys

    vi ~/rootfs/etc/init.d/rcS
        ifup -a
    vi ~/rootfs/etc/network/interfaces
        auto lo
        iface l0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.125

    vi ~/rootfs/etc/network/interfaces
    httpd -h /src/www
    mkdir -p rootfs/src/www/cgi-bin

    最终的启动脚本:rcS
        #!/bin/sh
        mount -a
        mount -t tmpfs mdev /dev
        mdev -s
        mkdir /dev/input
        ln -s /dev/mice /dev/input/mice
        hwclock  --hctosys
        ifup -a
        httpd -h /src/www
        
    mkcramfs ~/rootfs rootfs.cramfs //制作自己的cramfs 文件

    
    
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值