[Linux驱动开发] cramfs文件系统制作及移植
2012-03-20 19:03
465 查看
制作cramfs文件系统
此处将上一篇博文制作的first_fs文件系统拷贝到/opt中,并更改名称为rootfs
我们要做的是将rootfs文件系统制作成cramfs类型的文件系统,并将其烧录到Nand Flash中
1、准备事项:
添加内核菜单选项:
make menuconfig
General setup ---> (设置通用设置)
[*] Configure standard kernel features (for small systems) --->
Choose SLAB allocator (SLAB) --->
File systems --->
<*> Kernel automounter support (支持内核自动挂载)
Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support (JFFS2支持)
(0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*] JFFS2 write-buffering support
<*> Compressed ROM file system support (cramfs) (cramfs支持)
Pseudo filesystems --->
[*] /proc file system support (procfs支持)
[*] Sysctl support (/proc/sys)
[*] sysfs file system support (sysfs支持)
[*] Virtual memory file system support (former shm fs) (tmpfs支持)
Networking --->
[*] Networking support
Networking options --->
[*] TCP/IP networking
[ ] IP: BOOTP support (去掉这个需选项)
File systems --->
Network File Systems --->
< > NFS file system support (不支持NFS)
[ ] Root file system on NFS (根文件不保存为NFS格式)
2 修改内核
根据“nand flash的布局图”,修改内核nandflash分区请修改内核源代码的arch/arm/ plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.size = 0x60000,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = 0x60000,
.size = 0x200000,
},
[2] = {
.name = "rootfs",
.offset = 0x260000,
.size = 0x800000,
}
};
重新编译内核make uImage,并将其拷贝到/tftpboot中
3 制作cramfs文件系统和部署
由于系统提供制作cramfs文件系统的工具,则可以利用。具体操作如下;
terry@terry-virtual-machine:/opt$ mkfs.cramfs rootfs rootfs.cramfs
将NFS测试好的文件系统rootfs通过上述命令制作成为只读的cramfs文件系统
rootfs.cramfs.将其下载到flash的第一块分区上(注意这个根据你自己的分区来指定)
在U-BOOT的终端:
3.1 烧录内核
OpenJTAG> tftp 30800000 uImage (从/tftpboot将uImage拷贝到虚拟内存的0x30800000位置)
OpenJTAG> nand erase 60000 200000 (在Nand Flash的0x60000处擦出一块200000(2MB)大小的空间)
OpenJTAG> nand write 30800000 60000 200000 (从虚拟内存的0x30800000读取200000大小文件内容到Nand Flash的0x60000)
OpenJTAG> setenv bootcmd nand read 30800000 60000 200000 \;bootm 30800000 (设置环境参数,u_boot从Nand Flash的0x60000处读取200000大小的文件内容到内存的0x30800000,并且系统从内存的0x3080000处启动)
3.2 烧录CRAMFS
OpenJTAG> tftp 30800000 rootfs.cramfs (从/tftpboot将rootfs.cramfs拷贝到内存0x30800000中)
OpenJTAG> nand erase 260000 800000 (同上,在Nand Flash的0x260000处擦出800000(8MB)大小空间)
OpenJTAG> nand write 30800000 260000 800000 (将内存中0x30800000处的rootfs.cramfs写到Nand Flash的0x260000处)
这样制作好的cramfs文件系统就放置在flash的第一块分区,然后指定启动参数:
OpenJTAG> setenv bootargs console=ttySAC0,115200 root=1f02 init=/linuxrc (设置环境参数,此处的1f02对应我们前面设置Nand Flash分区中的rootfs分区)
OpenJTAG> save
OpenJTAG> boot
至此cramfs的文件系统挂载成功
cramfs文件系统的特性是启动快防止误操作,且只读
在这里我们进行任何改变文件系统的事情是不能够执行的,比如:mkdir terry,得到如下结果:
此处将上一篇博文制作的first_fs文件系统拷贝到/opt中,并更改名称为rootfs
我们要做的是将rootfs文件系统制作成cramfs类型的文件系统,并将其烧录到Nand Flash中
1、准备事项:
添加内核菜单选项:
make menuconfig
General setup ---> (设置通用设置)
[*] Configure standard kernel features (for small systems) --->
Choose SLAB allocator (SLAB) --->
File systems --->
<*> Kernel automounter support (支持内核自动挂载)
Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support (JFFS2支持)
(0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
[*] JFFS2 write-buffering support
<*> Compressed ROM file system support (cramfs) (cramfs支持)
Pseudo filesystems --->
[*] /proc file system support (procfs支持)
[*] Sysctl support (/proc/sys)
[*] sysfs file system support (sysfs支持)
[*] Virtual memory file system support (former shm fs) (tmpfs支持)
Networking --->
[*] Networking support
Networking options --->
[*] TCP/IP networking
[ ] IP: BOOTP support (去掉这个需选项)
File systems --->
Network File Systems --->
< > NFS file system support (不支持NFS)
[ ] Root file system on NFS (根文件不保存为NFS格式)
2 修改内核
根据“nand flash的布局图”,修改内核nandflash分区请修改内核源代码的arch/arm/ plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "uboot",
.size = 0x60000,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = 0x60000,
.size = 0x200000,
},
[2] = {
.name = "rootfs",
.offset = 0x260000,
.size = 0x800000,
}
};
重新编译内核make uImage,并将其拷贝到/tftpboot中
3 制作cramfs文件系统和部署
由于系统提供制作cramfs文件系统的工具,则可以利用。具体操作如下;
terry@terry-virtual-machine:/opt$ mkfs.cramfs rootfs rootfs.cramfs
将NFS测试好的文件系统rootfs通过上述命令制作成为只读的cramfs文件系统
rootfs.cramfs.将其下载到flash的第一块分区上(注意这个根据你自己的分区来指定)
在U-BOOT的终端:
3.1 烧录内核
OpenJTAG> tftp 30800000 uImage (从/tftpboot将uImage拷贝到虚拟内存的0x30800000位置)
OpenJTAG> nand erase 60000 200000 (在Nand Flash的0x60000处擦出一块200000(2MB)大小的空间)
OpenJTAG> nand write 30800000 60000 200000 (从虚拟内存的0x30800000读取200000大小文件内容到Nand Flash的0x60000)
OpenJTAG> setenv bootcmd nand read 30800000 60000 200000 \;bootm 30800000 (设置环境参数,u_boot从Nand Flash的0x60000处读取200000大小的文件内容到内存的0x30800000,并且系统从内存的0x3080000处启动)
3.2 烧录CRAMFS
OpenJTAG> tftp 30800000 rootfs.cramfs (从/tftpboot将rootfs.cramfs拷贝到内存0x30800000中)
OpenJTAG> nand erase 260000 800000 (同上,在Nand Flash的0x260000处擦出800000(8MB)大小空间)
OpenJTAG> nand write 30800000 260000 800000 (将内存中0x30800000处的rootfs.cramfs写到Nand Flash的0x260000处)
这样制作好的cramfs文件系统就放置在flash的第一块分区,然后指定启动参数:
OpenJTAG> setenv bootargs console=ttySAC0,115200 root=1f02 init=/linuxrc (设置环境参数,此处的1f02对应我们前面设置Nand Flash分区中的rootfs分区)
OpenJTAG> save
OpenJTAG> boot
至此cramfs的文件系统挂载成功
cramfs文件系统的特性是启动快防止误操作,且只读
在这里我们进行任何改变文件系统的事情是不能够执行的,比如:mkdir terry,得到如下结果:
相关文章推荐
- [Linux驱动开发] ramdisk文件系统制作及移植
- [Linux驱动开发] jffs2 文件系统制作及移植
- [Linux驱动开发] 根文件系统制作
- real6410移植linux2.6.39.4内核(2)-添加nand flash驱动及启动cramfs文件系统
- 嵌入式软件开发培训笔记——嵌入式linux内核与文件系统移植与分析
- 内核移植和文件系统制作(2):linux内核最小系统和initramfs文件系统
- linux 内核移植和根文件系统的制作
- linux开发之嵌入式根文件系统的定制及移植
- linux-2.6.24.4内核移植到s3c2440----使用busybox-1.9.2制作根文件系统
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--Bootloader的功能
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--制作根文件系统
- Linux设备驱动开发详解-Note(9)--- Linux 文件系统与设备文件系统(1)
- linux 内核移植和根文件系统的制作
- Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(2)
- linux 内核移植和根文件系统的制作
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作
- 2012-Linux->19(Linux-2.6.32.2内核在mini2440上的移植---根文件系统制作)
- arm-linux移植手记(四)基于busybox1.16.0的根文件系统制作
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作