回覆列表
-
1 # Linux知識星球
-
2 # 拆遷隊1847號
linux已經有了,拿來用就行了,何需自制?
我猜你想問的是 “如何定製個性化的linux”。
如果是這樣,假定題主正在使用linux系統並對linux有一定的瞭解,那麼你可以先只裝一個核心,然後根據自己的需求搭建你的系統(裝軟體),需要啥就裝啥,沒其他多餘的東西,這就是最基本的個性化定製。(推薦使用arch )
如果你還想再進一步,那麼你可以瞭解一下linux的核心,根據教程定製自己的linux核心,然後在定製好了核心上面搭建系統,這就比上面高一個層次了。
如果你需要從核心到應用都要個性化定製的話,那麼你至少應該熟悉或精通linux核心,並掌握或C/ C++程式語言,在定製核心的基礎上開發自己想要的功能及模組。這時候,你就可以釋出自己的發行版了,這才叫真正意義上的“自制linux系統”,少了C/C++一切都是空談。
退回來再假設一下題主要求的只是在現有系統的基礎上個性化一下介面及視覺效果,那麼說穿了也就是一個系統主題和配置工具的事情,這和“自制linux系統”有啥關係?
我們假設題主是想為特定的平臺定製一個特定的 Linux 系統。這樣的工具有很多,可以參考這篇文章:http://tinylab.org/linux-lab-full-rootfs/
介紹了七種製作 Linux 系統的工具:
Linux 基金會為 Rootfs 制定了規範文件:Linux FHS,社群可以基於它開發自己的實現,下面是社群的一些候選製作方法:
1. Busybox,BusyBox combines tiny versions of many common UNIX utilities into a single small executable.
2. Buildroot,a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.
3. Openembedded,the build framework for embedded Linux.
4. Yocto,NOT AN EMBEDDED LINUX DISTRIBUTION, IT CREATES A CUSTOM ONE FOR YOU.
5. LFS,a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code.
6. CLFS,a project that provides you with step-by-step instructions for cross building your own customized Linux system entirely from source.
7. Distributions,top 10 most popular linux distributions compared
Busybox 小巧輕靈,本身提供了常見 Unix 工具集的 tiny 實現,麻雀雖小,五臟俱全,進行微小的調整就可以製作一個隨 Linux 核心啟動的符合 FHS 的檔案系統,特別適合入門嵌入式 Linux 開發,不需要花很多時間,就可以瞭解 Linux 檔案系統的組織結構和啟動引導過程。
Buildroot,看名字主要是製作 Rootfs,集成了 Busybox,uclibc 等大量輕量級的工具、程式碼庫,可以用熟悉的核心配置工具來配置,用於製作面向嵌入式環境的根檔案系統,所以之前就用它來製作了 Linux Lab 的 mini rootfs。它不僅提供了多種架構預先編譯的交叉編譯工具鏈,本身也可以用來製作交叉編譯工具,還可以用來編譯核心、Qemu 等。為什麼不用 Buildroot 來製作 full rootfs 呢?最重要的是,它沒有包管理,需要有一個基礎的下載和編譯過程,這個是有點費時間。但是,如果需要製作比較小的嵌入式系統,這個過程是值得的,首次編譯以後,後面就相對比較輕鬆。
Openembedded,提供了更靈活的配置功能,引入了“菜譜”這樣的概念,引入了專門的配置工具:Bitbake,也增加了可擴充套件性,但是複雜度和編譯時間大大增加。相比而言,Buildroot 隱藏了這些細節。
Yocto,相比 Openembedded 在配置性和可擴充套件性上更進一步,甚至透過引入 BSPs,支援真實的機器和開發板,也可以透過配置加入包管理工具,所以它有能力透過大量預製的“菜譜”製作一個完整的 Linux Distribution。Yocto 和 Openembedded 之間共享 Bitbake 和 openembedded-core,它們是 Openembedded 的構建系統,Yocto 基於此做了自己的構建工具:Poky。Yocto 和 Buildroot 的更完整比較請看:Buildroot v.s. Openembedded/Yocto Project。
LFS, Linux From Scratch,從名字就可以理解,它是從頭開始製作一個 Linux,manually, step-by-step,相比 Busybox,它包含了各種 normal-size 的包,本身還會製作工具鏈,製作程式碼庫,Busybox 帶了 tiny-size 的程式碼庫,但是沒有工具鏈。
CLFS,Cross LFS,這裡主要體現是交叉編譯,就是在一個架構上 step-by-step 完成另外一個架構的 LFS 過程。
Distributions,Linux 世界的發行版百花齊放,不同主題、不同桌面、不同領域、不同更新頻次、不同包管理工具讓人眼花繚亂,目前業界還在常用的有這麼幾種:Ubuntu、Debian、Arch Linux、CentOS、Android。Ubuntu 現在被各大企業廣泛使用,每年 4 月和 10 月各發行一個版本;Debian 更新更慢,可能也更為穩定;Arch Linux 的 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。