赞
踩
(一). 搭建 rootfs 制作环境
1.1).下载busybox
https://busybox.net/downloads/
选择版本
busybox-1.32.0.tar.bz2
mkdir busybox-1.32
cd busybox-1.32
cp ../busybox-1.32.0.tar.bz2 ./
mkdir rootfs
ls
busybox-1.32.0.tar.bz2 rootfs
tar xvf busybox-1.32.0.tar.bz2
cd rootfs
mkdir -p dev etc proc sys tmp mnt lib var/run
cd ../busybox-1.32.0/
1.2).配置busybox
make menuconfig
需选择配置内容:
a).—Build Options
Cross compiler prefix
arm-linux-
b).—Installation Options (“make install” behavior)
Destination path for ‘make install’
/home/robot/busybox-1.32/rootfs /* path /
c).
Coreutils—>
[ ] sync (3.8 kb) / cancel /
d).
Linux System Utilities—>
[ ] nsenter (6.5 kb) / cancel */
1.3).编译安装
make
make install //注意 make install 配置路径
(二). 完善根文件系统内容
在rootfs目录下仅仅只是创建一个根文件系统的框架,很多系统运行所必须的文件尚未建立成功,必须手动复制进去。
2.1).
复制busybox-1.32.0/examples/bootfloppy/etc 整个目录下的全部文件,到rootfs/etc目录下。
$ cp -r ../busybox-1.32.0/examples/bootfloppy/etc/ ./
2.2).
手动在文件系统中建立如下设备文件:
robot@ubuntu:~/busybox-1.32/rootfs$ cd dev/ robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo mknod -m 666 console c 5 1 [sudo] password for robot: robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l total 0 crw-rw-rw- 1 root root 5, 1 Sep 2 11:15 console robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo mknod -m 666 null c 1 3 robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l total 0 crw-rw-rw- 1 root root 5, 1 Sep 2 11:15 console crw-rw-rw- 1 root root 1, 3 Sep 2 11:16 null robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo chown robot * robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l total 0 crw-rw-rw- 1 robot root 5, 1 Sep 2 11:15 console crw-rw-rw- 1 robot root 1, 3 Sep 2 11:16 null robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo chgrp robot * robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l total 0 crw-rw-rw- 1 robot robot 5, 1 Sep 2 11:15 console crw-rw-rw- 1 robot robot 1, 3 Sep 2 11:16 null
2.3).
修改rcS文件内容如下:
gedit etc/init.d/rcS
#增加内容
#! /bin/sh
/bin/mount -a
/bin/hostname nuc980
2.4).
修改fstab文件
gedit etc/fstab
#device mount type options dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
none /mnt nfs defaults 0 0
2.5).
修改group文件
gedit etc/group
root:*:0: daemon:*:1: bin:*:2: sys:*:3: adm:*:4: tty:*:5: disk:*:6: lp:*:7:lp mail:*:8: news:*:9: uucp:*:10: proxy:*:13: kmem:*:15: dialout:*:20: fax:*:21: voice:*:22: cdrom:*:24: floppy:*:25: tape:*:26: sudo:*:27:
2.6).
修改inittab文件
gedit etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
# add context
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
2.7).
修改passwd文件
gedit etc/passwd
# add context
root::0:0:root:/:/bin/sh
2.8)
修改profile文件
echo
echo -n "Processing /etc/profile... "
# no-op
echo "Done"
echo
# add context
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
2.9). 增加设备、网络配置文件
$ cp -r ../busybox-1.32.0/examples/mdev.conf ./etc/
$ cp -r ../busybox-1.32.0/examples/devfsd.conf ./etc/
$ cp -r ../busybox-1.32.0/examples/inetd.conf ./etc/
$ cp -r ../busybox-1.32.0/examples/udhcp ./etc/
$ cp -r ../busybox-1.32.0/examples/var_service/ ./etc/service
/** 增加可执行权限 */
$ chmod +x etc/mdev.conf
$ chmod +x etc/inittab
$ chmod +x etc/profile
3.0).制作 uclib 库
主机库路径: /usr/local/arm_linux_4.8/lib
cd /usr/local/arm_linux_4.8/lib
cp *.so* /home/robot/busybox-1.32/rootfs/lib/ -d /*** -d copy ln solution */
至此简单的根文件系统制作完成。
(三). 制作 yaffs2 的镜像文件
3.1). 下载新唐提供的yaffs制作工具源码
$ mkdir tool
$ cd tool
$ git clone https://gitee.com/OpenNuvoton/NUC980_Linux_Applications.git
进入NUC980_Linux_Applications/yaffs2utils/目录。
$ make
$ sudo cp mkyaffs2 /usr/local/bin/
$ cd /usr/local/bin/
$ sudo chmod u+x mkyaffs2image
即可以使用 mkyaffs2 制作镜像文件
3.2). 制作 yaffs2 的镜像文件
cd /home/robot/busybox-1.32/
mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img
至此rootfs_yaffs2 镜像文件制作完成,可烧写到nuc980的spi flash芯片中。
(四). 烧写rootfs.yaffs2镜像到 nuc980 芯片,mtdblk2分区地址0x1600000。
参考《NuWriter用户手册(简体中文)》烧写nuc980芯片说明文件,注意需先擦除176块至flash结束地址。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。