admin管理员组文章数量:1564657
根文件系统镜像 = 准备的文件 + 存储时的索引信息整合到一个文件中去
linux系统支持多种类型的文件系统:fat ext4 yaffs jffs ubifs ...
1 基于掉电不丢失设备的文件系统镜像
1.1 jffs2文件系统
专门针对norflash芯片开发的文件系统
1.2 yaffs2文件系统
专门针对nandflash芯片开发的文件系统
1.3 cramfs
它是由linus开发的
是一种只读的压缩文件系统
其特点:
1)镜像文件压缩存储
2)其管理的分区只能执行读操作 不能执行写和删除操作
实验步骤:操作索引的代码 数据+索引=镜像文件
1)配置内核 让内核支持cramfs (将fs/cramfs代码编译到uImage)
cd /home/tarena/porting/kernel/
make menuconfig
File systems --->
[*] Miscellaneous filesystems --->
<*> Compressed ROM file system support (cramfs)
make uImage
让开发板使用新内核
cp arch/arm/boot/uImage /tftpboot/
setenv bootcmd ping 192.168.1.6\;ping 192.168.1.6\;tftp 48000000 uImage \;bootm 48000000
2) 将根文件系统数据和索引制作成镜像文件
cd /home/tarena/porting/busybox-1.23.2/
sudo mkfs.cramfs _install/ rootfs.cramfs
3)验证镜像的有效性
cp rootfs.cramfs /tftpboot/
tftp 48000000 rootfs.cramfs
mmc write 48000000 20800 0x1200
setenv bootargs root=/dev/mmcblk0p2 rootfstype=cramfs ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0
init=/linuxrc console=ttySAC0 maxcpus=1 lcd=wy070ml tp=gslx680
saveenv
4) 验证cramfs的特点
压缩存储的镜像
du -h _install
du -h rootfs.cramf
只读的文件系统:其管理的分区只能执行读操作
不能执行写和删除操作
touch 1.txt
rm led_drv.ko
1.4 ext4
嵌入式中使用比较多的文件系统类型, 常见手机中
如何使用U盘
1)分区
2)格式化
3) 挂载U盘
mount -t vfat /dev/sda1 /mnt
4)使用U盘
touch /mnt/2.txt
5)卸载U盘
umount /mnt
实验步骤:
使用ubuntu18.04系统同学,sudo cp 将提供 mke2fs.conf /etc/ 再完成后续步骤
1)配置内核 支持ext4类型镜像
cd /home/tarena/porting/kernel
make menuconfig
File systems --->
<*> The Extended 4 (ext4) filesystem
make uImage
2) 制作镜像
cd /home/tarena/porting/busybox-1.23.2
a)创建一个8MB的全0文件
dd if=/dev/zero of=rootfs.ext4 bs=1024 count=8192
du -h rootfs.ext4
hexdump rootfs.ext4
if=/dev/zero, input file 源数据
/dev/zero虚拟设备,读取时读到的就是0
of=rootfs.ext4, output file 目标文件
bs=1024, 每次从zero读取1024字节数据
count=8192, 循环读写从次数
b) 格式化8M分区
mkfs.ext4 rootfs.ext4
c) 创建挂载点目录
mkdir mnt
d) 挂载该8M分区
sudo mount -t ext4 rootfs.ext4 mnt
e) 向该分区写入准备好的文件
sudo cp _install/* mnt/ -a
f) 卸载分区设备
sudo umount mnt/
3)验证镜像的有效性
cp rootfs.ext4 /tftpboot/
板子上执行
tftp 48000000 rootfs.ext4
mmc write 48000000 20800 4000
setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext4 ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0 init=/linuxrc console=ttySAC0 maxcpus=1 lcd=wy070ml tp=gslx680
saveenv
4)重启开发板
touch 1.txt
如何将mmcblk0p3分区使用起来?
在开发板上执行:
1) ls /dev/mmcblk0p*
2) 格式化分区
mkfs.vfat /dev/mmcblk0p3
3) 挂载分区
mount -t vfat /dev/mmcblk0p3 /mnt
4) 查看分区使用情况
df
5) 向分区中写入数据
touch /mnt/1.xta
echo dafdasfd >/mnt/1.xta
6) 可以将挂载命令写入rcS 实现开机自动挂载
vi /etc/init.d/rcS
2 基于内存文件系统镜像
ramdisk ,将内存的一部分当磁盘使用
系统启动时将磁盘中的根文件系统加载到内存中去
后续过程使用内存中的根文件系统
可以加快根文件系统的访问效率
但是消耗更多的内存空间
实验步骤:
1)配置内核支持 ramdisk
make menuconfig
Device Drivers --->
[*] Block devices --->
<*> RAM block device support
(8192) Default RAM disk size (kbytes)
make uImage
让开发板使用新内核
cp arch/arm/boot/uImage /tftpboot
2)制作ramdisk镜像文件
cd /home/tarena/porting/busybox-1.23.2
a)创建一个8MB的全0文件
dd if=/dev/zero of=rootfs.ramdisk bs=1024 count=8192
du -h rootfs.ramdisk
hexdump rootfs.ramdisk
if=/dev/zero, input file 源数据
/dev/zero虚拟设备,读取时读到的就是0
of=rootfs.ramdisk, output file 目标文件
bs=1024, 每次从zero读取1024字节数据
count=8192, 循环读写从次数
b) 格式化8M分区
mkfs.ext2 rootfs.ramdisk
c) 创建挂载点目录
mkdir mnt
d) 挂载该8M分区
sudo mount -t ext2 rootfs.ramdisk mnt
e) 向该分区写入准备好的文件
sudo cp _install/* mnt/ -a
f) 卸载分区设备
sudo umount mnt/
3)验证镜像的有效性
cp rootfs.ramdisk /tftpboot/
tftp 48000000 rootfs.ramdisk
mmc write 48000000 20800 4000
加载内核 加载根文件系统 启动内核
setenv bootcmd ping 192.168.1.6\;ping 192.168.1.6\; tftp 48000000 uImage \;mmc read 0x49000000 20800 0x4000 \; bootm 48000000
setenv bootargs root=/dev/ram rw initrd=0x49000000,8M ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0 init=/linuxrc console=ttySAC0 maxcpus=1 lcd=wy070ml tp=gslx680
saveenv
4) 特性验证
touch 1.txt //在内存中中创建的
重启后消失
3网络文件系统
3.1 nfs方式可以挂载
1)根文件系统
setenv bootargs root=/dev/nfs nfsroot=serverip:路径 ...
2) 挂应用文件系统
在ubuntu系统中执行
sudo vi /etc/exports
/home/tarena/porting/ *(rw,sync,no_root_squash)
sudo /etc/init.d/nfs-kernel-server restart
sudo exportfs
在telnet终端或者串口终端中执行
cd /
mkdir work
mount -o nolock -t nfs 192.168.1.8:/home/tarena/porting work
-o nolcok: 不使用文件锁
版权声明:本文标题:根文件系统镜像的制作与使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727332173a1108679.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论