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

合集下载

制作ramdisk文件系统

制作ramdisk文件系统

制作ramdisk文件系统制作一个最基本的文件系统(这里采用busybox1.1.0:准备:Busybox1.1.0源码;交叉编译工具链gcc-3.4.6;Linux2.6源码包;下面开始制作:一:建立交叉编译环境,将gcc-3.4.6解压到/opt下二:解压busybox-1.1.0.tar.bz2:busybox-1.1.0.tar.bz2jxf#tar三:进入解压后的目录busybox-1.1.0,开始进行busybox的编译配置:1.运行#make menuconfig后,选择Build Options2.选上选项:”Do you want to build BusyBox with a cross compiler?”(让它采用交叉编译工具链进行编译)选择要使用的工具链的路径:(./_install)BusyBox installation prefix:指定生成的文件的路径.4.再在其它的选项里选择好你要编译入文件系统的命令,保存退出!5.编译:#make clean allinstall#make这样,就在/busybox-1.1.0/_install下生成了bin,sbin,linuxrc四.开始制作文件系统:建立文件夹:mkdir bin dev home proc sbin tmp var boot etc lib mnt root sys usr etc/init.d u sr/etc___________________________________________________________mknod -m 600 dev/console c 5 1mknod -m 666 dev/null c 1 3___________________________________________________________vi etc/profile#!/bin/sh#/etc/profile:system-wide .profile file for the Bourne shellsechoecho -n "Processing /etc/profile......"# Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib# set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Set PS1USER = "`id -un`"LOGNAME=$USERPS1='[\u@\h\W]\$'PATH=$PATHecho "Done!"___________________________________________________vi etc/init.d/rcS#!/bin/sh# set hostname, needed host file in /etc directory#./etc/hosthostname `cat /etc/host`# mount all filesystem defined in "fstab"echo "#mount all......."/bin/mount -a#+yangdk/bin/chmod 0666 /dev/nullecho "# starting mdev...."/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s/usr/etc/initecho "******************************************" echo " Guoguifu linux-2.6.24.4 boot " echo " 2008-12-15 "echo " grandchips "echo "******************************************" ______________________________________________vi etc/fstabproc /proc proc defaults 0 0none /tmp ramfs defaults 0 0none /var ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0________________________________________________vi etc/inittab::sysinit:/etc/init.d/rcS::respawn:-/bin/shtty2::askfirst:-/bin/sh::ctrlaltdel:/bin/umount -a -r::shutdown:/bin umount -a -r::shutdown:/sbin/swapoff -a_________________________________________________ vi usr/etc/init#!/bin/shifconfig eth0 192.168.3.111 upifconfig lo 127.0.0.1_________________________________________________ vi mdev.conf (空的)_________________________________________________将下列几个必须库从工具链gcc-3.4.6的目录:gcc-3.4.6/mipsel-linux/lib拷贝到lib目录.ld.so.1, ld.-2.3.6.so, libcrypt.so.1, libc.so.6, libdl.so.2, libgcc_s.so.1, , libm.so.6, libpthread.so.o, libstdc++.so.6cp /opt/gcc-3.4.6/mipsel-linux/lib/库 lib/至此,文件系统制作完成!!五.将制作好的文件系统ramdisk放到linux2.6源码包的目录:linux26_3210/arch/mips/下,再回到linux26_3210根目录下进行内核配置,让内核采用ramdisk文件系统:1.进入:Device Driver->Block devices,选上”RAM disk support”选项,并在下面的三个ramdisk大小等参数进行配置,如下图所示:2.进入General setup,在”initramfs source file” 里输入ramdisk的路径:arch/mips/ramdisk,如下图所示:保存退出,完成内核配置!编译linux后,这个linux内核就选择ramdisk文件系统启动了,启动后可以看到刚做的简单文件系统在板上跑☺。

ramdisk和initramfs文件系统制作V1.1

ramdisk和initramfs文件系统制作V1.1

Ramdisk和initramfs文件系统制作一、实验环境操作系统:Ubuntu Linux2.6.38-8内核源代码:Linux2.6.32实验前准备:用Busybox制作好的rootfs文件夹(包含文件系统中的基本文件etc,lib,dev等,可以使用NFS挂载文件系统测试制作的rootfs是否能用)二、ramdisk文件系统制作1.重新为NAND Flash分区在内核源码\linux-03.00.00.04\arch\arm\mach-omap2\board-am3517evm.c 中修改:static struct mtd_partition am3517evm_nand_partitions[]={/*All the partition sizes are listed in terms of NAND block size*/{.name="xloader-nand",.offset=0,.size=4*(SZ_128K),.mask_flags=MTD_WRITEABLE},{.name="uboot-nand",.offset=MTDPART_OFS_APPEND,.size=15*(SZ_128K),.mask_flags=MTD_WRITEABLE},{.name="params-nand",.offset=MTDPART_OFS_APPEND,.size=1*(SZ_128K)},{.name="linux-nand",//存放内核.offset=MTDPART_OFS_APPEND,.size=32*(SZ_128K)},#if0{.name="ubifs-nand",.size=MTDPART_SIZ_FULL,.offset=MTDPART_OFS_APPEND,},#else//ramdisk+jffs2{.name="ramdisk-nand",//存放制作好的ramdisk文件系统.size=64*(SZ_128K),//8M.offset=MTDPART_OFS_APPEND,},{.name="data-nand",//数据区,用于保存数据.size=128*(SZ_128K),//16M.offset=MTDPART_OFS_APPEND,},#endif{.name="other-nand",.size=MTDPART_SIZ_FULL,.offset=MTDPART_OFS_APPEND,},};分区后Nand Flash地址范围:0x00000000-0x00080000xloader-nand0x00080000-0x00260000uboot-nand0x00260000-0x00280000params-nand0x00280000-0x00680000linux-nand0x00680000-0x00E80000ramdisk-nand0x00E80000-0x1E800000data-nand0x1E800000-others-nand2.配置内核(1)拷贝配置文件cp arch/arm/configs/omap3_soc8200_defconfig.config (2)make menuconfig1)在General setup--->选中2)在Device Drivers--->Block devices选中配置完成,选择保存退出(3)编译内核makemake uImage在arch/arm/boot生成uImage系统镜像3.制作ramdisk文件系统(1).建立loop设备的临时挂载点#mkdir/mnt/loop(2).建立文件系统映象#dd if=/dev/zero of=/tmp/ramdisk bs=1k count=12300(3).mke2fs–F–v–m0/tmp/ramdisk此处-F选项将可迫使mke2fs在文件上运行。

ramdisk 制作

ramdisk 制作

1、拷贝s3c2440_recover.tar.bz2到我们的目标文件夹下解压cp /mnt/hgfs/share/s3c2440_recover.tar.bz2 /home/opt/cd /home/opttar jxvf s3c2440_recover.tar.bz2cd s3c2440_recover2、裁剪rm *.tar.gz –rfcd librm *.a –rf 删除静态库rm debug/ -rf 可以不用debugcd ../bin/rm udev* -rf sbin 中有了3、mkdir /home/opt/rootfscd /home/opt/rootfsdd if=/dev/zero of=/home/opt/rootfs/ramdisk.img bs=1024 count=12000mke2fs -F -m 0 -b 1024 ramdisk.img 格式化mount -t ext2 -o loop ./ramdisk.img ./root/cp /home/opt/s3c2440_recover/* ./root/ -rfumount ./rootgzip -vf9 ramdisk.imgcp ramdisk.img.gz /tftpcd /home/opt/ utu-linux_for_s3c2440_V1.5.3/make cleanmake menuconfig选device drivers ——>block drivers 选中,以下选项如下设置<*> Loopback device support<*> RAM disk support(2)Default number of RAM disks(可改)(16368) Default RAM disk size (kbytes) (大于12M即可)[*] Initial RAM disk (initrd) support启动开发板,开启超级终端进入bootloader敲printenvutu-bootloader=>>>printenvinstall-bootloader=tftp 30000000 u-boot.bin;nand erase 0 40000;nand write 30000000 0 0install-kernel=tftp 30000000 uImage;nand erase 60000 200000;nand write.i 30000000 60000 0install-filesystem=tftp 30000000 filesystem.yaffs;nand erase 260000 3d9c000;nandwrite.yaffs1 30000000 260000 0erase-env=nand erase 40000 20000bootargs=root=/dev/mtdblock2 rw console=ttySAC0,115200 bootcmd=nand read.i 0x32000000 0x60000 0x200000; bootm bootdelay=1baudrate=115200ethaddr=00:0c:20:02:0a:5bipaddr=192.168.1.168netmask=255.255.255.0serverip=192.168.1.3stdin=serialstdout=serialstderr=serialEnvironment size: 591/131068 bytes保存下,下次还会用到的接着set bootargs 'root=/dev/ram rw initrd=0x30800000,6M ramdisk_size=12288 console=ttySAC0,115200't 32000000 uImaget 30800000 ramdisk.img.gzbootm 32000000结果如下:[root@bit /]# lsbin home lost+found root usrdev lib mnt sbin varetc linuxrc proc sys成功。

ramdisk根文件系统制作

ramdisk根文件系统制作

制作根文件系统有两种方法1、利用开发板提供的映像文件制作ramdisk2、利用busybox制作根文件系统(制作过程复杂)采用第一种方法制作需要的ramdisk1、拷贝已有的uramdisk.image.gz 到新建的tmp/下,cp uramdisk.image.gz tmp/2、去掉mkimage生成的64 bytes 的文件头,生成新的ramdisk.image.gz$ dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=13、 gunzip解压ramdisk.image.gz 生成ramdisk.image$ gunzip ramdisk.image.gz4、新建挂载目录“ramdisk”,并将ramdisk.image挂载$ sudo mount -o loop,rwramdisk.imageramdisk5、接下来,只需要将ramdisk目录下的内容全部拷贝到rootfs下即可cp -R ramdisk /* rootfs这样就有了自己的rootfs,省去利用busybox制作的麻烦了有了制作好的rootfs,下面就开始制作映像文件了1、创建镜像文件ramdisk8M.image,并设置大小为8M,文件系统格式为ext2$dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192$mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0$tune2fs ramdisk8M.image -i 0$chmod 777 ramdisk8M.image大小可以按照需要自己调整,但是最好不要超过32M,创建ramdisk目录,将ramdisk8M.image 挂载到该目录下$mkdirramdisk$mount -o loop ramdisk8M.image ramdisk/接下来,只需要将rootfs目录下的内容全部拷贝到ramdisk下即可$cp -R rootfs/* ramdisk注意,这里cp的参数一定是R而非r。

busybox制作ramdisk全过程

busybox制作ramdisk全过程

Busybox Settings > General Configuration > [*] Support for devfs Build Options > [*] Build BusyBox as a static binary (no shared libs) /* 将busybox编译为静态连接,少了启动时找动态库的麻烦*/ [*] Do you want to build BusyBox with a Cross Compiler? (/usr/local/ arm/3.3.2/bin/armlinux) Cross Compiler prefix/* 指定交叉编译工具路径*/Init Utilities > [*] init [*] Support reading an inittab file /* 支持init读取/etc/inittab配置文件,一定要选上*/Shells > Choose your default shell (ash) > /* (X) ash 选中ash,这样生成的时候才会生成bi n/sh文件* 看看我们前头的linuxrc脚本的头一句:* #!/bin/sh 是由bin/sh来解释执行的*/ [*] ashCoreutils > [*] cp [*] cat [*] ls [*] mkdir [*] echo (basic SuSv3 version taking no opt ions) [*] env [*] mv [*] pwd [*] rm [*]touch Editors > [*] viLinux System Utilities > [*] mount [*] umount [*] Support loopback mounts [*] Supp ort for the old /etc/mtab fileNetworking Utilities > [*] inetd /* * 支持inetd超级服务器*/3.3 编译并安装Busybox(如果busybox编译不过去就换个版本的编译工具)。

ramdisk根文件系统制作

ramdisk根文件系统制作

制作ramdisk类型文件系统ramdisk也就是内存盘的意思。

所谓的RAM驱动器,实际上是把系统内存划出頒分当做硬盘使用。

对于操作系统来讲内存的存取速度远远大于机械磁盘,所以RAM驱动器肯定要比机械的硬盘快得多。

你可以把整个应用程序都安装在ramdisk的驱动器中,然后用内存的速度运行它。

使用RAM驱动器技术对于延长笔记本电脑电池使用时间也是十分有利的,因为这样做可以减少访问〃耗电大户”的次飢Ram:内存,Disk :磁盘,在Linux中可以将一部份内存当做分区来使用,称之为Ramdisk。

对于一些时常被访问、并且不会被更改的文件,可以将它们通过Ramdisk 放在内存中,能够明显地提高系统性能。

Ramdisk工作于虚拟文件系统(VFS )层,不能格式化,但可以创建多个Ramdisk。

虽然现在硬盘价钱越来越便宜,但对于一些我们想让其访问速度很高的情况下,Ramdisk还是很好用的。

如果对计算速度要求很高,可以通过增加内存来实现,使用ramdisk技术。

一个A Ramdisk 就是把内存假设为一个硬盘驱动器,并且在它的上面存储文件,假设有几个文件要频繁的使用,如果将它们加到内存之中,程序运行速度会大幅度提高,因为内存的读写速度远高于硬盘。

划出部份内存提高整体性能,不亚于更换新的CPU。

像Web服务器这样的计算机,需要大量读取和交换特定的文件。

因此,在Web服务器上建立Ramdisk会大大提高网络读取速度。

从制作Ramdisk根文件系统的方法上来说,是很简单的。

1 .配置Linux内核支拮Ramdisk类型的文件系统。

2.制作好根文件系统,使用之前实验案例制作好的根文件系统。

3.将制作好的根文件系统制作成Ramdisk类型文件系统。

4.下载到TPAD上使用测试。

实现1 .对内核进行配置,使得内核能够支持Ramdisk类型的文件系统,如图・9 ,图・10 ,图•11。

$ cd /home/tarena/workdir/tools/linux-2.6.35.7$ make menuconfig$ make zlmage$ cp arch/arm/boot/zlmage /tftpboot图・9S-10config • Linux Kernel V2.6.35.7 ConfigurationArrow keys navigate the nenu. <Enter> selects submenus Highlighted letters are hotkeys. Pressing <Y> includes9 <N> excludes, <M> nodulartzes features. Press <Esc><Esc> to exit, <?> for Help.</> for Search. Legend: [w] built-in [ ] excluded <M> module < ><w> M nory Technology Device <HTD) support <xarelLeL uoiLt s|[w] BLock devicesI■j HI>c uevxce><> ATA/ATAPI/MFM/RLL support (DEPRECATED)CSI device support -•<> serial ATA and Parallel ,] M IttpXe devices driver ♦] N twork device support]ISDN support > ATA drivers —> support (RAID and LVM)Select Exit > < Help >图・11config - Ltn ConArrow keys navigate the nenu. <Enter> selects subnenus --->• Highlighted letters are hotkeys.Pressing <Y> includes f <N> excludes, <M> nodulartzes features. Press <Esc><Esc> to exit. <?> for Help. <f> for Search. Legend: [*] built-in [ ] excluded <M> module < >•・・ DRBD disabled because PROOFS f INET or CONNECTOR not se < > N twork block device support<*^^^A^DiocKaevlcesup^rt (16) default number of RAM disks2.制作Ramdisk文件系统的过程,如图・12 ,图・13 ,图・14 ,图・15 ,图・16所$ cd /home/tarena/workdir/tools/busybox-1.19.4/_lnstall/dev$ sudo mknod console c 5 1$ sudo mknod null c 1 3$ cd /home/tarena/workdir/tools/busybox-1.19.4$ dd if=/dev/zero of=initrd.img bs=lk count=8192$ sudo mkfs.ext2 -F initrd.img$ sudo mkdir /mnt/initrd$ sudo mount -t ext2 -o loop initrd.img /mnt/initrd$ sudo cp Jnstall/* /mnt/initrd -a$ sudo amount /mnt/initrd$ gzip -best -c initrd.img > ramdisk.img$ sudo chmod 777 ramdisk.img$ cp ramdisk.img /tftpboot图・12consoke^tQQls libbb ______ util^ltnux记県丫8192♦。

文件系统Ramdisk制作

文件系统Ramdisk制作

1dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

参数注释:if=文件名:输入文件名,缺省为标准输入。

即指定源文件。

of=文件名:输出文件名,缺省为标准输出。

即指定目的文件。

ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

conv=conversion:用指定的参数转换文件。

ascii:转换ebcdic为asciiebcdic:转换ascii为ebcdicibm:转换ascii为alternateebcdicblock:把每一行转换为长度为cbs,不足部分用空格填充unblock:使每一行的长度都为cbs,不足部分用空格填充lcase:把大写字符转换为小写字符ucase:把小写字符转换为大写字符swab:交换输入的每对字节noerror:出错时不停止notrunc:不截短输出文件sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

2制作文件系统2.1步骤一在磁盘中分配固定大小的空文件ramdiskdd if=/dev/zero of=ramdiskbs=1M count=20格式化为某一文件系统sudo mkfs.ext3 -m 0 -F -N 5000 -b 4096 ./ramdisk将该文件挂载至某一目录下sudo mount -t ext3 -o loop ./ramdisk./tmp将所需文件复制到该目录下,即将所需文件打包成一个文件ramdisksudocp -dpR $(ROOTFS_DIR)/* ./tmp(此处ROOTFS_DIR一般是busybox和一些ubi必要的文件系统的工具)sudoumount./tmp2.2步骤二ramdisk.gz与ramdisk相互转换ramdisk压缩成ramdisk.gzgzip -f9 ramdiskramdisk.gz解压出ramdiskgzip -d ramdisk.gz2.3步骤三uRamdisk.gz与ramdisk.gz相互转换ramdisk.gz生成uRamdisk.gzmkimage -A ppc -O linux -T ramdisk -C gzip -n "Linux ramdisk" -d ramdisk.gz uRamdisk.gzuRamdisk.gz生成ramdisk.gzsudodd if=./uRamdisk.gz of=./ramdisk.gz bs=64 skip=12.4补充最后生成的uRamdisk.gz即为edd_uRamdisk文件,复制过程中重命名即可cp uRamdisk.gz $(TARGET_DIR)/edd_uRamdisk。

虚拟内存盘Ramdisk制作过程

虚拟内存盘Ramdisk制作过程

在Linux系统下制作RamDisk简介RamDisk就是将内存(Ram)的一部分当做硬盘(Disk)来使用。

RamDisk有固定的大小,可以像正常硬盘分区那样去使用。

就操作时间来讲,RamDisk比真实的物理硬盘快很多,当系统关闭或断电时,保存在RamDisk中的数据会全部丢失。

RamDisk可以成为一个存放临时数据的好地方。

1. 查看系统已创建RamDiskRedHat默认创建16个RamDisk,虽然它们没有激活或使用任何Ram。

系统列出的设备是ram0~ram15。

使用下面的命令可用检出这些块设备:现在,用grep在dmesg的输出中找出RamDisk的大小你可以看到,RamDisk默认只有16MB。

我想要一个16MB的RamDisk,所以,下一步要配置Linux,使得在启动过程中使用一个更大的RamDisk。

2. 修改RamDisk的大小RamDisk的大小是被一个命令行选项控制的,这个选项会在系统启动时传给内核。

由于RedHat9的默认bootloader是GRUB,我将用新的选项修改/etc/grub.conf,RamDisk大小的内核选项是:ramdisk_size=xxxxx ,xxxxx是指大小为1024-Byte的块的个数。

下面是我要添加到/etc/grub.conf的内容,它将RamDisk配置为1GB:将文件保存后,你需要重启系统。

重启后,通过查看dmesg的输出来确认修改已经生效:3. 格式化RamDisk无需将RamDisk格式化为日志文件系统,我们将使用EXT2文件系统。

我只想使用一个RamDisk,所以我只格式化ram0。

4. 新建一个挂载点并挂载RamDisk你已经格式化了RamDisk,现在要为它新建一个挂载点。

然后就可以挂载你的RamDisk并使用它。

我们将会使用/mnt/rd文件夹。

检测新挂载的RamDisk5. 使用RamDiskRamDisk已经创建成功,现在,你可以像在物理硬盘分区那样,在RamDisk上复制、移动、删除、编辑或列出文件。

ramdisk作为根文件系统的配置

ramdisk作为根文件系统的配置

转帖从ramdisk根文件系统启动Linux成功,总结一下今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下。

其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆)。

开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with E ABI嵌入式Linux内核版本:2.6.29.4-FriendlyARM。

昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是叫做2.6.29.4-FriendlyARM,帖子已经改好了。

本文就是友善之臂的2.6.29.4-FriendlyARM的那个版本的内核的基础上改的。

其它版本的应该也类似,仅供参考。

开发板:mini2440-128M Nand FlashBootloader:u-boot-2009.11具体步骤如下:1.解压内核源码树解压linux-2.6.29-mini2440-20090708.tgz到自己的工作目录,会生成一个友善之臂修改过的并且有几个mini2440默认配置文件的内核源码目录linux-2.6.29。

具体步骤参照友善之臂mini2440开发板用户手册,具体不详述了。

2.修改内核配置选项进入内核源码目录linux-2.6.29目录#cp config_mini2440_t35 .config#make menuconfig ARCH=arm打开配置菜单,修改两个配置项,分别是:a):General setup-->选择Initial RAM filesystem and RAM disk...... 项b):Device Drivers-->Block devices-->选择RAM block device support 项并检查Optimize for si z e是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。

如何制作根文件系统

如何制作根文件系统

如何制作根文件系统一、<1>.概述这一节,将制作一个最小的根文件系统,能让内核在该文件系统中运行。

制作文件系统的主要分为五个部分。

① 编译Busybox 得到我们能使用的长用命令。

② /dev/console /dev/null 这两个设备节点③ /etc/inittab 初始化表格④ 配置文件指定的程序⑤ C库函数<2>.编译Busybox①修改makefile修改编译工具和指定CPU的体系结构是做交叉开发的一个特性,也是很重要的一点就是要指定,我们编译好的代码在什么样的系统上取运行,根据不同的CPU体系会有不同的开发工具。

这里我使用的是ARM内核的CPU,所以我也会在Makefile中指定这一点。

具体操作:进入源码目录,打开顶层的Makefile文件。

ARCH ?= $(SUBARCH)CROSS_COMPILE ?=修改为:ARCH ?= arm //指定CPU内核体系结构CROSS_COMPILE ?= arm-linux- //指定交叉编译工具② 配置与编译Busybox在内核的源码目录下执行:make menuconfig。

在弹出的配置对话框中,进行具体命令的配置选择。

选择好需要的命令后,保存退出。

下面只列出需要注意的,未列出的为默认Busybox Settings - - - >General Configuration - - - >Buffer allocation policy ( Allocate with Malloc) - - - >[ * ] 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. conf[ * ] Suppress warning message if / etc/ busybox. conf is not readable( / proc/ self/ exe) Path to BusyBox executableBuild Options - - - >[ * ] Build BusyBox as a static binary ( no shared libs) //静态库[ * ] Build with Large File Support ( for accessing files > 2 GB)在内核的源码目录下执行:make 。

制作ramdisk

制作ramdisk

●建立新的ramdisk盘在PC上以超级用户的身份键入以下命令:1.mkdir /mnt/loop该命令建立了loop设备的临时挂接点;2.dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=10240该命令建立了一个大小为10M的临时文件;北京恒颐高科技术有限公司 (86-10)62121051 31 恒颐高科注意可以根据自己的需要建立大小合适的文件系统,改变count=大小。

3./sbin/losetup /dev/loop0 /tmp/loop_tmp将设备与临时文件联系起来。

如果出现“ioctl: LOOP_SET_FD: 设备或资源忙”的提示,说明设备还和一文件联系,可以用/sbin/losetup /dev/loop0来看,并可用-d来删除;4./sbin/mke2fs –m 0 /dev/loop0将loop0格式化为ext2文件系统;注意可以改变文件系统的格式,推荐使用ext2;5.mount /dev/loop0 /mnt/loop –t ext2把虚拟盘挂在节点/mnt/loop上;6.用cp –af 命令将所需文件拷到虚拟盘上一般要拷贝/bin,/sbin,/usr,/dev,/etc等;7.umount /mnt/loop,卸载此文件系统,得到的/tmp/loop_tmp就是ramdisk 8.gzip - v9 /tmp/loop_tmp,这样一个内存映像文件就生成了●如何建立ramdisk相应的目录1.可以在网上找一个ramdisk,然后拷贝相应的目录。

如果从零做起,则/bin /sbin/usr/bin /usr/sbin下的程序需要编译busybox,然后拷贝busybox下的对应目录到ramdisk。

/etc下的文件可以参考redhat下的配置文件/etc,一般需要inittab, rc.d等2.在linux上mount已经做好的ramdisk:(Mount ramdisk images)#mkdir /mnt/tmp#mount -o loop ramdisk /mnt/tmp将目录copy到新件的ramdisk下●可以直接将已经做好的ramdisk,mount到一个文件下,#mount -o loop ramdisk/mnt/tmp ,修改,压缩,即可。

14-ramdisk文件系统

14-ramdisk文件系统

ARM系统与实践14. ARM Linux ramdisk根文件系统一. RamDisk嵌入式系统一般无硬盘,这就要把系统内存划出一部分当作硬盘使用来保存数据。

嵌入式系统一般采用NOR型或NAND型的Flash保存代码和数据。

由于这两种Flash的结构不一样,在其上构建的RamDisk 操作方式自然也不一样,但是其构建的文件系统是一样的——RamDisk文件系统。

在系统中构建一个RamDisk系统:mkdir /tmp/ramdisk0mke2fs /dev/ram0 或mkfs -t ext2 /dev/ram0mount /dev/ram0 /tmp/ramdisk0系统重启后?但是,当系统启动时,还没有形成构建RamDisk的环境,又如何来构建呢?Linux的initrd机制:initrd = boot loader initialized RAM disk就是由bootloader初始化的内存盘。

在Linux内核启动前,bootloader会将Flash中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统:①加载根文件系统存储介质的驱动模块;②执行真正的根文件系统中的/sbin/init进程。

Linux2.4内核对Initrd的处理流程Linux2.4内核的initrd格式是文件系统镜像文件,处理流程如下:1.bootloader把内核以及/dev/initrd的内容加载到内存,/dev/initrd是由bootloader初始化的设备,存储着initrd。

2.在内核初始化过程中,内核把/dev/initrd设备的内容解压缩并拷贝到/dev/ram0设备上。

3.内核以可读写的方式把/dev/ram0设备挂载为原始的根文件系统。

解决方案:RamDisk必须是一个小的linux rootfs系统,它必须包含了除内核以外的所有Linux系统在引导和管理时需要的工具。

实验04 制作根文件系统

实验04 制作根文件系统

ata0-slave:type=disk,path=hdc.img, cylinders=520,heads=16,spt=63 fdisk /dev/hdb (SLS Linux系统) 记住分区数据块大小:65015 mkfs /dev/hdb1 64000

利用fdisk命令在hdc.img文件中建立1个分区

进入系统
5、加载硬盘上文件系统



#mount /dev/hd1 /mnt #cd /mnt [/mnt]#for i in bin dev etc usr tmp >do >cp +recursive +verbose /$i $i >done [/mnt]#cd / [/]#umount /dev/hd1 [/]logout

6、关于根文件系统

Linux0.12内核所支持的文件系统是 MINIX1.0文件系统。 启动盘上引导扇区509、510字节处一个字 (ROOT_DEV)中根文件系统设备号从指定的设 备中加载根文件系统。

0表示从引导盘所在当前驱动器中加载根文件系统 1表示从不同设备中加载根文件系统
8、作业

报告:根文件系统制作与使用,提交的文件名如: 2101472_周乐钦.doc 报告内容:

编辑bochsrc-hd.bxrc文件 编辑bootimage-0.12-hd文件,使得根文件系统在 硬盘中 创建磁盘映像文件hdc.img ,存放根文件系统 使用硬盘Image上的根文件系统并启动
7、使用硬盘Image上根文件系统




复制bootimage-0.12和bochsrc.bxrc文件,产生 bootimage-0.12-hd和bochsrc-hd.bxrc 编辑bochsrc-hd.bxrc中floppya为bootimage0.12-hd 用Ultraedit编辑bootimage-0.12-hd二进制文件, 修改第509、510字节(即0x1fc/0x1fd,其值为 00/00)为01/03,表示根文件系统在硬盘的第1个分 区上。 运行bochsrc-hd.bxrc,即可进入Linux 0.12系统中。 此时的0.12系统中的根文件系统来自于硬盘Image

ramdisk制作方法

ramdisk制作方法

一、busybox的编译首先是交叉编译设置,打开busybox根目录下的Makefile,进行修改一般情况下,为了让busybox能够独立于其他的库文件而可以单独运行,需要将busybox 编译成静态的。

1.#make menuconfig2.Busybox Settings --->3. Build Options --->4.Build BusyBox as a static binary (no sharedlibs) //静态5. Installation Options --->6.Don't use /usr //make install的时候不会安装到根目录,而是安装到./_install7.Linux System Utilities --->8. mdev //相当于udev9. Support /etc/mdev.conf10. Support command execution at device addition/removal11.Shells --->12. Choose your default shell (msh) //具有ash没有的功能,比如支持tab补齐,历史纪录等等的高级功能复制代码而编译成静态的分为glibc和uclibc,如果系统没有安装uclibc的话,那就会报下面的错解决办法是打开 applets/applets.c 将其中的错误注释掉其他的busybox选项根据需要进行选择!1.#make2.#make install复制代码这样就在./_install目录下生成了busybox二、ramdisk文件系统生成上图中首先创见了一个10M的文件系统映象然后使用losetup命令将此镜像与块设备/dev/loop0进行挂接如果出现"ioctl: LOOP_SET_FD:设备或资源忙",说明/dev/loop0设备还和一文件联系,可用losetup /dev/loop0查看地,并可用-d 删除上图是用命令mke2fs来格式化此块设备/dev/loop0,其实就是格式化我们刚生成的那个文件系统镜像,ext2格式上图是挂载文件系统镜像,可见经过刚才格式化之后的文件系统镜像里面只有lost+foun 这个文件夹之后可以将步骤一中生成的_install目录下的所有文件拷贝进来即/et/inittab文件如下修改Console::sysinit:/etc/init.d/rcSttyS0 :respawn :-/bin/shtty2 ::askfirst :-/bin/shtty0 ::askfirst :-/bin/shtty3 ::askfirst :-/bin/shtty4 ::askfirst :-/bin/sh::restart:/sbin/init::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount –a –r::shutdown:/sbin/swapoff –afstab内容如下:/dev/fd0 / ext2 defaults 0 0none /proc proc defaults0 0none /dev/pts devpts mode=06220 0group内容如下:root::0:rootissue内容如下:Sunny AT91RM9200EK (2007-06-07)passwd内容如下:root::0:0:root:/root:/bin/ashprofile内容如下:export PS1=”[“$USER” @ \h]# “echo “Done”PATH=/bin:/sbin:/usr/bin:/usr/sbinexport PATHresolv.conf内容如下:nameserver 127.0.0.1search localhostinit.d目录下rcS文件内容:#! /bin/shMount –o remount, rw //sbin/ifconfig lo 127.0.0.1ln –s /dev/tts/0 /dev/ttyS0ln –s /dev/vc/0 /dev/tty0ln –s /dev/vc/1 /dev/tty1ln –s /dev/vc/2 /dev/tty2/bin/mount –a>/etc/mtabechoecho “………….Welcom to AT91RM9200EK …………..”echohostname AT91RM9200EK使用chmod a+x rcS 将此文件改为可执行文件5. 将ramdisk.gz 和uImage通过tftp下载到板子上,使用bootm命令就可运行。

4_根文件系统制作实验(2013-05-05修改)

4_根文件系统制作实验(2013-05-05修改)

$ cp mkfs.jffs2 /pxa270
2014-2-2 第19页 版权所有 © 2007 广州致远电子有限公司
MagicARM270教学实验开发平台

根文件系统制作实验
实验步骤
(6)使用mkfs.jffs2工具,将rootfs制作为jffs2的映象文件。 (请事先将mkfs.jffs2复制到/pxa270目录下)。
实验步骤
(7)通过ZLG/BOOT,将新制作的rootfs.jffs2下载到 MagicARM270系统中。重启系统,使用新的根文件系统进入 Linux。
2014-2-2
第21页
版权所有 © 2007
广州致远电子有限公司

根文件系统制作实验
实验步骤 修改交叉编译器路径为:
/usr/local/arm/usr/local/arm/3.4.1/bin/arm-linux-
2014-2-2
第12页
版权所有 © 2007
广州致远电子有限公司
cARM270教学实验开发平台
$ ./mkfs.jffs2 -o rootfs.jffs2 -e 0x40000 -r rootfs -pad=0xD00000
2014-2-2
第20页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

根文件系统制作实验
2014-2-2
第4页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

根文件系统制作实验
实验原理
Linux内核运行后,会根据用户指定的参数寻找根文件系统, 只有找到了正确的根文件系统,才能进入Linux的Shell界面。

根文件系统的制作

根文件系统的制作

根文件系统的制作文件系统的制作其实并没有想像中那么难。

一个基本的文件系统应该包括:busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 用到的库文件而烦。

在我制作的文件系统里,只是为了用户程序和 qt 的运行才放置了一些库文件)。

正文一、首先说一下 busybox 的配置和编译问题其实搞好 busybox 后,可以说你的文件系统已经完成了一半了。

Busybox 之所以比较难编译,主要是 busybox 和交叉编译工具的版本搭配问题。

在文坛上不乏因为 busybox 某些命令不能编译通过而烦的人,在这里我推荐一个搭配:busybox-1.1.3+arm-linux-gcc-3.3.2 (在文坛上看到过有人说busybox-1.0.1+arm-linux-gcc-3.4.1 也可以正常编译通过,你自己看着办吧)。

Busybox 的配置很简单,详细过程可以参考《基于 S3C2410 的 Linux 全线移植文档》的文件系统部分,我刚开始的时候就是按照这个来做出一个很简单的文件系统的。

不过有一点要特别注意的 (shell 的配置问题 ) :1、要这样配置:│ │ Shells --->│ Choose your default shell (ash) --->2、如果是这样配置的话,虽然可以生成ash,但不能生成sh:│ │ Choose your default shell(none) ---> │ ││ │ [*] ash另外,按照他的这种方法做出来的文件系统,运行的时候 shell 并不好有,没有历史记录、自动补全、删除字符的功能,下面介绍如何为它添加这些功能:Shells --->--- Bourne Shell Options │ │[ ] Hide message on interactive shell startup │ │[ ] Standaloneshell │ │[*] command lineediting │ │[*] vi-style line editingcommands │ │(15) historysize │ │[*] historysaving │ │[*] tabcompletion │ │[*] usernamecompletion │ │[ ] Fancy shell prompts这是我自己试验出来的,网上没有看到过这方面的介绍,在此奉献给大家。

嵌入式Linux根文件系统Ramdisk的制作过程

嵌入式Linux根文件系统Ramdisk的制作过程

嵌入式Linux根文件系统Ramdisk的制作过程ramdisk 是一个最小的linux rootfs 系统,它包含了除内核以外的所有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。

一、在一个已建好的文件系统上进行修改设已建立好的文件系统压缩文件为ramdisk.gz1、解压#cd ramdisk.gz 所在目录#gunzip ramdisk.gz 在解压后,得到文件系统镜象文件ramdisk,覆盖了原来的压缩文件2、镜象文件挂载镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容#mkdir /mnt/loop/mnt/loop 是文件系统要挂载到的目录#mount –o loop ramdisk /mnt/loop3、在挂载目录/mnt/loop 下对文件系统进行操作#cd /mnt/loop 根据需要增加、删减或是修改文件系统的内容4、卸装文件系统跳到/mnt/loop 目录外,否则无法卸装,提示busy#cdramdisk 所在目录#umount /mnt/loop5、压缩文件系统#gzip –v9 ramdisk /*生成ramdisk.gz 压缩文件这样就可以测试ramdisk.gz 了。

二、自己建立根文件系统1.建立loop 设备的临时挂载点#mkdir /mnt/loop2.建立文件系统映象#dd if=/dev/zero of=/tmp/ramdisk bs=1k count=123003.mke2fs –F –v –m 0 /tmp/ramdisk 此处-F 选项将可迫使mke2fs 在文件上运行。

制作ZedBoard上linux根文件系统(ramdisk)

制作ZedBoard上linux根文件系统(ramdisk)

制作ZedBoard上linux根文件系统(ramdisk)Digilent的OOB设计给出了一个ZedBoard上完整的运行的linux系统所需要的所有文件,包括配置FPGA的bit文件、配置ARM PS系统的First-Stage boot loader(FSBL)和引导linux需要的Second-Stage boot loader(SSBL)、Linux内核zImage、设备树文件devicetree_ramdisk.dtb 以及根文件系统ramdisk8M.image.gz。

linux在运行时,加载这个ramdisk8M.image.gz镜像文件到DDR3中来执行实现根文件系统的建立,很多并不像在ubuntu中对文件系统操作那样简单。

本小节介绍如何制作ZedBoard可运行的根文件系统ramdisk8M.image.gz镜像文件,参照xilinx wiki 。

通过本小节的学习,在以后的开发中,可以更加顺利的修改文件系统,给设计带来方便。

硬件平台:Digilent ZedBoard开发环境:Windows XP 32 bit + Wmare 8.0 + Ubuntu 10.04 + arm-linux-xilinx-gnueabi交叉编译环境Zedboard linux: Digilent OOB Design1、FHS(Filesystem Hierarchy Standard)标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。

该标准规定了根目录下各个子目录的名称及其存放的内容:目录名存放的内容/bin必备的用户命令,例如ls、cp等/sbin必备的系统管理员命令,例如ifconfig、reboot等/dev设备文件,例如mtdblock0、tty1等/etc。

Linuxramdisk根文件系统的移植

Linuxramdisk根文件系统的移植

Linuxramdisk根文件系统的移植Linux ramdisk根文件系统的移植一、移植前准备处理器平台:powerpc交叉编译工具:powerpc64-fsl-linux-gccBusyBox源码:busybox-1.23.2.tar.bz2ramdisk文件系统映像生成工具:genext2fs二、构建根文件系统2.1 建立根文件系统目录架构在当前用户目录下创建所要移植的根文件系统根目录,并命名为rootfs。

在该目录下,创建FHS标准(Filesystem Hierarchy Standard,文件系统科学分类标准)下Linux根文件系统的常用子目录,诸如dev、etc、home、bin、sbin、mnt、lib等。

rootfs及其相关子目录的创建由脚本create_rootfs.sh完成,create_rootfs.sh内容如下:#!/bin/shecho "------Create rootfs directons......"cd ~mkdir rootfscd rootfsecho "--------Create root,dev......"mkdir root dev etc bin sbin mnt sys proc lib home tmp var usrmkdir usr/sbin usr/bin usr/lib usr/modulesmkdir etc/init.d#mkdir mnt/usb mnt/nfs#mkdir lib/modulesecho "-------make direction done---------"2.2 构建dev目录建立dev目录有两种方法:静态构建和动态构建,其中动态构建由mdev设备管理工具构建。

1)静态构建所谓静态构建,就是根据预先知道的所要挂载的驱动,用mknod 命令逐一构建各种设备节点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四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.sh2)执行命令切换到ramdisk实验目录下:$cd $SIMPLEDIR/6.4-ramdisk3)运行脚本文件:$ sudosh ramdisk-install.shshell 脚本命令说明:#!/bin/bash## ramdisk-install.sh - Make ramdiskfilesystem.## Copyright (C) 2002-2007 <># Created. lusi<luce_008@>sudodd if=/dev/zero of=ramdiskbs=1M count=2......sudogzip -v9 ramdisksudochmod 777 ramdisk.gzsudormdir tempsudocp -av ramdisk.gz /home/example创建一个空的ramdisk镜像:sudodd if=/dev/zero of=ramdiskbs=1M count=2用dd命令建立了一个名为ramdisk的ramdisk基本文件;ramdisk image 文件名为ramdisk,大小为2M。

格式化文件系统:sudo echo "y" | sudo mke2fs -m 0 -N 3500 ramdisk挂载文件系统:sudomkdir -p tempsudo mount -o loop ramdisk temp拷贝 6.3 节中已经创建好的文件结构到temp 文件夹:sudocp -av root-mini/* temp/卸载;sudoumount temp生成压缩文件;sudogzip -v9 ramdisk修改root-mini.gz 的执行权限;sudochmod 777 ramdisk.gz删除临时文件夹ramdisk,拷贝生成的ramdisk根文件系统映像到home/example 目录。

sudormdir tempsudocp -av ramdisk.gz /home/example2.固化引导ramdisk文件系统用户可以根据前面章节内容(章节4.6.1)更新刚制作生成的ramdisk.gz 到Mini2410-IV 的NandFlash中,或者在Ubuntu 下采用minicom终端更新。

使用minicom固化ramdisk文件系统映像的方法跟前节固化vivi映像的步骤相似,启动vivi后,输入命令使用xmodem协议来传送新制作好的ramdisk文件系统映像ramdisk.gz(/home/example/ramdisk.gz):vivi> load flash ramdisk x后面的步骤参考前节vivi的传送,仅需要把需要传送的文件名替换为mdisk.gz即可,传送完毕minicom串口终端打印信息如下:图6-4-1 ramdisk映像传送完毕重启实验系统,并按空格进入到vivi的命令行界面,输入命令修改vivi启动参数为引导ramdisk根文件系统启动:vivi>param set ramdisk_copy 1vivi>param set linux_cmd_line "initrd=0x30800000,0x200000 root=/dev/ramconsole=ttySAC1"vivi>param save重新启动实验系统,将可以在minicom终端看到ramdisk文件系统的完成信息:VIVI version 0.1.4 (embest@ embest -laptop) (gcc version 2.95.3 20010315 (release)) #TMMU table base address = 0x33DFC000Succeed memory mapping.NAND device: Manufacture ID: 0xec, Chip ID: 0x76 (Samsung K9D1208V0M)Could not found stored vivi parameters. Use default vivi parameters.Press Return to start the LINUX now, any other key for viviCopy linux kernel from 0x00030000 to 0x30008000, size = 0x001d0000 ... size = 14donezImage magic = 0x016f2818Copy ramdisk from 0x00200000 to 0x30800000, size = 0x00200000 ... size = 2097152doneSetup linux parameters at 0x30000100linux command line is: "initrd=0x30800000,0x200000 root=/dev/ram console=ttySAC"MACH_TYPE = 193NOW, Booting Linux......Uncompressing Linux.............................................................……Bluetooth: Core ver 2.7NET: Registered protocol family 31Bluetooth: HCI device and connection manager initializedBluetooth: HCI socket layer initializedS3C2410 DMA Driver, (c) 2003-2004 Simtec ElectronicsDMA channel 0 at c4800000, irq 33DMA channel 1 at c4800040, irq 34……Bluetooth: L2CAP socket layer initializedBluetooth: RFCOMM ver 1.5Bluetooth: RFCOMM socket layer initializedBluetooth: RFCOMM TTY layer initializedBluetooth: BNEP (Ethernet Emulation) ver 1.2Bluetooth: BNEP filters: protocol multicast802.1Q VLAN Support v1.8 Ben Greear<greearb@>All bugs added by David S. Miller <davem@>RAMDISK: Compressed image found at block 0EXT2-fs warning: maximal mount count reached, running e2fsck is recommended VFS: Mounted root (ext2 filesystem).Mounted devfs on /devFreeing init memory: 420Kinit started: BusyBox v1.4.2 (2008-05-28 09:24:20 CST) multi-call binary Starting pid 762, console /dev/console: '/etc/init.d/rcS'Please press Enter to activate this console.Starting pid 772, console /dev/console: '/bin/sh'running /etc/profile~#。

相关文档
最新文档