基本文件系统结构:
/dev —— 设备文件目录
/proc —— 可不要
/bin —— 基本用户命令工具和程序
/etc —— 系统配置文件和脚本
/lib ——包含系统库和内核模块
/usr —— 可不要
/boot —— 作为系统启动存放Grub内核的文件夹,好像也可以不要
最低限度的配置文件,如/etc/rc/rcS、/etc/inittab、/etc/fstab等;
设备:/dev/hd*、/dev/ tty*、/dev/fd0、/dev/console;基本程序运行所需的函数库。
首先创建基本目录:
# mkdir dev proc bin etc etc/init.d lib usr boot
然后再创建设备文件:
可以用mknod手工建立,也可以直接从原系统的/dev目录下拷贝过来。
1、手工建立的方法:
# ls -l /dev/console
crw------- 1 root root 5 …
这样就查看到了console设备的主设备号是5,辅设备号是1,是一个标记为C的字符设备。
于是,可以用mknod建立一个同样的设备文件:
# cd /mnt/cf/dev
# mknod console c 5 1
# mknod tty c 5 0
2、直接拷贝的方法
直接从/dev下把需要的设备文件拷贝过来。这些设备文件是特殊文件,在拷贝时一定要加上-r参数才能拷贝。
#cp -r /dev/console /mnt/cf/dev
#cp -r /dev/null /mnt/cf/dev
以下设备是必须的console、null、hda、hda1、tty、fb0、ttyS0、ttyS1、/dev/msys/fla、/dev/msys/fla1等。console一般终端机设备;null空设备;tty VGA显示虚拟机设备;msys/fla doc存储设备;fb0 Frame buffer设备;ttyS0 串口设备Port1;ttyS1 串口设备Port2;hda硬盘设备。
接下来是几个配置文件的创建和设置:
init作为内核启动后执行的文件系统中的第一个进程,它完全控制着系统如何进一步引导的流程。为了实现最小化文件系统,就必须根据init的执行流程来安排整个系统的进一步引导。init有一个配置文件/etc/initab来决定其行为,不同的系统中的init配置条目有所不一样,本课题设计的嵌入式系统中使用busybox init,其配置文件与桌面的配置文件不太一致。init读取/etc/inittab时,首先找出标明sysinit的一行,并执行其后被指定的脚本文件,这个脚本文件通常类似/etc/init.d/rcS,它是一组建立基本系统服务的shell程序,诸如:
(1)挂载/etc/fstab文件中指定的分区到指定的目录;
(2)对所有磁盘执行fsck;
(3)启动GUI程序;
(4)打开串口。
当/etc/init.d/rcS执行结束后,控制权回到init上,接下来init进程会根据/etc/inittab的说明在指定的终端上运行shell程序,通常为/bin/sh或者login程序。至此一个简单的Linux的启动过程就结束了。
配制文件/etc/inittab内容如下所示:
::sysinit: /etc/init.d/rcS //指定初始化文件
::respawn: /bin/getty 9600 ttyS0 //打开一个串口,波特率9600
::respawn: /bin/sh //启动时执行shell
::ctrlaltdel: /bin/unount -a –r //捕捉ctrl+alt+del快捷键,退出系统
::shutdown:/bin/unount -a -r //关机时动作,卸载所有文件系统
配制文件/etc/init.d/rcS内容如下所示(这个文件创建完成后需要用命令chmod +x rcS命令将其变为可执行shell):
#! /bin/sh
mount -a //挂载/etc/fstab文件中指定的分区到指定的目录
cd ../
./minigui //启动minigui程序
(3)配制文件fstab内容如下所示:
/dev/hda1 / ext2 defaults 1 1
none /proc proc defaults 0 0
busybox构建出来的init程序用到的inittab文件的语法和一般Linux操作系统的不一样,不能直接把原系统/etc下inittab文件拷贝过来,但是结构大同小异,好像就是identifier、run_level没有注明。
/dev —— 设备文件目录
/proc —— 可不要
/bin —— 基本用户命令工具和程序
/etc —— 系统配置文件和脚本
/lib ——包含系统库和内核模块
/usr —— 可不要
/boot —— 作为系统启动存放Grub内核的文件夹,好像也可以不要
最低限度的配置文件,如/etc/rc/rcS、/etc/inittab、/etc/fstab等;
设备:/dev/hd*、/dev/ tty*、/dev/fd0、/dev/console;基本程序运行所需的函数库。
首先创建基本目录:
# mkdir dev proc bin etc etc/init.d lib usr boot
然后再创建设备文件:
可以用mknod手工建立,也可以直接从原系统的/dev目录下拷贝过来。
1、手工建立的方法:
# ls -l /dev/console
crw------- 1 root root 5 …
这样就查看到了console设备的主设备号是5,辅设备号是1,是一个标记为C的字符设备。
于是,可以用mknod建立一个同样的设备文件:
# cd /mnt/cf/dev
# mknod console c 5 1
# mknod tty c 5 0
2、直接拷贝的方法
直接从/dev下把需要的设备文件拷贝过来。这些设备文件是特殊文件,在拷贝时一定要加上-r参数才能拷贝。
#cp -r /dev/console /mnt/cf/dev
#cp -r /dev/null /mnt/cf/dev
以下设备是必须的console、null、hda、hda1、tty、fb0、ttyS0、ttyS1、/dev/msys/fla、/dev/msys/fla1等。console一般终端机设备;null空设备;tty VGA显示虚拟机设备;msys/fla doc存储设备;fb0 Frame buffer设备;ttyS0 串口设备Port1;ttyS1 串口设备Port2;hda硬盘设备。
接下来是几个配置文件的创建和设置:
init作为内核启动后执行的文件系统中的第一个进程,它完全控制着系统如何进一步引导的流程。为了实现最小化文件系统,就必须根据init的执行流程来安排整个系统的进一步引导。init有一个配置文件/etc/initab来决定其行为,不同的系统中的init配置条目有所不一样,本课题设计的嵌入式系统中使用busybox init,其配置文件与桌面的配置文件不太一致。init读取/etc/inittab时,首先找出标明sysinit的一行,并执行其后被指定的脚本文件,这个脚本文件通常类似/etc/init.d/rcS,它是一组建立基本系统服务的shell程序,诸如:
(1)挂载/etc/fstab文件中指定的分区到指定的目录;
(2)对所有磁盘执行fsck;
(3)启动GUI程序;
(4)打开串口。
当/etc/init.d/rcS执行结束后,控制权回到init上,接下来init进程会根据/etc/inittab的说明在指定的终端上运行shell程序,通常为/bin/sh或者login程序。至此一个简单的Linux的启动过程就结束了。
配制文件/etc/inittab内容如下所示:
::sysinit: /etc/init.d/rcS //指定初始化文件
::respawn: /bin/getty 9600 ttyS0 //打开一个串口,波特率9600
::respawn: /bin/sh //启动时执行shell
::ctrlaltdel: /bin/unount -a –r //捕捉ctrl+alt+del快捷键,退出系统
::shutdown:/bin/unount -a -r //关机时动作,卸载所有文件系统
配制文件/etc/init.d/rcS内容如下所示(这个文件创建完成后需要用命令chmod +x rcS命令将其变为可执行shell):
#! /bin/sh
mount -a //挂载/etc/fstab文件中指定的分区到指定的目录
cd ../
./minigui //启动minigui程序
(3)配制文件fstab内容如下所示:
/dev/hda1 / ext2 defaults 1 1
none /proc proc defaults 0 0
busybox构建出来的init程序用到的inittab文件的语法和一般Linux操作系统的不一样,不能直接把原系统/etc下inittab文件拷贝过来,但是结构大同小异,好像就是identifier、run_level没有注明。