|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
常用的linux命令,尤其是一些能帮你提高开发效率的命令,(eg:grep,awk,sed,split等);
1.基本常识
一个操纵体系能够复杂的笼统为,引诱程序内核文件体系。
vmlinuz是Linux内核的镜像文件,能够被引诱程序加载,从而启动Linux体系。
initrd的全称是bootloaderinitializedRAMdisk,它是体系启动时所利用的根文件体系映像文件,这个文件体系中包括几个驱动模块,用来装载实践的根文件体系,好比一个IDE或SCSI硬盘的驱动模块,内核装进这个模块以后用它来驱动硬盘,挂接硬盘到ramdisk的某个子目次,然后再用个中的pivot_root命令,将硬盘文件体系酿成根文件体系,并入手下手实行init历程,此时initramdisk被umount,与世长辞。
因而可知,我们能够用vmlinuzinitrd.img做一个文件系同长驻内存的迷你Linux.
如今进进正题了:
2.编译内核
cd/usr/src/……――进进内核源代码目次,没有的话往官方网站,任意下
makemenuconfig――设置编译选项请注重必定到场RAMdisksupport和initialRAMdisk
(initrd)support的撑持(在blockdevice中)。别的最好将ext3文件体系编进内核,不要编成模块。设置终了后保留为。config(默许)
makebzImage――编译
在很多内核编译参考中另有
makemodules
makemodules_install两步
但我们这里没有到场对modules的撑持,以是不必要。天生的bzImage文件在usr/src/linux/arch/……/boot中,省略的依据你的呆板架构决意,make过程当中会有提醒,好比我的是x86_64.注重这个文件十分主要,实在就是我们终极的vmlinuz.
3.busybox
busybox是一个集成了一百多个最经常使用linux命令和工具的软件,它乃至还集成了一个http服务器和一个telnet服务器,而一切这统统功效却只要戋戋1M摆布的巨细。我们平常用的那些linux命令就比如是分力式的电子元件,而busybox就比如是一个集成电路,把经常使用的工具和命令集成紧缩在一个可实行文件里,功效基础稳定,而巨细却小良多倍,在嵌进式linux使用中,busybox有十分广的使用,别的,年夜多半linux刊行版的安装程序中都有busybox的身影,安装linux的时分案ctrlaltF2就可以失掉一个把持台,而这个把持台中的一切命令都是指向busybox的链接。在我们的迷你Linux中,必要的也恰是busybox的命令和工具。
利用过程当中很多高版本都呈现编译毛病,以是用了一个最原始的版本busybox-1.00
#cpbusybox-1.00.tar.gz/tmp/bunny
#cd/tmp/bunny
#tarxvfzbusybox-1.00.tar.gz
#cdbusybox-1.00
#makemenuconfig――编译设置
上面是必要编译进busybox的功效选项,其他的能够依据必要自选。
GeneralConfiguration应当选的选项
Showverboseappletusagemessages
RuntimeSUID/SGIDconfigurationvia/etc/busybox.conf
BuildOptions
BuildBusyBoxasastaticbinary(nosharedlibs)
这个选项是必定要选择的,如许才干把busybox编译成静态链接的可实行文件,运转时才自力于其他函数库。不然必须要其他库文件才干运转,在单一个linux内核不克不及使他一般事情。
InstallationOptions
Dontuse/usr
这个选项也必定要选,不然makeinstall后busybox将安装在原体系的/usr下,这将掩盖失落体系原本的命令。选择这个选项后,makeinstall后会在busybox目次下天生一个叫_install的目次,内里有busybox和指向它的链接。
其他选项都是一些linux基础命令选项,本人必要哪些命令就编译出来,一样平常用默许的就能够了。
设置好前进出并保留。config.
make
makeinstall
编译好后在busybox目次下天生子目次_install,内里的内容:
bin
linuxrc->bin/busybox
sbin
个中可实行文件busybox在bin目次下,其他的都是指向他的标记链接。
4.制造本人的rootfs
1)目次布局
mkdir/tmp/myOS/rootfs
cd/tmp/myOS/rootfs
mkdiretcusrvartmpprochomerootdev
个中etc,proc和dev是必定要建的,bin和sbin不必建,由于busybox中已有了。
其他的能够意味性的建几个就能够了。
拷贝busybox
#cp-R/tmp/bunny/busybox-1.00/_install/*/tmp/myOS/rootfs/
2)设备文件
我是间接从FC体系/dev目次里cp的,办法以下:
#cp-R/dev/console/tmp/myOS/rootfs/dev/
#cp-R/dev/null/tmp/myOS/rootfs/dev/
#cp-R/dev/zero/tmp/myOS/rootfs/dev/
你以为必要的都cp过去
有的参考文献说fd0,hda,ram,ram1,tty1,loop1,fb0,fb,tty等是必备的,可是仿佛有些文件并没有
3)创建etc目次下的设置文件
我是间接拷贝busybox自带的例子
cp-Rtmp/bunny/busybox-1.00/examples/bootfloppy/etc/*/tmp/myOS/rootfs/etc
4)制造initrd.img映象文件
cd/tmp/myOS/
ddif=/dev/zeroof=/tmp/diskbs=1Mcount=32――初始化32M内存空间
mkfs.ext3-m0/tmp/disk――格局化为ext3
mkdir/mnt/ram
mount-oloop/tmp/disk/mnt/ram――挂载到/mnt/ram
cp-Rrootfs/*/mnt/ram――把rootfs写进内存
umount/mnt/ram
ddif=/tmp/diskof=/tmp/myOS/initrd.img――把内存中的内容以映象体例掏出
ok,这个initrd.img就是我们的rootfs
有的文献利用ram0,也就是将上述历程的/tmp/disk改成/dev/ram0,固然制造历程没有成绩,可是它存在巨细限定
5.整合,启动
1)kernel
cp/usr/src/linux/arch/x86_64/bzImage/boot/vmlinuz
2)rootfs一样平常定名为initrd.img
cp/tmp/myOS/initrd.img/boot
3)有了上述两个文件,已能够经由过程收集dhcp,tftp服务器启动,tftp服务器中增加启动剧本以下
DEFAULTlinux
PROMPT0
LABELlinux
KERNELvmlinuz
appendinitrd=initrd.imgdevfs=nomountramdisk_size=52000
成绩:实际上这个小Linux也应当能够从grub引诱
</p>
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。 |
|