雜談:我是怎麼去定製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 ...