文章目录
- 什么是文件系统
- 如何制作根文件系统文件
- 添加登录密码
- 文件系统制作
- Squashfs
- 制作方式
- gzip & lzo & xz 压缩
- Jffs2
- 制作方式
- Ubi文件系统
什么是文件系统
Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中
如何制作根文件系统文件
下载busybox
官网:
以君正提供Busybox为例子
make isvp_uclibc_mini_defconfig
make -j
make install
将_install拷贝出来,即可制作根文件系统
添加登录密码
注意busybox需要证明
Uer internal password and group functions rather than system function 是被选中的状态
打开/etc/inittab文件,增加::sysinit:-/bin/login命令
针对/etc/passwd
root:x:0:0:root:/root:/bin/sh
用户名:用户登录时使用。长度应在 1 到 32 个字符之间。
密码:x 字符表示加密的密码存储在 /etc/shadow 文件中。请注意,您需要使用 passwd 命令来计算在 CLI 中输入的密码的哈希值,或者在 /etc/shadow 文件中存储/更新密码的哈希值,在这种情况下,密码哈希值存储为“x”。
用户 ID ( UID ):必须为每个用户分配一个用户 ID (UID)。UID 0(零)为 root 保留,UID 1-99 为其他预定义帐户保留。另外 UID 100-999 由系统保留用于管理和系统帐户/组。
组 ID (GID):主要组 ID(存储在 /etc/group 文件中)
用户 ID 信息:评论字段。它允许您添加有关用户的额外信息,例如用户的全名、电话号码等。该字段通过手指命令使用。
主目录:用户登录时所在目录的绝对路径。如果该目录不存在,则用户目录将变为 /
Command/shell:命令或 shell 的绝对路径 (/bin/bash)。通常,这是一个外壳。请注意,它不一定是外壳。arm Linux中是/bin/sh而不是/bin/bash。
shadow文件中内容为:
root:Wdfdfqwe:17226:::::
第一段表示登录的用户名
第二段表示密文密码。
设置用户密码:
passwd root
之后输入该用户的密码,之后在shadow中就会生成密文密码,你是无法知道具体含义的,生成密文密码后,可以将shadow文件中的密文密码放入到制作根文件系统的文件夹中,然后烧录以便不用每次都设置密码
文件系统制作
文件系统格式有三种:
- Squashfs
- Jffs2
- Ubi文件系统
Squashfs
SquashFS是一套基于Linux内核使用的压缩只读文件系统。该文件系统能够压缩系统内的文档,inode以及目录,文件最大支持2^64字节
制作方式
mksquashfs root-uclibc xxx.squashfs -comp xz
mksquashfs 是制作文件系统的工具
root-uclibc需要压缩的文件系统 文件夹
xxx.squashfs输出的可烧录的压缩文件
-comp xz 压缩格式: gzip (默认), lzo, xz
注意其中-b缺省,默认为128KB块大小,可指定
gzip & lzo & xz 压缩
gzip & lzo & xz【可以理解为不同压缩软件比如rar, 7z等等】
三大类型压缩算法对比
Jffs2
主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。
制作方式
mkfs.jffs2 -o xxx.jffs2 -r root-uclib -e 0x10000 -s 0x1000 -n -l -x zlib --pad
mkfs.jffs2:制作jffs2文件系统的工具
-o xxx.jffs2 : 输出的可烧录压缩文件
-r root-uclib: 输入的要压缩的文件夹
-e 0x10000:设定擦除块的大小为(默认: 64KB)
-s 0x1000:设定擦除块的大小为(默认: 64KB)
-n:指明不添加清楚标记(nand flash 有自己的校检块,存放相关的信息。) 如果挂载后会出现类似:CLEANMARKER node found at
0x0042c000 has totlen 0xc != normal 0x0 的警告,则加上-n 就会消失
-l:指定使用小端格式
-x zlib:指压缩格式
–pad:通常用 16 进制表示输出文件系统大小,不足部分用 0xff 补充
Ubi文件系统
在某种程度上,UBIFS可以被认为是JFFS2文件系统的下一代。
可以在其上运行标准文件系统,如ext2/ext3/ext4 等
制作方式:
mkfs.ubifs -e 0x1f000 -c 568 -m 2048 -d config/ -o config.ubifs -v