我们假设题主是想为特定的平台定制一个特定的Linux系统。这样的工具有很多,可以参考这篇文章:http://tinylab.org/linux-lab-full-rootfs/
介绍了七种制作Linux系统的工具:
Linux基金会为Rootfs制定了规范文档:LinuxFHS,社区可以基于它开发自己的实现,下面是社区的一些候选制作方法:
1.Busybox,BusyBoxcombinestinyversionsofmanycommonUNIXutilitiesintoasinglesmallexecutable.
2.Buildroot,asimple,efficientandeasy-to-usetooltogenerateembeddedLinuxsystemsthroughcross-compilation.
3.Openembedded,thebuildframeworkforembeddedLinux.
4.Yocto,NOTANEMBEDDEDLINUXDISTRIBUTION,ITCREATESACUSTOMONEFORYOU.
5.LFS,aprojectthatprovidesyouwithstep-by-stepinstructionsforbuildingyourowncustomLinuxsystem,entirelyfromsourcecode.
6.CLFS,aprojectthatprovidesyouwithstep-by-stepinstructionsforcrossbuildingyourowncustomizedLinuxsystementirelyfromsource.
7.Distributions,top10mostpopularlinuxdistributionscompared
Busybox小巧轻灵,本身提供了常见Unix工具集的tiny实现,麻雀虽小,五脏俱全,进行微小的调整就可以制作一个随Linux内核启动的符合FHS的文件系统,特别适合入门嵌入式Linux开发,不需要花很多时间,就可以了解Linux文件系统的组织结构和启动引导过程。
Buildroot,看名字主要是制作Rootfs,集成了Busybox,uclibc等大量轻量级的工具、代码库,可以用熟悉的内核配置工具来配置,用于制作面向嵌入式环境的根文件系统,所以之前就用它来制作了LinuxLab的minirootfs。它不仅提供了多种架构预先编译的交叉编译工具链,本身也可以用来制作交叉编译工具,还可以用来编译内核、Qemu等。为什么不用Buildroot来制作fullrootfs呢?最重要的是,它没有包管理,需要有一个基础的下载和编译过程,这个是有点费时间。但是,如果需要制作比较小的嵌入式系统,这个过程是值得的,首次编译以后,后面就相对比较轻松。
Openembedded,提供了更灵活的配置功能,引入了“菜谱”这样的概念,引入了专门的配置工具:Bitbake,也增加了可扩展性,但是复杂度和编译时间大大增加。相比而言,Buildroot隐藏了这些细节。
Yocto,相比Openembedded在配置性和可扩展性上更进一步,甚至通过引入BSPs,支持真实的机器和开发板,也可以通过配置加入包管理工具,所以它有能力通过大量预制的“菜谱”制作一个完整的LinuxDistribution。Yocto和Openembedded之间共享Bitbake和openembedded-core,它们是Openembedded的构建系统,Yocto基于此做了自己的构建工具:Poky。Yocto和Buildroot的更完整比较请看:Buildrootv.s.Openembedded/YoctoProject。
LFS,LinuxFromScratch,从名字就可以理解,它是从头开始制作一个Linux,manually,step-by-step,相比Busybox,它包含了各种normal-size的包,本身还会制作工具链,制作代码库,Busybox带了tiny-size的代码库,但是没有工具链。
CLFS,CrossLFS,这里主要体现是交叉编译,就是在一个架构上step-by-step完成另外一个架构的LFS过程。
Distributions,Linux世界的发行版百花齐放,不同主题、不同桌面、不同领域、不同更新频次、不同包管理工具让人眼花缭乱,目前业界还在常用的有这么几种:Ubuntu、Debian、ArchLinux、CentOS、Android。Ubuntu现在被各大企业广泛使用,每年4月和10月各发行一个版本;Debian更新更慢,可能也更为稳定;ArchLinux的package滚动更新,比较快能拿到单个软件的新版本;CentOS基本是Redhat的社区版;Android面向手机。Distributions的好处是有预编译的工具链、工具以及Qemu,还有各种代码库,比较适合聚焦应用开发。不过并不是所有发行版都支持多种架构,这里头Ubuntu和Debian是特例,它们都支持ARM、PowerPC和S390,Debian还支持MIPS。除了CD包,Ubuntu还提供了Ubuntu-base(非常基础)和Ubuntu-core(功能更丰富)的文件系统的压缩包,14.10以后只提供制作好的img,之前有纯粹的压缩包。另外,Ubuntu和Debian都提供了debootstrap机制,允许直接拉一个base系统,然后在之上安装其他的package。