嵌入式产品:编译文件系统

文件系统:目录+文件,再封装成一定的文件系统格式
Busybox是一个UNIX系统工具集,它将很多普通的UNIX工具集成到一个很小的可执行文件中,为普通用户提供大多数常用的命令。
在生成的文件系统的/bin下的所有命令软连接,都指向了/bin/busybox。

准备:
安装字符终端处理库ncurses
sudo apt-get install libncurses5-dev

编译文件系统

1. 下载
http://busybox.net/downloads/
http://git.busybox.net/busybox/
2. 解压
3. 配置
	a. make menuconfig
	b. 编译busybox成一个静态文件:
	busybox settings--->build options---> [*] Build Busybox as a static binary(no shared libs)
	c. 指定安装目录:
	busybox settings ---> installation options --->destination path
	d. 指定交叉编译器路径:Cross Compiler prefix
4. 编译:make
5. 安装:make install
6. 已有的目录:bin  linuxrc  sbin  usr

添加目录文件

1. 创建目录:
mkdir lib etc dev sys proc tmp var opt mnt home root media
mkdir usr/bin usr/sbin usr/lib lib/modules var/log -p
2. 创建设备节点
sudo mknod -m 666 dev/console c 5 1
sudo mknod -m 666 dev/null c 1 3
3. 复制so库:把交叉编译器的lib下的文件全部复制当前/lib
4. 复制内核模块:把.ko文件复制到lib/modules中
5. etc配置文件
# 复制busybox源码的文件
cp busybox/examples/bootfloppy/etc/* ./etc/ -a
# 复制PC机文件
cp /etc/{passwd,shadow,group} ./etc/ -a

用户

/etc/passwd存放用户信息
用户名:口令(真正的加密口令放在/etc/shadow):UID(用户标识号):GID(组标识号):注释:用户的根目录:登录的shell
/etc/shadow存放用户加密的密码:
用户名:密码:最后一次修改密码的日期(距离1970.1.1的天数):修改密码最小相隔天数:密码需要重新更改的天数:警告天数:密码失效的宽限时间:失效的日期(距离1970.1.1的天数):保留
/etc/group存放用户组信息:
用户组名称:用户组密码:GID:以此组为附加组的用户列表

启动顺序

kernel启动挂载文件系统后最先执行的是linuxc,linuxc指向/bin/busybox,busybox的init完成系统的初始化工作,关机前的工作等。busybox解析/etc/inittab,在/etc/inittab中启动/etc/init.d/rcS。在/etc/profile文件设置PATH(可执行文件路径),LIBRARY_PATH(编译时查找库路径),LD_LIBRARY_PATH(可执行程序运行时查找库路径),umask 0222(创建的文件的默认权限为644)。开机启动程序在/etc/init.d/rcS启动。

修改初始化文件/etc/inittab(决定启动哪些进程,以什么级别运行)

#初始化
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
#快捷方式ctrl+alt+del
::ctrlaltdel:/bin/umount -a -r
#关机时卸载磁盘,关闭系统交换区
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff –a
#登陆终端方法1(运行级别2345)
1:2345:respawn:/sbin/getty 115200 tty1
2:2345:respawn:/sbin/getty 115200 tty2
3:2345:respawn:/sbin/getty 115200 tty3
#登陆终端方法2(“-”:登陆终端时启动/etc/profile)
tty4::askfirst:-/bin/sh
#需要登陆
#tty4::askfirst:-/bin/login
#启动后进入命令行
id:3:initdefault:
#启动后进入窗口
#id:5:initdefault:

getty进程来提供虚拟终端设备的服务
标签字段的值是1,1是设备tty1的数字后缀,tty1与相应的进程相关联,该getty进程可以启动的runlevel是2,3,4和5,当该进程终止时init马上就重新启动它。启动进程的路径名是/sbin/getty,该进程是实现虚拟终端支持的最小版本的getty,为tty1提供启动虚拟设备的进程。

挂载

修改文件/etc/fstab(挂载哪些设备)
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0

查看目录大小

du -mh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值