热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[国嵌攻略][101][根文件系统制作]

根文件系统一个嵌入式Linux系统可以有多个文件系统,但必须有第一个文件系统,也就是根文件系统。系统启动后看到的目录和目录里面的文件就是文件系统。建立根文件系统1.创建目录示例:

根文件系统

一个嵌入式Linux系统可以有多个文件系统,但必须有第一个文件系统,也就是根文件系统。系统启动后看到的目录和目录里面的文件就是文件系统。

 

建立根文件系统

1.创建目录

示例:

mkdir rootfs

cd rootfs

mkdir bin dev etc lib mnt proc sbin sys tmp usr var

mkdir usr/bin usr/lib usr/sbin lib/modules

 

2.创建设备文件

Linux系统中设备以文件的方式存在dev目录下,Linux系统启动时需要console文件和null文件。

示例:

cd dev

mknod -m 666 console c 5 1  -m 666属性,console设备文件名,c字符设备,5主设备号,1次设备号

mknod -m 666 null c 1 3

 

3.添加配置文件

配置文件与处理器架构无关

示例:

tar zxvf etc.tar.gz

cp etc/* rootfs/etc/

 

4.添加内核模块

make modules ARCH=arm CROSS_COMPILE=arm-linux-

make modules_install ARCH=arm INSTARLL_MOD_PATH=.../rootfs/

 

5.编译和安装busybox

5.1配置busybox

make menuconfig

busybox settings->build options->[*]build busybox as a static binary

busybox settings->build options->(arm-linux-)cross compiler prefix

busybox settings->installation options->[*]don’t use /usr

busybox settings->installation options->(.../rootfs)busybox installation prefix

5.2.编译busybox

make

5.2.安装busybox

make install

 

挂载根文件系统

1.文件系统类型

根据存储设备的硬件特性和系统需求,不同的文件系统有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为ram和flash,常用的基于存储设备的文件系统类型包括:jffs2,yaff2,ubifs,ramdisk等。

 

基于nand flash的文件系统:yaffs2,ubifs

基于norflash的文件系统:jffs2

基于内存的文件系统:ramdisk,initramfs

基于网络的文件系统:nfs

网络文件系统一般在开发阶段使用,内存文件系统的优势是启动速度快,nand flash文件的优势是可以保存用户数据,所在在实际产品中会采用内存文件系统和nand flash文件系统混用的情况。

 

2.使用initramfs挂载根文件系统

特点:

使用initramfs的优点在于启动速度快,缺点是无法修改文件系统里面的内容。一般在做成产品后使用。

 

2.1.在根文件系统下创建软链接

cd .../rootfs/

ln –s ./bin/busybox init

2.2.配置Linux内核

make menuconfig ARCH=arm

general setup->[*]initial ram filesystem and ram disk->(.../rootfs)initramfs source file(s)

 

2.3.编译Linux内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

2.4.设置启动参数

进入uboot设置环境变量

setenv bootargs noinitrd cOnsole=ttySAC0,115200

saveenv

 

2.5.下载内核文件

tftp 31000000 uImage

 

2.6.启动内核

bootm 31000000

 

3.使用nfs挂载根文件系统

特点:

使用nfs的优点在于可以通过网络直接修改文件系统里面的内容,缺点在于需要网络。一般在开发阶段使用。

 

3.1.配置内核

make menuconfig ARCH=arm

general setup->[ ]initial ram filesystem and ram disk

file systems->[*]network file systems->[*]root file system on nfs

 

3.2.编译Linux内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

3.3.设置启动参数

进入uboot设置环境变量

cOnsole=ttySAC0,115200   表示使用串口0,波特率是115200

root=/dev/nfs rw   表示使用根目录下的/dev/nfs设备作为文件系统,rw可读可写

nfsroot=192.168.1.101:.../rootfs   表示nfs服务器的地址和根文件系统的路径

ip=开发板IP地址:服务器IP地址:网关地址:地址掩码:开发板主机名:IP对应的网卡设备:动态域名获取

示例:

setenv bootargs noinitrd cOnsole=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.101:.../rootfs ip=192.168.1.230:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off

saveenv

 

3.4.配置NFS服务器

vim /etc/exports   修改NFS服务器路径

.../rootfs *(rw,sync,no_root_squash)

/etc/init.d/nfs restart   启动NFS服务器

 

3.5.下载内核文件

tftp 31000000 uImage

 

3.6.启动内核

bootm 31000000

 


推荐阅读
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 在Linux系统中,目录结构遵循文件系统层次标准(FHS),确保了系统的组织性和可维护性。其中,`/bin`目录是FHS要求必须存在的目录之一,主要存放了在单用户维护模式下仍可执行的基本命令和工具。这些命令不仅对root用户可用,普通用户也能使用,以确保系统在最小化运行状态下仍能进行基本的操作和管理。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • Apache Maven 3.5.0 版本的发布带来了多项重要特性和性能优化。该版本不仅改进了构建过程的效率,还增强了对复杂项目结构的支持。通过引入新的依赖解析机制和优化的插件系统,Maven 3.5.0 在提升用户体验的同时,也确保了更高的稳定性和兼容性。此外,该版本还修复了多个已知问题,进一步提升了整体的可靠性和安全性。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 在Linux环境下安装Oracle 11g时,经常会遇到中文显示异常的问题。本文详细介绍了如何解决安装界面中的中文乱码现象,确保用户在安装过程中能够正确显示中文字符。具体步骤包括调整系统语言设置、配置环境变量以及修改Oracle安装文件等方法,以确保安装过程顺利进行。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • Java中高级工程师面试必备:JVM核心知识点全面解析
    对于软件开发人员而言,随着技术框架的不断演进和成熟,许多高级功能已经被高度封装,使得初级开发者只需掌握基本用法即可迅速完成项目。然而,对于中高级工程师而言,深入了解Java虚拟机(JVM)的核心知识点是必不可少的。这不仅有助于优化性能和解决复杂问题,还能在面试中脱颖而出。本文将全面解析JVM的关键概念和技术细节,帮助读者全面提升技术水平。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • Liferay Portal 中 AutoEscape 构造函数的应用与实例代码解析 ... [详细]
  • 在Python 3环境中,当无法连接互联网时,可以通过下载离线模块包来实现模块的安装。具体步骤包括:首先从PyPI网站下载所需的模块包,然后将其传输到目标环境,并使用`pip install`命令进行本地安装。此方法不仅适用于单个模块,还支持依赖项的批量安装,确保开发环境的完整性和一致性。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
author-avatar
dcwzyb_271
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有