我們假設題主是想為特定的平臺定制一個特定的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。