Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15877
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-09 20:39
文章分类
文章存档

2014年(2)

我的朋友
最近访客

分类: 嵌入式

2014-09-13 08:47:40

做为一个“发烧友”,不会满足于只是用已经构建好的lubuntu系统,希望能够构建私有的rootfs。下面就开始了:

crosscompile生成
使用gentoo作为host环境,gentoo是一个非常优秀的开发环境,通过使用构建工具crossdev可以非常方便的生成本地构建环境,具体步骤可以参见:
http://www.gentoo.org/proj/en/base/embedded/cross-development.xml  包括交叉编译环境原理,以及构建方法。使用的target为:arm-unknown-linux-gnueabihf (crossdev的概念)

准备SD卡
定制自己的rootfs还需要一个SD卡安装,有点麻烦和浪费,有没有其他大办法?原来安装lubuntu的SD卡8G,lubuntu只用来一部分,能否吧定制的rootfs也安装到这个SD上?容量没有问题,关键是原来的sdb2占用了SD所有空间,需要将sdb2 ”瘦身“然后新建一块分区安装定制的rootfs,下面”瘦身“开始:

1  将sdb2文件系统瘦身:  resize2fs /dev/sdb2 4G           #将sdb2文件系统瘦身到4G(需要根据实际情况调整)
2  重新对sdb分区:   fdisk /dev/sdb       需要将sdb2删除,然后重新生成sdb2,新的sdb2大小比4G稍微大一点,比如4200M;再将SD卡上剩余的空间分配给sdb3
3  重新调整sdb2文件系统大小,resize2fs /dev/sdb2     不调整的话可能会造成使用df看到的sdb2大小与fdisk看到的sdb2大小不一致(也没有太多的功能问题)

格式化新生成的sdb3     mkfs.ext4 /dev/sdb3
编译busybox
下载&配置busybox
wget
tar -xjf busybox-1.22.1.tar.bz2
cd busybox-1.22.1/
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabihf- defconfig
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabihf- menuconfig
编译&安装busybox到host的sysroot环境
make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabihf make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabihf- install CONFIG_PREFIX=/usr/arm-unknown-linux-gnueabihf
/usr/arm-unknown-linux-gnueabihf是宿主机器上的sysroot,存放了可以在cubitruck上使用的glibc等重要的库文件;现在把编译好的busybox也放到这个目录下

在SD上创建rootfs

将lubuntu中的module拷贝到SD的rootfs上
1  mdkir mnt/{temp1, temp2}
2  mount /dev/sdb2 /mnt/temp1
3  mount /dev/sdb3 /mnt/temp2
4  cp -R /mnt/temp1/lib/modules /mnt/tmep2/lib      #拷贝lubuntu的内核模块到新的rootfs
5  cp -R /mnt/temp1/lib/firmware /mnt/tmep2/lib      #拷贝lubuntu的firmware到新的rootfs
6  cp -R /mnt/temp1/etc/modules /mnt/temp2/etc    #配置文件,内核启动是需要加载那些模块
7  cp -R /mnt/temp1/etc/modprobe.d /mnt/temp2/etc    #配置文件,内核模块启动参数

拷贝busybox到SD rootfs
cp -R /usr/arm-unknown-linux-gnueabihf /mnt/temp2

挂接sys proc和dev文件系统

增加文件 /etc/init.d/rcS
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
chmod +x /etc/init.d/rcS
umount /dev/sdb2
umount /dev/sdb3

修改cubietruck使用sdb3作为rootfs

mount /dev/sdb1 /mnt/temp1
修改uEnv.txt文件,将root=/dev/mmcblk0p2修改为:root=/dev/mmcblk0p3


OK,完工,可以将SD插入cubietruck上体验新生成的busybox了!



阅读(2047) | 评论(0) | 转发(0) |
0

上一篇:cubietruck使用(一)----SD卡上安装lubuntu

下一篇:没有了

给主人留下些什么吧!~~