1. 程式人生 > 其它 >雜談:我是怎麼去定製ubuntu-live-cd的?

雜談:我是怎麼去定製ubuntu-live-cd的?

如題。

我為什麼要定製?

首先就是原始的livecd不適合我,他覺得自己普適了,也滿足他自己的意圖了,可使用者(我)的呢?

體積偏大!

還進入安裝介面!

啟動過程滿滿的各種服務、訊息,欺負使用者(我)不懂是吧?!

還有,我就想當做vm環境中的急救live盤,你給我整這麼多沒用的幹嘛!!!

...

定製的基調?

肯定得有宿主環境,目前肯定是linux,而且,最好就是livecd本身!

最小化的工具包,livecd自身滿足才好  :-)

基於livecd本身,如果重頭構建,sB才這樣!

儘量保持原汁原味,能不動就不動,能少修改就少修改,能改一處就不改多出。

最小size!最小size!最小size! (能做到最小size,才能說明你做到極致了)

定製的技術研究方向or指南?

initrd 記憶體盤是一切的開始,往往這只是開始,你不需要定製什麼,只是看看他最初幹了什麼。幾乎所有的initrd不會做什麼特別特殊的動作,這是行規!看他的目的是看它最後會掛載那個目錄為realroot——真實的root根目錄——以及呼叫哪個init而已。

接上一步,你找到realroot以及真實的init嗎,對於livecd,或者說對於ubuntu及其衍生物,都是casper。

然後,後續就是研究casper了! 不同的livecd,casper的實現結構可能不同、組織方式也不同。但萬變不離其宗(變多了,會被罵,而且官方也不一定搞得定),casper要提供一個完整的可以作為根/的環境並且提供可以執行的init環境。完整的根/環境顯而易見,完整的init環境,隨版本(【派系和時間】)的不同而不同。對於ubuntu livecd,只是從20.04後才提供livecd方式,那只有systemd了。而且...... 所有這幾年的各種linux發行版,都是systemd!

systemd!

systemd!

sysemd!

有了以上知識,後續就基本上就是,獲取這個root(根)環境,chroot進去,定製唄!

todo,或說難點?

想讓自己定製的livecd或者說所有的livecd具有普世行,關鍵的問題是解決驅動載入問題 ..............

通常的initrd僅僅帶有基本的裝置驅動——最最關鍵的是網絡卡及儲存(硬碟、軟盤、usb盤)的驅動——、及基本的檔案系統驅動——ext3、ext4——!

todo ...