Linux虚拟盘制作简易方法实践
关键字
Ramdisk VFS 虚拟盘 busybox
概 述
使用busybox制作linux虚拟盘的方法,以及Andoid虚拟盘的整合
1、 安装busybox工具
Busybox有多个版本,一般都可用,此处用的是1.7.3,位于ftp://server28/共享软件/linux下应用软件目录下busybox-1.7.3.tar.gz
拷贝到用户目录后解压缩:tar –zxvf busybox-1.7.3.tar.gz
打开包中的Makefile文件,搜索cross找到交叉编译器所在,设置为和编译linux源码同样版本的交叉编译器,保存makefile
先使用Make defconfig命令获得config,再使用make menuconfig打开,设置一些选项如下:
General Configuration里选上
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options里选上
Build BusyBox as a static binary (no shared libs)
Installation Options里选上
Don't use /usr
即可,保存退出,此时编译还有一些编译错误,打开applets目录下applets.c,将第一段代码屏蔽,(上面地址下载的包已经将这个C文件修改好)
#if 0
/* Apparently uclibc defines __GLIBC__ (compat trick?). Oh well. */
#if ENABLE_STATIC && defined(__GLIBC__) && !defined(__UCLIBC__)
#warning Static linking against glibc produces buggy executables
#warning (glibc does not cope well with ld --gc-sections).
#warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
#warning Note that glibc is unsuitable for static linking anyway.
#warning If you still want to do it, remove -Wl,--gc-sections
#warning from top-level Makefile and remove this warning.
#error Aborting compilation.
#endif
#endif
保存config退出,使用make编译好后,make install即可自动安装完毕。
下面的方法给出了在一个已有的虚拟盘基础上修改制作新虚拟盘的方法:
2、 打开一个已有的虚拟盘文件
找到一个已有的虚拟盘,如开发板代码包中的ramdisk.gz,将其拷贝解压缩,解压出来的是一个独立的文件ramdisk,这个文件就是将要制作的虚拟盘的蓝本。
当前目录下(假设为/mnt)新建一个root的文件夹:mkdir root
sudo –s –H
将ramdisk映射到root目录中:
mount ramdisk /mnt/root -o loop
此时,root目录下的内容就是虚拟盘中的目录结构了。
因为unmount之后root里面的内容都会消失,因此可先拷贝一个备份出来:
cp –rvf root/ fs/
则fs目录下都是虚拟盘的内容,然后umount虚拟盘:
umount /mnt/root
此后,便可以任意修改fs/目录下的目录,添加和修改所需文件等。
拷贝busybox
#cp -a 你的目录/_install/* /mnt/fs
这样,busybox里生成的shell都到了fs目录下。
做完各种修改后,便可以以fs目录为基础建立虚拟盘
3、建立ramdisk虚拟盘
1)建立新的ramdisk大小为40M
dd if=/dev/zero of=ramdisk bs=1k count=40960
2)格式为ext2
/sbin/mke2fs -F -m 0 ramdisk
3)禁止check
/sbin/tune2fs -c 0 ramdisk
4)挂载,先新建一个目录如名为diy:
mkdir -p /mnt/diy
mount -o loop ramdisk /mnt/diy
5拷贝根文件系统,将fs中的内容全部拷贝到所建立的diy目录
#cp -a /mnt/fs/* /mnt/ diy /
6解挂和压缩
#umount /mnt/diy/
#gzip -v9 ramdisk
至此,当前目录下生成的ramdisk.tar.gz即为新的虚拟盘。
有关Andoid虚拟盘制作待补充