怎么制作系统文件linux制作根文件系统的必要步骤如何制作根文件系统




怎么制作系统文件linux制作根文件系统的必要步骤如何制作根文件系统

2022-07-20 20:01:04 网络知识 官方管理员

一、根文件系统预备知识

  • 嵌入式Linux中都需要构建根文件系统,构建根文件系统的规则在FHS(FilesystemHierarchyStandard)文档中,下面是根文件系统顶层目录

目录内容

bin存放所有用户都可以使用的、基本的命令。

sbin存放的是基本的系统命令,它们用于启动系统、修复系统等。

usr里面存放的是共享、只读的程序和数据。

proc这是个空目录,常作为proc文件系统的挂载点。

dev该目录存放设备文件和其它特殊文件。

etc存放系统配置文件,包括启动文件。

lib存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。

boot引导加载程序使用的静态文件

home用户主目录,包括供服务账号锁使用的主目录,如FTP

mnt用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。

opt给主机额外安装软件所摆放的目录。

rootroot用户的主目录

tmp存放临时文件,通常是空目录。

var存放可变的数据。

1、建立根文件系统目录

  • 进入到/opt/studyarm目录,新建建立根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod+xcreate_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。
#!/bin/shecho"------Createrootfsdirectonsstart...--------"mkdirrootfscdrootfsecho"--------Createroot,dev....----------"mkdirrootdevetcboottmpvarsysproclibmnthomemkdiretc/init.detc/rc.detc/sysconfigmkdirusr/sbinusr/binusr/libusr/modulesecho"makenodeindev/consoledev/null"mknod-m600dev/consolec51mknod-m600dev/nullc13mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/tempmkdirvar/libvar/lockvar/runvar/tmpchmod1777tmpchmod1777var/tmpecho"-------makedirectiondone---------"
  • 改变了tmp目录的使用权,让它开启sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入式应用不一定用root的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。

2、建立动态链接库

  • 动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。
cd/mnt/hgfs/sharetar–zxvfroot_qtopia.tgz–C/opt/studyarmcp–rfd/opt/studyarm/root_qtopia/lib/*/opt/studyarm/rootfs/lib/*

3、交叉编译Bosybox

  • Bosybox是一个遵循GPLv2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox可以自动生成根文件系统所需的bin、sbin、usr目录和linuxrc文件。

1、解压busybox

cd/mnt/hgfs/sharetar–zxvfbusybox-1.13.3.tar.tgz–C/opt/studyarm
  • 2、进入源码,修改Makefile文件:
cd/opt/studyarm/busybox-1.13.3
  • 修改:
CROSS_COMPILE?=arm-linux-//第164行ARCH?=arm//第189行

更多linux内核视频教程文档资料免费领取后台私信【内核】自行获取.

怎么制作系统文件(linux制作根文件系统的必要步骤)(1)

Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈-学习视频教程-腾讯课堂

4、配置busybox

  • 输入makemenuconfig进行配置

(1)、BusyboxSettings--->GeneralConfiguration--->

[*]Showverboseappletusagemessages[*]Storeappletusagemessagesincompressedform[*]Support–install[-s]toinstallappletlinksatruntime[*]Enablelocalesupport(systemneedslocaleforthistowork)[*]Supportfor–long-options[*]Usethedevptsfilesystemforunix98PTYs[*]Supportwritingpidfiles[*]RuntimeSUID/SGIDconfigurationvia/etc/busybox.config[*]Suppresswarningmessageif/etc/busybox.confisnotreadableBuildOptions--->[*]BuildBusyBoxasastaticbinary(nosharedlibs)[*]BuildwithLargeFileSupport(foraccessingfiles>2GB)InstallationOptions->[]Don’tuse/usrAppletslinks(assoft-links)--->(./_install)BusyBoxinstallationprefixBusyboxLibraryTuning--->(6)Minimumpasswordlegth(2)MD5:TradeBytesforSpeed[*]Fsater/procscanningcode(+100bytes)[*]Commandlineediting(1024)Maximumlengthofinput[*]vi-stylelineeditingcommands(15)Historysize[*]Historysaving[*]Tabcompletion[*]Fancyshellprompts(4)Copybuffersize,inkilobytes[*]Useioctlnamesratherthanhexvaluesinerrormessages[*]SupportinfinibandHW

(2)、LinuxModuleUtilities--->(/lib/modules)Defaultdirectorycontainingmodules(modules.dep)Defaultnameofmodules.dep

[*]insmod[*]rmmod[*]lsmod[*]modprobe-----optionscommontomultiplemodutils[]supportversion2.2/2.4Linuxkernels[*]Supporttaintedmodulecheckingwithnewkernels[*]Supportformodule.aliasesfile[*]supportformodules.symbolsfile

(3)、在busybox中配置对dev下设备类型的支持

  • dev的创建有三种方法:
  • 手动创建:在制作根文件系统的时候,就在dev目录下创建好要使用的设备文件,系统挂接根文件系统后,就可以使用dev目录下的设备文件了。
  • 使用devfs文件系统:这种方法已经过时,具有不确定的设备映射、没有足够的主/次设备号、devfs消耗大量的内存。
  • udev:它是个用户程序,能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。它的操作相对复杂,但灵活性很高
  • mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。下面的选项将增加对mdev的支持。
LinuxSystemUtilities--->[*]Support/etc/mdev.conf[*]Supportcommandexecutionatdeviceaddition/removal

5、编译busybox

编译busybox到指定目录:cd/opt/studyarm/busybox-1.13.3makeCONFIG_PREFIX=/opt/studyarm/rootfsinstall在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。

  • 建立etc目录下的配置文件
  1. etc/mdev.conf文件,内容为空。
  2. 拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。
  3. etc/sysconfig目录下新建文件HOSTNAME,内容为”MrFeng”。
  4. etc/inittab文件:
#etc/inittab::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrl altdel:/sbin/reboot::shutdown:/bin/umount-a–r

6、etc/init.d/rcS文件:

#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask022exportPATHrunlevelprevlevelecho"----------muntall----------------"mount-aecho/sbin/mdev>/proc/sys/kernel/hotplugmdev-secho"***********************************************"echo"****************StudyingARM*********************"echo"Kernelversion:linux-2.6.29.1"echo"Student:Fengdongrui"echo"Date:2009.07.15"echo"***********************************************"/bin/hostname-F/etc/sysconfig/HOSTNAME
  • 使用以下命令改变rcS的执行权限:
cd/mnt/hgfs/sharetar–zxvfroot_qtopia.tgz–C/opt/studyarmcp–rfd/opt/studyarm/root_qtopia/lib/*/opt/studyarm/rootfs/lib/*0

7、etc/fstab文件:

cd/mnt/hgfs/sharetar–zxvfroot_qtopia.tgz–C/opt/studyarmcp–rfd/opt/studyarm/root_qtopia/lib/*/opt/studyarm/rootfs/lib/*1

8、etc/profile文件:

cd/mnt/hgfs/sharetar–zxvfroot_qtopia.tgz–C/opt/studyarmcp–rfd/opt/studyarm/root_qtopia/lib/*/opt/studyarm/rootfs/lib/*2
  • 制作根文件系统映像文件
  • 使用以下命令安装好yaffs文件系统制作工具:
cd/mnt/hgfs/sharetar–zxvfroot_qtopia.tgz–C/opt/studyarmcp–rfd/opt/studyarm/root_qtopia/lib/*/opt/studyarm/rootfs/lib/*3
  • 在/opt/studyarm目录下,使用命令mkyaffs2imagerootfsrootfs.img生成根文件系统映像文件。

二、启动系统

  • 将前面两章生成的内核映像文件和根文件系统映像文件下载到mini2440开发板,查看启动信息。我成功移植启动信息如下:
cd/mnt/hgfs/sharetar–zxvfroot_qtopia.tgz–C/opt/studyarmcp–rfd/opt/studyarm/root_qtopia/lib/*/opt/studyarm/rootfs/lib/*4
  • 基于S3C2440的Linux内核移植和yaffs2文件系统制作.pdfourdev_464685.rar(文件大小:64K)(原文件名:基于S3C2440的Linux内核移植和yaffs2文件系统制作.rar)

发表评论:

最近发表
网站分类
标签列表