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

一、根文件系统预备知识嵌入式Linux中都需要构建根文件系统,构建根文件系统的规则在FHS(Filesystem Hierarchy Standard)文档中,下面是根文件系统顶层目录。目录 内容

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

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

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

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

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

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

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

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

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

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

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

root root用户的主目录

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

var 存放可变的数据。

1、建立根文件系统目录进 入到/opt/studyarm目录,新建建立根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。#!/bin/shecho "------Create rootfs directons start...--------"mkdir rootfscd rootfsecho "--------Create root,dev....----------"mkdir root dev etc boot tmp var sys proc lib mnt homemkdir etc/init.d etc/rc.d etc/sysconfigmkdir usr/sbin usr/bin usr/lib usr/modulesecho "make node in dev/console dev/null"mknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3 mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/tempmkdir var/lib var/lock var/run var/tmpchmod 1777 tmpchmod 1777 var/tmpecho "-------make direction done---------"改变了tmp目录的使用权,让它开启 sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入 式应用不一定用root的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。2、建立动态链接库动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。cd /mnt/hgfs/sharetar –zxvf root_qtopia.tgz –C /opt/studyarmcp –rfd /opt/studyarm/root_qtopia/lib/* /opt/studyarm/rootfs/lib/*3、交叉编译BosyboxBosybox是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox可以自动生成根文件系统所需的bin、sbin、usr目录和linuxrc文件。

1、解压busybox

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

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

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

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

4、配置busybox输入make menuconfig进行配置

(1)、Busybox Settings---> General Configuration--->

[*] Show verbose applet usage messages[*] Store applet usage messages in compressed form[*] Support –install [-s] to install applet links at runtime[*] Enable locale support(system needs locale for this to work)[*] Support for –long-options[*] Use the devpts filesystem for unix98 PTYs[*] Support writing pidfiles[*] Runtime SUID/SGID configuration via /etc/busybox.config[*] Suppress warning message if /etc/busybox.conf is not readableBuild Options---> [*] Build BusyBox as a static binary(no shared libs)[*] Build with Large File Support(for accessing files>2GB)Installation Options->[]Don’t use /usrApplets links (as soft-links) --->(./_install) BusyBox installation prefixBusybox Library Tuning --->(6)Minimum password legth(2)MD5:Trade Bytes for Speed[*]Fsater /proc scanning code(+100bytes)[*]Command line editing(1024)Maximum length of input[*] vi-style line editing commands(15) History size[*] History saving[*] Tab completion[*]Fancy shell prompts(4) Copy buffer size ,in kilobytes[*]Use ioctl names rather than hex values in error messages[*]Support infiniband HW

(2)、Linux Module Utilities--->(/lib/modules)Default directory containing modules(modules.dep)Default name of modules.dep

[*] insmod[*] rmmod[*] lsmod[*] modprobe-----options common to multiple modutils[ ] support version 2.2/2.4 Linux kernels[*]Support tainted module checking with new kernels[*]Support for module .aliases file[*] support for modules.symbols file

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

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

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

建立etc目录下的配置文件etc/mdev.conf文件,内容为空。拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。etc/sysconfig目录下新建文件HOSTNAME,内容为”MrFeng”。etc/inittab文件:#etc/inittab::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a –r6、etc/init.d/rcS文件:#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevelecho "----------munt all----------------"mount -aecho /sbin/mdev>/proc/sys/kernel/hotplugmdev -secho "***********************************************"echo "****************Studying ARM*********************"echo "Kernel version:linux-2.6.29.1"echo "Student:Feng dong rui"echo "Date:2009.07.15"echo "***********************************************"/bin/hostname -F /etc/sysconfig/HOSTNAME使用以下命令改变rcS的执行权限:Chmod +x rcS7、etc/fstab文件:#device mount-point type option dump fsck orderproc /proc proc defaults 0 0none /tmp ramfs defaults 0 0sysfs /sys sysfs defaults 0 0mdev /dev ramfs defaults 0 08、etc/profile文件:#Ash profile#vim:syntax=sh#No core file by defaults#ulimit -S -c 0>/dev/null 2>&1USER="id -un"LOGNAME=$USERPS1='[\u@\h=W]#'PATH=$PATHHOSTNAME='/bin/hostname'export USER LOGNAME PS1 PATH制作根文件系统映像文件使用以下命令安装好yaffs文件系统制作工具:cd /mnt/hgfs/sharetar –zxvf mkyaffs2image.tgz –C /在/opt/studyarm目录下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系统映像文件。二、启动系统将前面两章生成的内核映像文件和根文件系统映像文件下载到mini2440开发板,查看启动信息。我成功移植启动信息如下:VIVI version 0.1.4 (root@capcross) (gcc version 2.95.3 20010315 (release)) #0.1.4 Mon Oct 27 10:18:15 CST 2008MMU table base address = 0x33DFC000Succeed memory mapping.DIVN_UPLL0MPLLVal [M:7fh,P:2h,S:1h]CLKDIVN:5h+---------------------------------------------+| S3C2440A USB Downloader ver R0.03 2004 Jan |+---------------------------------------------+USB: IN_ENDPOINT:1 OUT_ENDPOINT:3FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2>NOTE: Power off/on or press the reset button for 1 sec in order to get a valid USB device address.NAND device: Manufacture ID: 0xec, Chip ID: 0x76 (Samsung K9D1208V0M)Found saved vivi parameters.Press Return to start the LINUX/Wince now, any other key for viviCopy linux kernel from 0x00050000 to 0x30008000, size = 0x00200000 ... donezImage magic = 0x016f2818Setup linux parameters at 0x30000100linux command line is: "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"MACH_TYPE = 362NOW, Booting Linux......Uncompressing Linux.......................................................................................................................... done, booting the kernel.Linux version 2.6.29.1 (root@localhost.localdomain) (gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #8 Sat Jul 18 10:37:22 CST 2009CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177CPU: VIVT data cache, VIVT instruction cacheMachine: Study-S3C2440ATAG_INITRD is deprecated; please update your bootloader.Memory policy: ECC disabled, Data cache writebackCPU S3C2440A (id 0x32440001)S3C24XX Clocks, (c) 2004 Simtec ElectronicsS3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHzCLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL onBuilt 1 zonelists in Zone order, mobility grouping on. Total pages: 16256Kernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0irq: clearing pending status 02000000irq: clearing subpending status 00000002PID hash table entries: 256 (order: 8, 1024 bytes)Console: colour dummy device 80x30console [ttySAC0] enabledDentry cache hash table entries: 8192 (order: 3, 32768 bytes)Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)Memory: 64MB = 64MB totalMemory: 60876KB available (3536K code, 293K data, 136K init)Calibrating delay loop... 201.93 BogoMIPS (lpj=504832)Mount-cache hash table entries: 512CPU: Testing write buffer coherency: oknet_namespace: 296 bytesNET: Registered protocol family 16S3C2410 Power Management, (c) 2004 Simtec ElectronicsS3C2440: Initialising architectureS3C2440: IRQ SupportS3C24XX DMA Driver, (c) 2003-2004,2006 Simtec ElectronicsDMA channel 0 at c4808000, irq 33DMA channel 1 at c4808040, irq 34DMA channel 2 at c4808080, irq 35DMA channel 3 at c48080c0, irq 36S3C244X: Clock Support, DVS offbio: create slab <bio-0> at 0SCSI subsystem initializedusbcore: registered new interface driver usbfsusbcore: registered new interface driver hubusbcore: registered new device driver usbNET: Registered protocol family 2IP route cache hash table entries: 1024 (order: 0, 4096 bytes)TCP established hash table entries: 2048 (order: 2, 16384 bytes)TCP bind hash table entries: 2048 (order: 1, 8192 bytes)TCP: Hash tables configured (established 2048 bind 2048)TCP reno registeredNET: Registered protocol family 1NTFS driver 2.1.29 [Flags: R/O].yaffs Jul 18 2009 10:31:41 Installing. msgmni has been set to 119io scheduler noop registeredio scheduler anticipatory registered (default)io scheduler deadline registeredio scheduler cfq registeredConsole: switching to colour frame buffer device 30x40fb0: s3c2410fb frame buffer devicelp: driver loaded but no devices foundppdev: user-space parallel port driverSerial: 8250/16550 driver, 4 ports, IRQ sharing enableds3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440brd: module loadedloop: module loadeddm9000 Ethernet Driver, V1.31Uniform Multi-Platform E-IDE driveride-gd driver 1.18ide-cd driver 5.00Driver 'sd' needs updating - please use bus_type methodsS3C24XX NAND Driver, (c) 2004 Simtec Electronicss3c2440-nand s3c2440-nand: Tacls=1, 9ns Twrph0=4 39ns, Twrph1=1 9nsNAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)Scanning device for bad blocksCreating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":0x000000000000-0x000000030000 : "boot"0x000000050000-0x000000250000 : "kernel"0x000000250000-0x000003ffc000 : "kernel"usbmon: debugfs is not availableohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Drivers3c2410-ohci s3c2410-ohci: S3C24XX OHCIs3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000usb usb1: New USB device found, idVendor=1d6b, idProduct=0001usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1usb usb1: Product: S3C24XX OHCIusb usb1: Manufacturer: Linux 2.6.29.1 ohci_hcdusb usb1: SerialNumber: s3c24xxusb usb1: configuration #1 chosen from 1 choicehub 1-0:1.0: USB hub foundhub 1-0:1.0: 2 ports detectedusbcore: registered new interface driver libusualusbcore: registered new interface driver usbserialUSB Serial support registered for genericusbcore: registered new interface driver usbserial_genericusbserial: USB Serial Driver coreUSB Serial support registered for FTDI USB Serial Deviceusbcore: registered new interface driver ftdi_sioftdi_sio: v1.4.3:USB FTDI Serial Converters DriverUSB Serial support registered for pl2303usbcore: registered new interface driver pl2303pl2303: Prolific PL2303 USB to serial adaptor drivers3c2410_udc: debugfs dir creation failed -19mice: PS/2 mouse device common for all micei2c /dev entries drivers3c2440-i2c s3c2440-i2c: slave address 0x10s3c2440-i2c s3c2440-i2c: bus frequency set to 98 KHzs3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapterS3C2410 Watchdog Timer, (c) 2004 Simtec Electronicss3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabledTCP cubic registeredRPC: Registered udp transport module.RPC: Registered tcp transport module.yaffs: dev is 32505858 name is "mtdblock2"yaffs: passed flags ""yaffs: Attempting MTD mount on 31.2, "mtdblock2"yaffs_read_super: isCheckpointed 0VFS: Mounted root (yaffs filesystem) on device 31:2.Freeing init memory: 136K----------munt all----------------***********************************************Kernel version:linux-2.6.29.1USER:BaozhongchaoDate:2009.07.15***********************************************Please press Enter to activate this console. [@MrFeng=W]#lsbin etc linuxrc proc sys varboot home lost+found root tmp wwwdev lib mnt sbin usr[@MrFeng=W]#基于S3C2440的Linux内核移植和yaffs2文件系统制作.pdfourdev_464685.rar(文件大小:64K) (原文件名:基于S3C2440的Linux内核移植和yaffs2文件系统制作.rar)
以上是关于“怎么制作系统文件?linux制作根文件系统的必要步骤”的所有内容。
由网友上传(或整理自网络)。转载请注明:http://www.xingexing.com/xitong/81hn6nvp.html

相关推荐

  • 怎样重装电脑系统?最简单的电脑重装系统方法不用u盘

    还在用ISO镜像文件或Ghost工具,通过U盘来装系统?使用U盘启动盘装机,我们首先要做的是将U盘制作成启动盘,接着需要下载系统镜像文件等等的一系列准备,之后方可进行安装系统。这些操作对于一个电脑小白来说操作是有点难度的,那有什么好办法吗?在win102004版本中,有一个“云重装”的功能。如果你是电脑小白,不妨尝试下这个功能,简单又快速,直接在云端下载并重装即可。具体操作方法如下:第一步:打开开…

    时间:2022-10-18软件教程
    阅读:143次
  • 怎么制作iso镜像的优盘?pe下安装iso镜像系统怎么安装

    本工具可以引导u盘或硬盘分区根目录下PE目录内的任意多个可引导的pe镜像。请使用UltraISO将附件iso文件写入u盘(注意:务必备份u盘数据!!!)软件简介:u盘iso镜像引导工具,是无忧xccuwo的作品,无忧2010sya增加了一个经典的dos镜像。一个很有创意的新工具,写入U盘后仅占2.9MB空间,功能却非常强大。主要特点:小巧、简洁、灵活、方便、实用!可以引导U盘或硬盘分区根目录下PE…

    时间:2022-10-21操作系统
    阅读:298次
  • u盘制作启动项怎么做?u盘启动盘制作的方法

    用u盘给电脑重装系统时,很多小伙伴可能都不知道怎么制作u盘系统盘,下面就教大家小白u盘启动盘怎么制作吧。  1.打开下载好的小白,准备一个8GB以上的空白U盘,然后选择制作比试功能开始制作启动U盘。  2、在选择系统列表中选择您想安装的操作系统。  3、制作启动盘会格式化U盘,所以U盘中千万不要存放重要资料。  4、当下载完系统之后!将会自动制作U盘启动以及将下载系统和备份的资料导入到U盘里面,制…

    时间:2022-10-28操作系统
    阅读:185次
  • u大师怎么制作u盘启动?口碑最好的u盘启动工具

    这是一个最好的时代,高速发展的电脑技术催生了u盘装系统技术的诞生,广大用户能够轻松使用高效便捷的系统重装工具——u盘启动盘制作工具;现在,各类u盘启动盘制作工具层出不穷,良莠不齐,给用户造成了许多困扰:到底哪一款u盘启动盘制作工具最好用?什么是u盘启动盘制作工具何为u盘启动盘制作工具?相信有的用户并不了解。所谓u盘启动盘制作工具是指结合u盘制作可引导启动的u盘封装软件,其制作的u盘启动盘可通过特殊…

    时间:2022-11-01电脑基础
    阅读:97次
  • 如何制作优盘安装系统安装?如何制作优盘安装系统安装目录

    如何制作优盘安装系统安装(如何制作优盘安装系统安装目录)如何制作系统u盘,系统启动u盘制作第一步我们需要提前准备好一个这样的普通优盘容量越大越好,至少建议8g以上然后我们开始准备第二步u盘,然后我们进行第二步到百度搜索进入后,我们直接选择一个版本下载,然后保存在桌面上我已经在这里完成了,然后我们将其最小化找到刚下载的双击运行它的安装我改变了路径。我把它换成了D盘,然后点击这个立即安装也可以改,最好…

    时间:2022-11-03网络知识
    阅读:128次
  • 怎么制作系统修复u盘?u盘修复win10系统步骤

    准备工具:1、8G以上容量的空白U盘,尽量使用空白U盘或将U盘数据备份,制作过程中会将U盘格式化,U盘中所有内容都会被删除。2、需要可以连接Internat网络,方便下载可用数据。3、Windows官网下载一份制作软件。使用windows工具制作启动U盘:1、运行制作软件后,接受“声明和许可条款”。2、选择为另一台电脑创建安装介质。进行下一步操作。3、选择需要安装系统的语言、结构、版本。4、这里选…

    时间:2022-11-04操作系统
    阅读:183次
  • 深度u盘启动盘制作工具,u深度u盘安装系统步骤图解

    什么是u盘启动盘,怎么制作u盘启动盘?通过u深度u盘启动盘工具如何制作u盘启动盘?通过以下所介绍的u盘启动盘制作教程,教您如何使用u深度u盘启动盘制作工具制作出一个功能强大的u盘启动盘,让你轻松学会制作u盘启动盘的操作方法。准备工作①下载u深度u盘启动盘制作工具②一个能够正常使用的u盘(容量大小建议在4g以上)第一步:安装u深度u盘启动盘制作工具双击打开已下载好的安装包,点击窗口中立即安装即可:等…

    时间:2022-11-04操作系统
    阅读:130次
  • 如何启动mac系统?mac os系统u盘制作教程

    制作可引导macOSBigSurU盘启动是一种在Mac电脑上安装macOS新副本快速、便捷又干净的方法。制作macOSBigSur启动盘,有备无患。U盘在创建macOSU盘启动之前,必须拥有一个U盘。U盘大小>16GU盘接口类型=USB–C「当然拥有转接器,可以忽略」U盘确保不含有重要数据,因为会初始化U盘下载macOS系统方法一:打开AppStore搜索macOSBigSur,点击查看,再…

    时间:2022-11-06操作系统
    阅读:117次