当前位置:文档之家› 根文件系统裁剪

根文件系统裁剪

根文件系统裁剪
根文件系统裁剪

一、编译内核

得到bzImage

二、定制文件系统

1、创建ramdisk虚拟空间,用来放置文件系统

命令# mke2fs –m 0 –I 2000 /dev/ram0

注释:mke2fs将会自动判断设备容量的大小并相应的配置自身,-m 0参数防止它给root保留空间,这样会腾出更多有用的空间。

2、挂载刚才创建的虚拟盘,我这里挂载在/mnt/floppy目录下

命令# mount –t ext2 /dev/ram0 /mnt/floppy

3、创建文件系统必须目录

命令# cd /mnt/floppy

# mkdir dev proc etc bin sbin lib mnt usr

4、确定/dev目录下我们需要的设备文件

方案一、把现有/dev目录中所有设备文件拷贝过来,然后删除不必要的设备文件(不推荐使用)

命令:# cp –dpR /dev /mnt/floppy/dev

注释:该命令会拷贝整个设备目录但不拷贝文件内容,同时dpR开关保证连接文件仍然不变,不会拷贝连接指向原来文件,而且属性不变。如果没有SCSI设备,删除所有以sd开头的设备文件,如果不使用串口设备,删除所有以cua开头的文件,然后保留一些必要的设备文件。

方案二、只拷贝必要的设备文件:

console ——控制台设备

tty* ——由控制台管理的虚拟终端

ram ——虚拟内存盘设备(以后我们的系统将运行在虚拟盘中)

null ——空设备,非常有用的字符设备文件,送入这个设备的所有东西将被忽略。如果将任何程序的输出结果重定向到/dev/null,则看不到任何输出信息,因此脚本中常用它来消除本该显示在屏幕上的其他信息zero ——零设备,只会得到空的内容,有时为了提高压缩率,需要对某空间全零填充时需要使用该设备inintrd ——特殊的字符设备,被用来从用户空间向系统内核发送切换运行级别的信息,属于一个虚拟字符设备。

fd 0 ——软盘设备

hd 0 ——硬盘设备(该项不是必须,如果您想挂载硬盘,请选择该项)

命令:# cp –dpR /dev/console /mnt/floppy/dev

# cp –dpR /dev/tty* /mnt/floppy/dev

# cp –dpR /dev/ram /mnt/floppy/dev

注释:如果要使用多个虚拟盘,可以相应的将ram1,ram2,……等拷贝过来

# cp –dpR /dev/null /mnt/floppy/dev

# cp –dpR /dev/zero /mnt/floppy/dev

# cp –dpR /dev/initrd /mnt/floppy/dev

6、确定/etc目录中所需要的系统配置文件

a) rc.d/* ——系统启动所需要的脚本

b) fstab ——列出要登陆的文件系统,

c) inittab ——包含启动过程参数

先直接拷贝系统/etc目录下的以上配置文件

命令# cp –R /dev/rc.d/* /mnt/floppy/dev/

# cp /dev/fstab /mnt/floppy/dev/

# cp /dev/inittab /mnt/floppy/dev/

然后修改启动配置脚本,用vi或者kwrite等文本编辑工具打开/dev/rc.d/rc文件

# cd /mnt/floppy/dev/rc.d/

# vi rc

修改rc文件为以下内容:

#!/bin/sh

bin/mount -av

/bin/host name fallso

修改fstab文件内容为以下内容:

/dev/ram0 / ext2 defaults

/dev/fd0 / ext2 defaults

/proc /prco proc defaults

修改inittab文件内容:

id:2:initdefault:

si::sysinit:/etc/rc

1:2345:respawn:/sbin/getty 9600 tty1

2:23:respawn:/sbin/getty 9600 tty2

7、确定/bin是和/sbin目录包含的命令文件

a) ls ——文件目录陈列,相当于dos的dir

b) mv ——

c) cat ——

d) init ——

e) mingetty ——

f) login ——登陆命令

g) mount ——挂载设备命令

h) umount ——卸载设备命令

命令:# cp /bin/ls /mnt/floppy/bin

# cp /bin/cat /mnt/floppy/bin

# cp /bin/mv /mnt/floppy/bin

# cp /bin/login /mnt/floppy/bin

# cp /bin/mount /mnt/floppy/bin

# cp /bin/umount /mnt/floppy/bin

# cp /sbin/init /mnt/floppy/bin

# cp /sbin/mingetty /mnt/floppy/bin

8、确定/lib目录下所需要的共享函数库,如果缺少必要的函数库,系统会自动停止启动或出现一些错误信息提示。

a) 列出所有程序需要使用的libc库

命令:# cd /bin

# ls –l /lib/libc*

-rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so*

lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*

拷贝箭头右边所指文件

如cp –dpR /lib/libc-2.1.so* /mnt/floppy/lib

b)察看每一个程序所使用的函数库

命令:# ldd /sbin/mke2fs

libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)

libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)

libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)

libc.so.6 => /lib/libc.so.6 (0x4002c000)

/lib/ld -linux.so.2 => /lib/ld -linux.so.2 (0x40000000)

拷贝箭头右边的函数库

如cp –dpR/lib/ld -linux.so.2 /mnt/floppy/lib

9、 关于其他目录,以下目录在软盘版linux 中完全可以为空

a) /proc 是一个虚拟的文件系统,用来传输资料给核心程序的目录,可以观察这些特殊的文件在内存中运行的信息;

b) /usr 目录下包含系统运行的所有程序,用户经常用到的一些数据和一些配置数据,该文件系统为只读,以减少系统瘫痪的危险性

c) /mnt 挂载其他设备的临时目录

10、卸载虚拟盘,拷贝、压缩文件系统

命令:# umount /mnt/floppy

# dd if=/dev/ram0 bs=1k |gzip –v9>roofs.gz

注释:压缩后在/root 下得到一个压缩的根文件系统,检查它是否超过了1.44M ,如果超过还得从头再来。

莹石

查看公开信息查找 莹石 发表的更多帖子

04-05-30, 21:21 第 3 帖

莹石

注册会员 注册日期: May 2004 帖子: 29 精华: 0

标题: 回复: 提示附件太大,只好把我的制作步骤贴出来 三、 引导程序 裁剪后所得内核大小为850KB ,压缩后文件系统大小为1.2M ,二者之和大于1.4

4M ,显然超过了软盘容量,所以本软盘版linux 采用两张软盘,第一张盘放置内核

及启动引导程序,第二张盘放置压缩的文件系统。系统启动过程如下:

由于linux 内核无法自己引导,故在系统启动时需要引导器来加载系统内核。通常

的我们使用LILO ,即the LInux LOader 。

微机加电后,基于x86 CPU 构架的特性,CPU 将去检测执行地址为FFFF0处存

储的跳转指令,跳转到较低的地址。接着BIOS 就会做一系列的检查操作。这一过

程即POST(Power On Self Test)。最后BIOS 结束自检,接着读取第一个启动

设备的启动信息。一般的是从硬盘启动,但本系统基于软盘,因此,BIOS 将从软

盘的启动扇区读取系统启动信息,这里即为LILO 的引导部分内容,并将控制权交

给LILO 。

LILO 接管系统后将完成信息的显示、操作系统的选择(对多系统共存而言,在这

里直接运行软盘上的Linux )、内核启动参数的传递,然后加载/etc/lilo.conf 中

对应的内核映像文件,最后将控制权交给加载到系统中的内核映像。

当软盘上的Linux的内核被LILO加载到内存后,开始掌握控制权。由于Linux的内核是压缩存储的,所以首先进行的是自解压操作。然后内核将开始检测系统硬件,并配置相应的驱动程序,同时在系统控制台上输出相应结果信息。接下来内核将挂载并检测根文件系统。若挂载成功,内核将在系统后台启动系统的第一个进程init 进程。至此,内核加载过程结束。

接下来由init进程根据/etc/inittab中的信息完成Linux系统的初始化操作。本系统裁剪掉了许多不必要的服务,故而只进行下列初始化操作。

init停止在console,按inittab指示打开一个shell或者开getty+login这样用户就可以看到输入用户名的提示符,至此进入系统操作,完成整个系统引导过程。创建软盘版linux引导程序的步骤如下:

1、在第一张软盘上标记:系统引导及内核,然后插入软驱,执行命令

a) # mke2fs –N 24 –m 0 /dev/fd0

注释:将软盘格式化为具有24个信息节点、ext2类型的文件系统

b) # mount –o dev /dev/fd0 /mnt

注释:挂载软盘到/mnt目录

c) # mkdir /mnt/boot

注释:创建启动盘的boot目录

d) # mkdri /mnt/dev

注释:创建启动盘的dev目录

e) # cp –R /dev/null /mnt/dev

注释:拷贝空设备到软盘

f) # cp –R /dev/fd0 /mnt/dev

注释:拷贝软盘设备到目标系统的/dev目录下

g) # cp /boot/boot.b /mnt/boot

注释:拷贝启动映像文件到目标系统/dev目录下

h) # cp /boot/bzImage /mnt/boot

注释:拷贝内核到目标系统的/boot目录下

i) # rdev –r /mnt/bzImage 49152li

2、创建修改lilo.conf文件

a) # cp /etc/lilo.conf /mnt

b) 打开lilo.conf,修改为以下内容:

boot=/dev/fd0

install=/boot/boot.b

map=/boot/map

read-write

backup=/dev/null

compact

image=/bzImage

label=Linux

root=/dev/fd0

3、将引导装入程序复制到软盘

命令:# lilo –v C lilo.conf –r /mnt

4、卸载第一张软盘

命令:# umount /mnt

5、将第二张软盘标记为:文件系统。插入软驱,拷贝压缩后的文件系统

a) # mke2fs –i8192 –m 0 /dev/fd0

注释:-i8192表示每8192位创建一个信息节点

b) # mount /dev/fd0 /mnt

注释:挂载软盘到/mnt目录

c) # cp /root/rootfs.gz /mnt

注释:拷贝文件系统到软盘

d) # umount /mnt

注释:卸载软盘

6、重新启动电脑,进入bios设置―first boot device‖为―boot from floppy d

isk‖。测试软盘版linux系统是否能够运行。

将1号软盘插入软驱,重新启动电脑,看到屏幕上出现―lilo loading linux‖,然

后是一大堆的系统硬件初始化信息,引导内核后,最后看到以下提示VFS:Insert

root floppy disk to be loaded into RAM disk an press ENTER

[见图一]

插入第二张软盘:装载文件系统

[见图二]

不知何故,我在插入第二张软盘后,看到如下提示:

RAMDISK:Ext2 filesystem found at block0

RAMDISK:Loading 1440 block[1disk]into ram disk done

VFS Mounted root(ext2 filesystem)

Freeing unused kernel memory:84K freed

Warining:unable to open an initial console

Kernel panic:No init found .Try passing init=option to kernel

7、将软盘插在其他机器的软驱中,测试软盘版linux系统是否具有移植性。

呼~。。今天忙了一天,光裁剪根文件系统了。

一个1G多的文件系统,被我剪剪剪,成了30M了,但是还是嫌大,最理想是10M以内。

但是我真觉得没法再剪了。

bin/的东西,比较重要,只删了些不常见的命令、

lib/有很多gcc的库,也得小心删减,一裁了不该裁的,系统就起不来了。。

usr/东西特别多

usr/bin/,usr/lib/,可以删掉绝大部分,留下几个用到的就可以了

usr/share/里好多东西,删删删,使劲删,基本都删光了。

root/modules/里,很多需要加载的.ko模块,也可以删,只剩下core,sys,os的几个.ko。

var/里面也可以删很多东西,留下一个var/log/dmesg和var/run/utmp。

dev/里的东西也可以删,只要留下console和ttySA0就可以了。

etc/也可以删一些不重要的脚本。

就这样,只剩下了一个恐龙骨架~

嵌入式Linux根文件系统制作

实训项目四-嵌入四Linux系统根文件系统制作一. 项目实施目的 了解 UP-CUP2440 型实验平台Linux 系统下根文件系统结构 掌握根文件系统的搭建过程 掌握busybox、mkcramfs等工具的使用方法 二. 项目主要任务 使用busybox生成文件系统中的命令部分,使用mkcramfs工具制作CRAMFS 格式的根文件系统。 分析根文件系统etc目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程 三. 基本概念 1.文件系统基本概念 Linux的一个最重要特点就是它支持许多不同的文件系统。这使Linux非常灵活,能够与许多其他的操作系统共存。Linux支持的常见的文件系统有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。随着时间的推移, Linux支持的文件系统数还会增加。Linux是通过把系统支持的各种文件系统链接到一个单独的树形层次结构中,来实现对多文件系统的支持的。该树形层次结构把文件系统表示成一个整个的独立实体。无论什么类型的文件系统,都被装配到某个目录上,由被装配的文件系统的文件覆盖该目录原有的内容。该个目录被称为装配目录或装配点。在文件系统卸载时,装配目录中原有的文件才会显露出来。在Linux 文件系统中,文件用i节点来表示、目录只是包含有一组目录条目列表的简单文件,而设备可以通过特殊文件上的I/O 请求被访问。 2.常见的嵌入式文件系统 嵌入式Linux系统一般没有大容量的磁盘,多使用flash存储器,所以多采用基于Flash(NOR和NAND)的文件系统或者RAM内存的文件系统。 (1)Flash根据结构不同分为 NOR Flash和NAND Flash。基于flash的文件系统主要有: jffs2:RedHat基于jffs开发的文件系统。

busybox详解制作根文件系统

详解制作根文件系统 单击,返回主页,查看更多内容 一、FHS(Filesystem Hierarchy Standard)标准介绍 当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。 该标准规定了根目录下各个子目录的名称及其存放的内容: 制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括: ?编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 ?利用交叉编译工具链,构建/lib目录 ?手工构建/etc目录 ?手工构建最简化的/dev目录 ?创建其它空目录 ?配置系统自动生成/proc目录 ?利用udev构建完整的/dev目录 ?制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。 二、编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god,这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀——busybox,事情就简单很多。 1、从https://www.doczj.com/doc/d22632695.html,/下载busybox-1.7.0.tar.bz2 2、tar xjvf busybox-1.7.0.tar.bz2解包 3、修改Makefile文件 175 ARCH ?= arm 176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox busybox配置主要分两部分。 第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:

基于busybox的根文件系统制作

龙源期刊网 https://www.doczj.com/doc/d22632695.html, 基于busybox的根文件系统制作 作者:李飞,武金虎,石颖博 来源:《电脑知识与技术》2010年第17期 摘要:Busybox是构建嵌入式Linux文件系统的必备软件,它是所有文件和设备节点的起始点,是决定系统能否正常启动的关键。通过busybox-1.1.3为例,进行配置、编译、安装等过程,从而形成简单的根文件系统映像文件,为以后嵌入式Linux系统的移植打下了良好的开端。 关键词:Busybox;嵌入式Linux;Linux操作系统;根文件系统;cramfs 文件系统 中国分类号:TP316.81文献标识码:A文章编号:1009-3044(2010)17-4655-02 Making Root File System Based on Busybox LI Fei, WU Jin-hu, SHI Ying-bo (College of Computer Science and Information, Guizhou University, Guiyang 550025, China) Abstract: Busybox is an essentiaL software to buiLd an embedded Linux fiLe system. It is the starting node point of aLL the fiLes and devices and the key whether the system can have a normaL start. Taking busybox-1.1.3 for exampLe, making a simpLe root image system fiLe by configuration compiLation and instaLLation Lays a good foundation for migration of the embedded Linux system. Key words: busybox; embedded linux; Linux OS; root file system; cramfs file system 1 根文件系统结构 根文件系统是所有文件和设备节点的起始点,包括系统所必须的各种工具软件、库文件、 脚本、配置文件等一系列的文件。一个基本的Linux根文件系统包含有以下的目录:dev、proc、bin、etc、usr、Lib、temp、var、usr等等目录。其中dev是设备文件节点目录,proc是挂载proc文件系统所用的目录,bin目录下面包含了系统的基本命令,etc目录是系统启动脚本所在的目录,Lib是系统默认的动态链接库目录,usr是用户目录,temp是临时目录,用来保存临时文 件,var目录包含系统运行时要改变的数据。以上都是根文件系统所必须的目录 2 Busybox简介 熟练嵌入式Linux的朋友对busybox一定不会陌生,它是标准Linux工具的一个单个可执行实现,被形象的称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的UNIX工具和命令 结合到一个单独的可执行程序中。虽然busybox中的这些工具相对于GNU常用工具功能有所

liu改udhcpc配置+根文件系统制作

基于ubuntu12.06 Mini2440 256M 试验通过2013年4月8日星期一 1、获得simple.script #解压busybox tar jxvf busybox-1.5.0.tar.ba2 mv busybox-1.5.0 busybox cd busybox #添加交叉工具链 export PATH=/usr/local/arm/3.3.2/bin:$PATH make defconfig make menuconfig #配置时,我们基于默认配置,再配置它为静态编译,安装时不要/usr路径,把Miscellaneous Utilities #下的“taskset”选项去掉,不然会出错。 #如下: Busybox setting ->builds options ->[*] build busybox as a static binary ->installitation options ->[*] don’t use /usr Miscellaneous Utilities ―> [ ] taskset 保存退出。 #编译安装 make ARCH=arm CROSS_COMPILE=arm-linux- CONFIG_PREFIX=/root/build_rootfs/rootfs all install ARCH指定平台 CROSS_COMPILE指定交叉编译 CONFIG_PRRFIX指定安装的路径 或者直接修改Makefile文件 生成的udhcpc是一个链接在上面的安装目录/all/sbin 下 此时把busybox考到根文件系统的/bin下和把udhcpc拷到根文件系统的/sbin(其实原有的根文件系统里可能已经包含了udhcpc{这样该不该都行,或许吧})开机运行/sbin 下的udhcpc就可以自动获得IP。 关键点要把busybox目录下的examples/udhcp/simple.script 脚本文件做为default.script拷贝到根文件系统的/usr/share/udhcpc/default.script。没有则自己创建。

实验四 ramdisk 根文件系统的制作

实验四ramdisk根文件系统的制作 一.实验目的 1.熟悉根文件系统组织结构; 2.定制、编译ramdisk根文件系统。 二.实验设备 1.硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机; 2.软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。 三.实验内容 利用6.3 中的已经完成的文件系统,生成一个根文件系统镜像。 四.实验原理 ramdisk是内核初始化的时候用到的一个临时文件系统,是一个最小的linuxrootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,做为启动引导驱动,包含如下目录: bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin 目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tty*,/dev/console,/dev/men……(位于/dev目录中);sh,ls等工具必要的运行库:glibc。1.制作ramdisk根文件系统映像 1)单击菜单应用程序->附件->终端打开终端,设置环境变量: $ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh $ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh 2)执行命令切换到ramdisk实验目录下: $cd $SIMPLEDIR/6.4-ramdisk 3)运行脚本文件: $ sudosh ramdisk-install.sh shell 脚本命令说明: #!/bin/bash # # ramdisk-install.sh - Make ramdiskfilesystem. # # Copyright (C) 2002-2007

在硬盘上制作根文件系统.doc

在硬盘上制作根文件系统 一、实验目标: 在硬盘上建立一个根文件系统,硬盘镜像文件的名称为:hdc-0.11.new.img 二、实验环境: 1、Vmware workation, bochs虚拟机,ultraedit编辑环境 2、用到的四个重要的镜像文件:bootimage-0.11-hd,hdc-0.1.img,并将他们放到 mylinux0.11文件夹中。 3、实验环境:redhat linux 三、实验理论依据: 1、Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括以下一些子目录和文件: etc/ 目录主要含有一些系统配置文件; dev/ 含有设备特殊文件,用于使用文件操作语句操作设备; bin/ 存放系统执行程序。例如sh、mkfs、fdisk等; usr/ 存放库函数、手册和其它一些文件; usr/bin 存放用户常用的普通命令; var/ 用于存放系统运行时可变的数据或者是日志等信息。 存放文件系统的设备就是文件系统设备。Linux 0.11内核所支持的文件系统是MINIX 1.0文件系统。 2、inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬 盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode 值最快的找到相对应的文件。每一个文件开头都是一个inode。 做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。

U盘引导根文件系统

1.linux PC机上格式化SD卡 在桌面的PC机上用SD读卡器操作SD卡: 一般情况下PC机上第一个U盘整体设备结点是/dev/sda,第二个是/dev/sdb,在RHEL5下它会被自动mount到/media/disk和/media/disk_1 目录. U盘/dev/sdb上第一个分区是/dev/sdb1,第二是/dev/sdb2 依此类推. 根文件系统采用符号链接等特性,用FAT32是不行的,这里直接采用标准的ext3的文件系统.在实测时,把U盘整个做一个分区做ext3根文件系统.总是出不少问题(可能步骤也不对),因此按网上推荐的,做二个分区,第一个分区采用vfat格式,第二个分区才采用ext3的格式. 1.1 用fdisk分区 执行fdisk /dev/sdb fdisk有如下常用选项 1. 输入m 显示所有命令列示。 2. 输入p 显示硬盘分割情形。 3. 输入a 设定硬盘启动区。 4. 输入n 设定新的硬盘分割区。 4.1. 输入e 硬盘为[扩展]分割区(extend)。 4.2. 输入p 硬盘为[首要]分割区(primary)。 5. 输入t 改变硬盘分割区属性。 6. 输入d 删除硬盘分割区属性。 7. 输入q 结束不存入硬盘分割区属性。 8. 输入w 结束并写入硬盘分割区属性 如果以前U盘有分区,需要输入d命令来依次删除分区,以下执行两次n命令创建一个400M 的FAT分区,以及把剩下的分区设为ext3,最后用w命令把结果保存下来.

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1020, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1020, default 1020): +400M Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (202-1020, default 202): Using default value 202 Last cylinder or +size or +sizeM or +sizeK (202-1020, default 1020): Using default value 1020 Command (m for help): p Disk /dev/sdb: 2041 MB, 2041577472 bytes 63 heads, 62 sectors/track, 1020 cylinders Units = cylinders of 3906 * 512 = 1999872 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 201 392522 b W95 FAT32 /dev/sdb2 202 1020 1599507 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table. The new table will be used at the next reboot. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information.

实验八 构建根文件系统

实验八构建根文件系统 一、实验目的 1、了解嵌入式Linux文件系统的作用和类型; 2、了解jffs2文件系统的优点和在嵌入式系统中的应用; 3、理解文件系统的挂载过程; 4、使用BusyBox制作一个根文件系统。 二、实验环境 预装redhat9.0(内核版本2.4.x)的pc机一台,XScale嵌入式实验箱一台(已构建嵌入式Linux系统),以太网线一根,交叉编译工具链,BusyBox软件包。 三、实验步骤 1、解压BusyBox软件包; 2、使用make menuconfig来配置BusyBox,修改交叉编译器前缀; Build Option [*] Build BusyBox as a static binary(no shared library) [*]Do you want to build BusyBox with a Cross ompile /usr/local/hybus-linux-R1.1/bin/arm-linux- Installation Option [*]Don't’t use /use Coreutils [*]ls

[*]cp [*]reboot [*]echo [*]mkdir [*]rm Editors [*]vi Login Utilities [*]getty 3、交叉编译BusyBox; make make install 4、建立BusyBox顶层目录结构 mkdir etc dev proc tmp lib var sys 5、在dev目录下创建必要的设备节点 (ram0,console,null,zero); mknod mdblock b 31 3 mknod console c 5 1 mknod null c 1 3 mknod zero c 1 5 cp –dpR /dev /_install/dev (假设busybox的安装目录为/_install)

嵌入式 linux 根文件系统 rootfs

一、什么是文件系统(Filesystem) 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 二、主要嵌入式采用的文件系统 * Linux 中,rootfs是必不可少的。PC 上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘) 上的根文件系统;嵌入式中一般不从HD 启动,而是从Flash 启动,最简单的方法是将rootfs load 到RAM 的RAMDisk,稍复杂的就是直接从Flash 读取的Cramfs,更复杂的是在Flash 上分区,并构建JFFS2 等文件系统。 * RAMDisk将制作好的rootfs压缩后写入Flash,启动的时候由Bootloader load 到RAM,解压缩,然后挂载到/。这种方法操作简单,但是在RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源RAM。 ramdisk就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小随所需要的空间增加或减少,是目前linux常用的ramdisk技术. * initrd是RAMDisk的格式,kernel 2.4 之前都是image-initrd,Kernel 2.5 引入了cpio-initrd,大大简化了Linux 的启动过程,附合Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd作为新的格式,还没有经过广泛测试,嵌入式Linux 中主要采用的还是image-initrd。 * Cramfs是Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从Flash 上运行,不须load 到RAM 中,因此节约了RAM。但是Cramfs是只读的,对于需要运行时修改的目录(如:/etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs等可写的fs。 * SquashFS是对Cramfs的增强。突破了Cramfs的一些限制,在Flash 和RAM 的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试 三、建一个包含所有文件的目录 1。建一个目录rootfs用来装文件系统 2。mkdir bin devetc lib procsbintmpusrvar 3. ln -fs bin/busyboxlinuxrc(使用busybox)

根文件系统移植

实验五根文件系统移植 实验目的: 通过本次实验,使大家学会根文件系统移植的具体步骤,并对根文件系统有更近一步的感官认识。让同学理解由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。 实验硬件条件: 1、实验PC机一台,TINY6410开发板一台 2、电源线,串口线,数据线。 实验软件条件: 1、VMware Workstation, 2、Ubuntu10.04 3、mktools-20110720.tar.gz 4、busybox-1.13.3-mini2440.tgz, 5、SecureCRT以及dnw烧写工具 实验步骤: 一、实验步骤 1.进入rootfs目录,查看压缩文件,具体操作指令如下:

2.发现有两个压缩文件夹,分别进行解压: 3.tar xvzf busybox-1.13.3-mini2440.tgz, 4.tar xvzf mktools-20110720.tar.gz,解压完成后, 5.查看文件夹#ls

二、实验步骤 1.修改架构,编译器#cd busybox-1.13.3/ 2.进入后查看#ls 3.#gedit Makefile 4.修改 164行 CROSS_COMPILE ?=arm-linux- 5.修改190行 ARCH ?= arm 6.保存后,退出!

三、实验步骤 1.修改配置 #make menuconfig 2.若出现如下提示

3.需调整到最大化。

4.把Busybox Settings -----→>Build Option ------→> Build BusyBox as astatic binary (no shared libs) 选择上,其他的默认即可。 然后一直退出,保存即可 5.接着执行 make接着执行 make install 6.最终生成的文件在_install 中 #cd _install

根文件系统制作

Linux根文件系统的制作 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 注:对于我们应用开发来说,购买开发板的时候,厂家会提供好现成的根文件系统和BootLoader等,如果需要,我们可以改变其中的命令而无需从头开始制作一个新的根文件系统。不过这儿的制作过程可以让我们更深一点理解Linux的文件系统。 2.主要的根文件系统 * Linux 中,rootfs 是必不可少的。PC 上主要实现有 ramdisk 和直接挂载 HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从 HD 启动,而是从 Flash 启动,最简单的方法是 将 rootfs load 到 RAM 的 RAMDisk,稍复杂的就是直接从Flash 读取的 Cramfs,更复杂的是在 Flash 上分区,并构建 JFFS2 等文件系统。 * RAMDisk 将制作好的 rootfs 压缩后写入 Flash,启动的时候由 Bootloader load 到RAM,解压缩,然后挂载到 /。这种方法操作简单,但是在 RAM 中的文件系统不是压缩的,因此需要占用许多嵌入式系统中稀有资源 RAM。 ramdisk 就是用内存空间来模拟出硬盘分区,ramdisk通常使用磁盘文件系统的压缩存放在flash中,在系统初始化时,解压缩到SDRAM并挂载根文件系统, 在linux系统中,ramdisk 有二种,一种就是可以格式化并加载,在linux内核2.0/2.2就已经支持,其不足之处是大小固定;另一种是 2.4的内核才支持,通过,ramfs来实现,他不能被格式化,但用起来方便,其大小 随所需要的空间增加或减少,是目前linux常用的ramdisk技术. * initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入了 cpio-initrd,大大简化了 Linux 的启动过程,附合 Linux 的基本哲学:Keep it simple, stupid(KISS). 不过cpio-initrd 作为新的格式,还没有经过广泛测试,嵌入式 Linux 中主要采用的还是 image-initrd。 * Cramfs 是 Linus 写的很简单的文件系统,有很好的压缩绿,也可以直接从 Flash 上运行,不须 load 到 RAM 中,因此节约了 RAM。但是 Cramfs 是只读的,对于需要运行时修 改的目录(如: /etc, /var, /tmp)多有不便,因此,一般将这些目录做成ramfs 等可写的 fs。 * SquashFS 是对 Cramfs 的增强。突破了 Cramfs 的一些限制,在 Flash 和 RAM 的使用量方面也具有优势。不过,据开发者介绍,在性能上可能不如 Cramfs。这也是一种新方法,在嵌入式系统采用之前,需要经过更多的测试。 3.Ramdisk制作 RAMDisk的制作方法如下:

Linux内核配置编译与文件系统构建要点

Linux内核配置编译与文件系统构建 南京大学 黄开成101180046 2012.11.11 一:实验目的 1.了解嵌入式系统的开发环境,内核与文件系统的下载和启动; 2.了解Linux内核源代码的目录结构及各自目录的相关内容,了解Linux内核各配置选项内容和作用,掌握Linux内核的编译过程; 3.了解嵌入式操作系统中文件系统的类型和应用、了解JFFS2文件系统的优点及其在嵌入式系统中的作用、掌握利用Busybox软件制作嵌入式文件系统的方法,并且掌握嵌入式Linux文件系统的挂载过程。二:实验环境说明 1.PC机使用openSUSE 14 Enterprise 系统。 2.开发板使用深圳市武耀博德信息技术有限公司生产的基于Inter 的PXA270处理器的多功能嵌入式开发平台EELIOD。 3.PC机通过RS-232串口与开发板相连,在PC机终端上运行minicom 程序构造一个开发板上的终端,用于对开发板的控制。 4.PC机与开发板通过ethernet网络相连接,并可在开发板上通过加载网络文件系统(NFS)与PC机通信。 5.Bootloader可以通过tftp协议从PC机上下载内核镜像和根文件系统镜像。下载目录为/tftpboot 。 6.用于开发板的Linux内核源码为linux-2.4.21-51Board_EDR,

busybox版本为busybox-1.00-pre5。 7.交叉编译器的路径为/usr/local/arm-linux/bin/arm-linux。 三:实验操作过程和分析记录 1.嵌入式系统的开发环境和开发流程: 1.1启动minicom和开发板 在PC机上打开一个终端,输入: >minicom 按Ctrl+A-o进入minicom的configuration界面。对串行通信接口进行配置,串口设置为:/dev/ttyS0(串口线接在PC机的串口1上)、bps=115200、8位数据、无校验、无流控制。 然后打开开发板电源,看到屏幕有反应之后,按任意键进入配置界面,如果长时间没有按下任何键,bootloader将会自动从flash中读取内核和根文件系统并启动开发板上的Linux系统。 分析:嵌入式系统中,通常并没有像PC机中BIOS 那样的固件程序,因此整个系统的加载启动任务完全由bootloader来完成。bootloader的主要作用是:初始化硬件设备;建立内存空间的映射图;完成内核的加载,为内核设置启动参数。 按0进入命令行模式,出现51board>,可以设置开发板和PC机的IP 地址: 51board> set myipaddr 192.168.208.133(设置开发板的IP地址) 51board> set destipaddr 192.168.208.33(设置PC机的IP地址)注意IP地址的设置:使其处于同一网段,并且避免和其他系统的

定制最简linux和根文件系统(平台龙芯1B开发板)

定制最简linux和根文件系统(平台龙芯1B开发板)

版本历史

1. 前言 (5) 1.1. 开发板版本号 (7) 1.2. 工具链版本号 (8) 1.3. 参考文档及其版本号 (8) 1.4. 目标 (9) 2. 搭建开发环境 (9) 3. 制作根文件系统 (11) 3.1. 配置 (11) 3.1.1. 拷贝源码,并解压 (11) 3.1.2. 配置选项简述 (12) 3.2. 编译 (13) 3.3. 构建根文件系统 (15) 3.3.1. 建立系统根目录 (15) 3.3.2. 建立设备文件 (16) 3.3.3. 建立系统配置文件 (16) 4. 编译linux (22) 4.1. 配置 (23) 4.1.1. 首先拷贝源码,并解压 (23) 4.1.2. 不安装Ncurses (24)

4.1.3. 没有拷贝.config (24) 4.1.4. 不用修改Makefile (25) 4.1.5. 配置选项简述 (26) 4.2. 编译 (30) 5. 启动运行linux (31) 5.1. 拷贝vmlinux到tftp服务器目录下 . 31 5.2. 设置PMON的ip地址 (31) 5.3. 下载内核 (32) 5.4. 启动linux (33)

1.前言 很高心拿到了龙芯1B开发板。然后仔细的看了开发板光盘里的《1B开发板用户手册.pdf》。里面写得非常详细,并且都附有截图,很明了。从最开始装虚拟机到编译linux,制作根文件系统等等,连虚拟机软件和Ubuntu系统镜像都有。可以说这套开发板考虑得非常周到。 然后我就参照《1B开发板用户手册.pdf》编译了linux,制作了根文件系统,最后终于跑起来,进入了shell。 这里谈谈我的感想 用户手册更像一个工具书 就拿根文件系统来说吧。Cramfs,Jffs2,Yaffs2的制作步骤都有,这表示该手册很全面,但是如果是一个初学者的话,给的选择太多不一定是好事。这也是我想写这篇文档的原因。我想linux 的配置尽量简单(除了串口驱动以外,其它的比如,网卡,声卡,触屏等都暂时不需要),根文件系统也尽量简单(手册中的已经很简单了,后面我们就参照手册),另外为了再简单一点我把

定制最简linux和根文件系统(平台龙芯1B开发板)共13页word资料

版本历史 版本时间备注 V1.0 2013-08-28 创建 1. 前言 (2) 1.1. 开发板版本号 (2) 1.2. 工具链版本号 (2) 1.3. 参考文档及其版本号 (3) 1.4. 目标 (3) 2. 搭建开发环境 (3) 3. 制作根文件系统 (3) 3.1. 配置 (3) 3.1.1. 拷贝源码,并解压 (3) 3.1.2. 配置选项简述 (4) 3.2. 编译 (4) 3.3. 构建根文件系统 (5) 3.3.1. 建立系统根目录 (5) 3.3.2. 建立设备文件 (5) 3.3.3. 建立系统配置文件 (5) 4. 编译linux (7) 4.1. 配置 (8) 4.1.1. 首先拷贝源码,并解压 (8) 4.1.2. 不安装Ncurses (8) 4.1.3. 没有拷贝.config (8) 4.1.4. 不用修改Makefile (8) 4.1.5. 配置选项简述 (9) 4.2. 编译 (10) 5. 启动运行linux (11) 5.1. 拷贝vmlinux到tftp服务器目录下 (11) 5.2. 设置PMON的ip地址 (11) 5.3. 下载内核 (12) 5.4. 启动linux (12)

1.前言 很高心拿到了龙芯1B开发板。然后仔细的看了开发板光盘里的《1B开发板用户手册.pdf》。里面写得非常详细,并且都附有截图,很明了。从最开始装虚拟机到编译linux,制作根文件系统等等,连虚拟机软件和Ubuntu系统镜像都有。可以说这套开发板考虑得非常周到。 然后我就参照《1B开发板用户手册.pdf》编译了linux,制作了根文件系统,最后终于跑起来,进入了shell。 这里谈谈我的感想 ●用户手册更像一个工具书 就拿根文件系统来说吧。Cramfs,Jffs2,Yaffs2的制作步骤都有,这表示该手册很全面,但是如果是一个初学者的话,给的选择太多不一定是好事。这也是我想写这篇文档的原因。我想linux的配置尽量简单(除了串口驱动以外,其它的比如,网卡,声卡,触屏等都暂时不需要),根文件系统也尽量简单(手册中的已经很简单了,后面我们就参照手册),另外为了再简单一点我把根文件系统也选择内存文件系统,内核只下载到内存而不烧写到flash,同时PMON参数也不修改。这样做有个好处——任何时候我可以复位进入开发板预装的linux 和文件系统。这便于在我们遇到问题时参考。 ●制作根文件系统的章节还有点小小的问题需要改进 ?手册中的笔误Busybox配置过程中ionice错写为inoice ?没有新建目录/root和/var/log ?没有新建console和串口设备节点ttyS2 另外,说点题外话,回想以前读大学时,非常想学习嵌入式,但是感觉非常困难。现在看来,当时感觉困难的原因是入门太难了。为什么入门难,弄了很久连环境都没打起来,更别说编译linux,制作根文件系统了。 在这里我想说“朋友们,搭建环境只需要把开发板的工具链解压到指定目录就可以了。就相当于windows上的绿色软件一样,仅此而已,这比安装vs2019快多了,方便多了”。 既然开发环境搭建起来了,后面就是配置编译linux,制作根文件系统了(先不要管PMON 了,就像电脑一样,很少有人换bios,最多重装系统)。这也就是本篇文章的任务。 1.1. 开发板版本号 LS1B DEMO BOARD Schematic Revision 2.0即版本为2.0 1.2. 工具链版本号 版本为gcc-3.4.6-2f.tar.gz

qt课程设计实验报告

程序设计课程设计实验报告 (qt实验报告) 信息科学与技术学院 软件三班 高文博 201005070309 2011年5月

实验1:计算当初存入本金的钱数。(12题) 1.实验目的、要求 目的: 1)熟悉qt中的常用属性; 2)熟悉vbox hbox模型及怎样根据需求设计控件,边框等; 3)熟悉各个槽函数的使用,准确的将c++语言转换成qt语言,将控件功 能与函数结合起来。 要求: 1)掌握对控件的文本色,背景色等常用属性的设置。 2)掌握对控件、边框尺寸与结构的设置 3)掌握对函数的设置 2.实验设备 笔记本电脑,已安装Qt 开发环境。 3.实验内容、步骤 ●先在vc++上进行编译。 ●应用qt3.38进行编译,运行。 实验步骤: 1)根据题目需求在草纸上画出结构图; 2)根据草图用代码设计整体框架和控件; 3)在qt上运行; 4)运行成功后根据功能添加函数; 5)在头文件中添加头文件。 6)将添加的功能函数与功能控件相连; 7)分别对每个函数进行测试; 8)将整个程序在qt运行调试; 9)运行通过后给每个函数写注释; 实验代码如下所示 A (1)主框架结构代码 #include"gwbsave.h"

GwbSave::GwbSave(QWidget*parent,const char*name):QWidget(parent,name) { //?? vBox=new QVBoxLayout(this); vBox->setMargin(5); vBox->setSpacing(5); label=new QLabel("Please input the lilv:",this,"label"); vBox->addWidget(label); //?? hBox=new QHBoxLayout(this); hBox->setMargin(5); hBox->setSpacing(5); vBox->addLayout(hBox); le1=new QLineEdit(this,"le1"); hBox->addWidget(le1); //?,?? hBox2=new QHBoxLayout(this); hBox2->setMargin(5); hBox2->setSpacing(5); vBox->addLayout(hBox2); leResult=new QLineEdit(this,"leResult"); leResult->setReadOnly(true); leResult->setPaletteBackgroundColor(Qt::gray); hBox->addWidget(leResult);

Ubuntu for Arm根文件系统制作

1.安装rootstock软件 rootstock是一个用来制作Ubuntu根文件系统的工具,可以使用apt-get install rootstock获取,也可以在官网直接下载:https://https://www.doczj.com/doc/d22632695.html,/project-rootstock 若选择前者:直接使用rootstock命令 若选择后者:解压下载文件rootstock-0.1.99.4.tar.gz得到rootstock可执行文件,可以将其拷贝到系统bin目录下 2.rootstock创建根文件系统 [html]view plaincopy 得到文件系统压缩文件qemu-armel-201408271515.tar.gz 创建一个空镜像: [html]view plaincopy 在镜像上创建文件系统: [html]view plaincopy 挂载镜像: [html]view plaincopy 将文件系统解压到挂载目录: [html]view plaincopy 这时可以修改挂载目录中的东西了: [html]view plaincopy 最后是得到最后的文件系统镜像: [html]view plaincopy

3.模拟器中运行根文件系统 下载模拟器qemu: [html]view plaincopy 在2中的“若干修改”中执行: [cpp]view plaincopy 在仿真环境中访问文件系统 [cpp]view plaincopy 此时在仿真环境下就可以安装SPICE了:[cpp]view plaincopy 安装完SPICE后保存文件系统: [cpp]view plaincopy

farsight 构建Linux根文件系统

构建Linux根文件系统 1. 根文件系统 1.1 定义 存放系统启动所必需的文件 内核映像文件(嵌入式系统中,内核一般单独存放在一个分区中); 内核启动后运行的第一个程序(init); shell程序; 应用程序所依赖的库; …... 1.2 目录结构 1.2.1 FHS标准: (Filesystem Hierarchy Standard,文件系统层次标准); 定义文件系统中目录、文件存放的原则,不是强制性标准。 1.2.2 目录: /bin 存放所有用户都可以使用的、基本的命令; 比须和根文件系统在一个分区中。 /sbin 存放系统命令,只有管理员可以使用的命令 必须和根文件系统在同一分区中。 /---/sbin *基本的系统命令,用于启动系统、修复系统等。 *---/usr/sbin *不是急迫需要使用的系统命令。 *---/usr/local/sbin /本地安装的系统命令。 /dev:存放设备文件。 /etc:存放配置文件。 /lib /---libc.so.*动态链接C库。 *---ld*链接器、加载器。 /---modules内核可加载模块存放的目录。 /home:用户目录。 /root:根用户目录。 /usr 存放共享、只读的数据和程序; 可以存放在另一个分区中,系统启动后再挂接到根文件系统的/usr目录下。 /var:存放可变的数据。 /proc proc文件系统的挂接点; proc文件系统是一个虚拟的文件系统,用来表示系统的运行状态。 /mnt:用于临时挂接某个文件系统的挂接点。 /tmp 用于存放临时文件; 为减少对Flash的操作,可以在/tmp目录上挂接内存文件系统。

相关主题
文本预览
相关文档 最新文档