构建根文件系统启动(2)

 

配置编译busybox

 make menuconfig

      [*]   Tab completion   

 

mkdir -p /work/nfs_root/frist_fs

make

make  CONFIG_PREFIX=/work/nfs_root/frist_fs install

 

bin  linuxrc  sbin  usr
book@book-de

sktop:/work/nfs_root/frist_fs$ ls -l
total 12
drwxr-xr-x 2 book book 4096 2015-12-26 01:23 bin
lrwxrwxrwx 1 book book   11 2015-12-26 01:23 linuxrc -> bin/busybox
drwxr-xr-x 2 book book 4096 2015-12-26 01:23 sbin
drwxr-xr-x 4 book book 4096 2015-12-26 01:23 usr

 

 

制作最小根文件系统

1、

crw------- 1 root root 5, 1 2015-12-24 12:24 /dev/console
crw-rw-rw- 1 root root 1, 3 2015-12-24 12:06 /dev/null

mkdir dev

cd dev /

sudo mknod console c 5 1

sudo mknod null  c 1 3

3、

cd ..

mkdir etc

vi etc/inittab

console::askfirst:-/bin/sh

5、

mkdir /work/nfs_root/frist_fs/lib

book@book-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp *.so* /work/nfs_root/frist_fs/lib/ -d

 

怎么烧录到开发板上

制作yaffs2映像文件

tar xjf  yaffs_source_util_larger_small_page_nand.tar.bz2

/work/system/Development_util_ok/yaffs2/utils$make

 sudo cp mkyaffs2image /usr/local/bin/

sudo chmod +x /usr/local/bin/mkyaffs2image

book@book-desktop:/work/nfs_root$ mkyaffs2image

mkyaffs2image frist_fs frist_fs.yaffs2

 

添加ps功能

1、

mkdir proc

vi etc/inittab

  console::askfrist:-/bin/sh
  ::sysinit:/etc/init.d/rcS

mkdir etc/init.d

mkdir etc/init.d

vi etc/init.d/rcS

  mount -t proc none /proc

chmod +x etc/init.d/rcS

2、

mkdir proc

vi etc/inittab

  console::askfirst:-/bin/sh   ::sysinit:/etc/init.d/rcS

mkdir etc/init.d

mkdir etc/init.d

vi etc/init.d/rcS

  mount -a 

chmod +x etc/init.d/rcS

vi  etc/fstab

  # device    mount-point    type    options   dump  fsck   order
  proc         /proc         proc      defaults   0      0

 

添加设备驱动      

udev自动创建/dev/设备节点

简化版本mdev

Here's a typical code snippet from the init script:

[1] mount -t sysfs sysfs /sys

[2] echo /bin/mdev > /proc/sys/kernel/hotplug

[3] mdev -s

Of course, a more "full" setup would entail executing this before the previous code snippet:

[4] mount -t tmpfs mdev /dev

[5] mkdir /dev/pts

[6] mount -t devpts devpts /dev/pts

 

 

mkdir sys

vi  etc/fstab  挂载sys目录

 sysfs        /sys          sysfs     defaults    0     0

   tmpfs     /dev        tmpfs    defaults    0        0

vi  etc/init.d/rcS

#mount -t proc none /proc
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

 

制作jffs2映像

/work/GUI/xwindow/X/deps$

rm -rf zlib-1.2.3      强制删除

tar xzf  zlib-1.2.3.tar.gz  解压

./configure --shared --prfix=/usr/  配置

sudo make install         安装

 

book@book-desktop:/work/tools$  tar xjf mtd-utils-05.07.23.tar.bz2

book@book-desktop:/work/tools/mtd-utils-05.07.23/util$ make
book@book-desktop:/work/nfs_root$ mkfs.jffs2 -n -s 2048 -e 128KiB -d frist_fs -o first_fs.jffs2

-n表示不要在每个擦除块都加上清除标志

-s 2048 一页大小

-e 128 一块大小

-d表根目录

-o输出文件

set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2

修改根文件系统类型

        1、服务器允许那个目录那个目录可以挂载

挂接nfs服务{

        2、单板去挂接

配置文件、etc/exports

sudo vi /etc/exports

/work/nfs_root/first_fs   *(rw,sync,no_root_squash)        //允许目录被挂载

sudo /etc/init.d/nfs-kernel-server restart    //重启nfs服务

 sudo mount -t nfs 192.168.1.175:/work/nfs_root//frist_fs /mnt      //自己挂载实验

 

a、从flash启动根文件系统再用命令挂载nfs系统

开发板

ifconfig会没反应,需先ifconfig eth0 ip  才有反应

而且还要重启在设置才能ping通

先设定ip 确认能与虚拟机ping通

mkdir  /mnt

mount -t nfs -o nolock 192.168.1.175:/work/nfs_root/frist_fs /mnt       //挂载

 

b、直接从nfs启动

ifconfig会没反应,需先ifconfig eth0 ip  才有反应

而且还要重启在设置才能ping通

bootargsnoinitrd=root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

linux-2.6.22.6Documentation fsroot    //有关于它的说明

ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<auto>

set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.175:/work/nfs_root/frist_fs ip=192.168.1.110:192.168.1.175:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

在主机上编写

t.c 交叉编译t.o

在单板上运行

挂载成功

 

原文地址:https://www.cnblogs.com/CZM-/p/5078506.html