二十幾年前開始玩KNOPPIX這個很不同的Linux distribution後,就再也沒回去用正常安裝方式,KNOPPIX當時的壓縮法是用cloop,幾年之後各大distribution也開始採用Live system的方式來製作自家的CD/DVD ISO,絕大多數都是採用squashfs壓縮演算法,之後差不多squashfs主導了Live system。
不過各家Live system用在initrd裡的系統導引法各有不同,Debian用「live」, Ubuntu用「casper」,已經走入歷史的CentOS用的也叫「live」但和Debian不同,Siduction用fll。各種live system有一個相同的開機參數「toram」, 它會把整個Live系統cp到RAM裡面,在開機完成後,我們可以把用來開機的USB隨身碟或光碟整個拿掉,因為系統已經不再依賴它了。
但是Ubuntu用的casper在遇到「toram」參數後,會cp整支USB隨身碟全部進入RAM裡面, 這樣是有問題的,如果你的USB是64GB,而裡面裝了其他不是Live system的檔案,它會全部cp到RAM裡,萬一你的RAM只有16GB或更少,這樣就無法完成開機,因為RAM被塞滿了,而系統還沒完全cp進入RAM。
使用Ubuntu而不要讓它cp所有USB裡的檔案進入RAM,必需自行手動拆解initrd好把casper裡面cp「整支USB」的那一段程式改成只cp「某個目錄」之下的檔案,再做成initrd,這樣才不會把RAM灌爆掉。其他Live system有的會有不同的參數(例如image_name)來指定只cp目錄下的特定檔案(squashfs壓縮的主系統檔)到RAM裡,像siduction用的fll會自行計算該檔案的大小,以便切割出為存放那個檔案大小的區域,也避免會浪費RAM。
Live system有一項重要的參數"overlay", 在絕大多數initrd裡的規化都是採用50%, 極少數可以讓user自行指定,在我實際使用上發現50%其實不太符合需求,特別是在RAM少的電腦,例如RAM只有4G的系統下,overlay 50%的話就是只有2G能拿來當儲存體,存放開機完成後諸如 /etc, /home, /usr, /var等等,會相當不足!
如果把"overlay"加大到90%的話,既使只有4G RAM的電腦也還算堪用,但這時就不宜使用"toram"的方式,而是保持系統放在儲存設備如USB隨身碟或電腦本身的硬碟。
至於開機有哪些參數可用,好像沒有共通的說明文件,只能自行拆解「initrd」看它裡面有什麼相關的參數可用,沒有的話就只能自行修改。
關於RAM少的電腦還有一個可以補救的方法就是使用zram, 而zram大概用50%就好,因為RAM已經很少,然而這50%可以存放大約三倍容量的資料,也就是說一台只有4G RAM的電腦,使用zram後的記憶體相當等於(4-2)+(2*3)=8G RAM,邏輯上多出來一倍,不過它要依賴CPU運算進行「壓縮/解壓縮」,或許會稍微延遲軟體的執行,但對於無法在物理上增加RAM的環境,還是相當有益處。