zoukankan      html  css  js  c++  java
  • 入手Cubieboard2之制作最小Linux系统

    前言

           昨天终于入手了一块Cubieboard2板子,今年4月入职从事的就是与之相关的工作,因此趁现在有时间就好好熟悉一下。

    一、主机环境

    1.PC主机WIN 7旗舰版

    1.虚拟机VM7.0

    2.ubuntu12.04

    3.4G的TF卡,读卡器

    二、安装交叉编译器

           这个比较关键,试过用自己下载的arm-linux-gnueabihf的4.7版本在构建busybox的根文件系统时会出现经典的错误:kernel panic - not syncing: No init found.  Try passing init= option to kernel,因此用ubuntu源里自带的交叉编译器,安装方法如下:

    #sudo apt-get install gcc-arm-linux-gnueabihf

         目前我安装到的版本是4.6.3。

    三、TF卡分区

           将TF卡用读卡器插入PC,ubuntu会识别为sdb(根据具体情况或许会不同),查看原来的TF是否已经有分区:

    #sudo fdisk /dev/sdb -l

         如果有则将所有分区删除:

    #sudo fdisk /dev/sdb

    d

    分区号

    d

    分区号

         直到删除所有分区(p可以查看),接下来分区,继续操作

    n

    p

    1

    2048

    +100M

    n

    p

    2

    回车

    回车

    w

         用命令sudo fdisk /dev/sdb –l查看是否有两个分区。格式化这两个分区:

    #sudo mkfs.ext4 /dev/sdb2

    #sudo mkfs.vfat /dev/sdb1

    四、编译u-boot

          下载u-boot源码:

    #git clone https://github.com/linux-sunxi/u-boot-sunxi -b wip/a20

         编译:

    #make cubieboard2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

         烧写u-boot到TF卡:

    #dd if=spl/sunxi-spl.bin of=/dev/sdb bs=1024 seek=8

    #dd if=u-boot.bin of=/dev/sdb bs=1024 seek=32

    五、编译内核

           下载内核源码:

    #git clone https://github.com/cubieboard2/linux-sunxi

         修改内核源码根目录下的Makefile,令ARCH=arm,CROSS_COMPILE=arm-linux-gnueabihf-。

         配置、编译内核:

    #make sun7i_defconfig

    #make menuconfig(注:退出时要保存)

    #make uImage

    六、构建script.bin脚本

          下载源码:

    #git clone https://github.com/linux-sunxi/sunxi-boards

    #git clone https://github.com/linux-sunxi/sunxi-tools

         编译:

    #cd sunxi-tools

    #make

    #./fex2bin ../sunxi-boards/sys_config/a20/cubieboard2.fex ./script.bin

    七、构建boot.scr文件

           新建boot.cmd文件,输入以下内容:

    setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 init=/sbin/init rootwait

    panic=10 ${extra}

    fatload mmc 0 0x43000000 script.bin

    fatload mmc 0 0x48000000 uImage

    bootm 0x48000000

         编译:

    #mkimage -C none -A arm -T script -d boot.cmd boot.scr

    八、构建busybox根文件系统

          下载busybox源码,http://busybox.net,我下载的是当时最新版本busybox-1.22.1。

        修改源码根目录下的Makefile,令ARCH=arm,CROSS_COMPILE=arm-linux-gnueabihf-。

        编译、安装:

    #make

    #make install

           目前为止,需要的所有文件已经准备好了。下面将它们放到合适的TF卡分区里。首先将uImage、boot.cmd、boot.scr和script.bin文件放到sdb1分区。挂载TF卡分区到ubuntu:

    #sudo mount /dev/sdb1 /mnt/mnt1

         拷贝文件进mnt1(自己创建mnt1、mnt2目录):

    #sudo cp {内核源码路径}/arch/arm/boot/uImage /mnt/mnt1

    #sudo cp {sunxi-tools路径}/script.bin /mnt/mnt1

    #sudo cp boot.cmd /mnt/mnt1

    #sudo cp boot.scr /mnt/mnt1

    #sudo umount /mnt/mnt1

         制作根文件系统,将busybox生成的文件放到sdb2分区:

    #sudo mount /dev/sdb2 /mnt/mnt2

    #sudo cp –Rv {busybox源码路径/_install/*} /mnt/mnt2

    #sudo cp –Rv {busybox源码路径/ examples/bootfloppy/etc} /mnt/mnt2

         拷贝交叉编译器的库到sdb2分区:

    #sudo cp –Rv /usr/arm-linux-gnueabihf/lib /mnt/mnt2

         进入/mnt/mnt2目录:

    #cd /mnt/mnt2

         创建目录:

    #sudo mkdir dev proc sys var home tmp mnt run boot boot2 dev/pts

        将/mnt/mnt2/etc/fstab文件的内容全部替换为以下内容:

    proc /proc proc nosuid,noexec,nodev 0 0

    sysfs /sys sysfs nosuid,noexec,nodev 0 0

    devpts /dev/pts devpts gid=4,mode=620 0 0

    tmpfs /tmp tmpfs defaults 0 0

    devtmpfs /dev devtmpfs mode=0755,nosuid 0 0

    /dev/mmcblk0p1 /boot2 vfat defaults 0 2

    /dev/mmcblk0p2 / ext4 defaults,noatime 0 1

         最后卸载sdb2分区:

    #sudo umount /mnt/mnt2

           将TF卡插入到cubieboard2,接上自带的USB转TTL线,成功启动如下:

    若有什么问题,欢迎交流

  • 相关阅读:
    优化windows7硬盘操作文件的速度
    Google 开源API汇总
    兼容IE和FF:复制本页地址 收藏本页地址 复制当前页地址和标题
    暂时中断一段时间
    Silverlight C# 游戏开发:绚丽的粒子特效颜色粒子(一)
    任天堂模拟器Silverlight版开发,POPNes Emulator!
    Silverlight C# 游戏开发:资源的处理,图像算法(一)
    Silverlight C# 游戏开发:绚丽的粒子特效粒子效果(二)
    吐血的有道谜题
    Silverlight C# 游戏开发:Flyer09扇动翅膀的蝴蝶
  • 原文地址:https://www.cnblogs.com/lknlfy/p/3574930.html
Copyright © 2011-2022 走看看