由於數據結構教學的需要,需要用到linux,要求就是小,啟動快,可定制性強,恰好slax正好滿足要求,以下就是定制slax linux的過程記錄:
什么是Slax
Slax是一個基於Linux的Live操作系統。實時意味着它可以從外部媒體運行,而無需永久安裝。Slax從USB大容量存儲設備(例如閃存驅動器密鑰)以及常規硬盤驅動器和CD / DVD光盤引導。只需插入設備並從中啟動即可。整個Slax操作系統位於設備上的單個目錄中/slax/
,從而可以更輕松地與其他數據進行組織。
Slax提供的FluxBox窗口管理器已經針對最常見的任務進行了預配置。包括一個Web瀏覽器chromium
,終端仿真器xterm
以及簡單的文本編輯器leafpad
和計算器qalculate
。您可以將Slax放在各種不同的文件系統上,包括EXT(ext2,ext3,ext4),btrfs,甚至FAT和NTFS。
從只讀介質(例如CD / DVD)啟動Slax時,它將所有系統修改僅保留在內存中,並且在重新引導時所有修改都將丟失。另一方面,如果從可寫設備(例如USB閃存驅動器)運行Slax,則它可以在其中存儲所有更改,因此即使您位於另一台計算機上,也可以在下次啟動時恢復所有配置和修改。此功能稱為“持久更改”,您可以在單獨的章節中閱讀有關此功能的更多信息。
選擇最佳的Slax架構(32位或64位)
您可能已經注意到Slax可用於32位和64位處理器體系結構。32位版本旨在在非常老舊的計算機(與Intel 686一樣古老;可追溯到1995年)上運行。它也可以在全新的計算機上正常運行,但是下載量更大。此外,還有一個限制,即單個應用程序只能尋址4GB的RAM。另一方面,64位版本較小,沒有這種限制,它將在當今可用的大多數計算機上運行。因此,通常,如果您打算在非常古老的舊計算機上使用Slax,請選擇32位。如果您打算在本世紀制造的機器上使用Slax,則最好選擇64位。而且,如果您不知道目標硬件是什么,
運行Slax的系統要求
Slax 32bit版本 | Slax 64位版本 | |
---|---|---|
處理器: | i686或更高版本的CPU,所有Intel處理器 和AMD處理器均可使用 |
x86_64 CPU,例如AMD Athlon 64,Opteron, Sempron,Intel Core 2 / i3 / i5 / i7等 |
記憶: | 128 MB RAM用於桌面 512 MB RAM用於運行Web瀏覽器 |
128 MB RAM用於桌面 512 MB RAM用於運行Web瀏覽器 |
外設: | CD或USB驅動器從中啟動 | CD或USB驅動器從中啟動 |
可選地: | 網卡,聲卡 | 網卡,聲卡 |
Slax的源代碼和許可證
Slax是免費軟件:您可以根據自由軟件基金會發布的GNU通用公共許可(GPL)的條款,重新分發和/或修改它。分發Slax希望是有用的,但是沒有任何擔保;使用風險自負。GNU GPL許可證要求發布所有源代碼,以便其他人可以重用,修改或從中學習。您可以相信我,這是一個非常好的主意-沒有它,根本就不會有Slax。Slax本身與Debian共享大多數代碼,Debian的源代碼也可以公開獲得。
CD / DVD上的Slax
如果計划從CD或DVD光盤運行Slax,則需要將Slax作為ISO文件下載。實際上,ISO文件是CD的完整映像,因此您需要將其刻錄到CD / DVD介質上。實際上,選擇CD還是DVD都沒關系,兩者都可以工作。最重要的部分是您不能將其刻錄為常規文件。那是行不通的。相反,您必須將其刻錄為光盤映像。例如,在Windows 7中,只需右鍵單擊ISO文件並選擇Burn disc image
從上下文菜單中。在較舊的Windows上,您將需要一些特殊的軟件來執行此任務,例如,可以嘗試使用Free ISO Burner。完成后,將Slax CD / DVD光盤放入CD / DVD驅動器,然后重新啟動。在計算機啟動時,您可能需要按一些鍵以顯示啟動菜單,然后選擇從CD / DVD啟動。這神奇的鑰匙,其顯示啟動菜單通常F11
,F9
或者Esc
,請咨詢您的BIOS文件或觀看屏幕上的說明當你的計算機重新啟動,以確保。
在硬盤或USB閃存驅動器上安裝Slax
為了從硬盤驅動器或USB設備運行Slax,您需要將ISO文件的內容直接復制到磁盤的根目錄中。只有一個名為的文件夾/slax/
,需要復制。例如,Windows 8.1會像為目錄一樣為您打開ISO文件。如果您的操作系統無法訪問ISO文件的內容,則可能需要一些特殊的軟件來執行此任務。或者,您可以將ISO文件刻錄到CD / DVD光盤,然后從那里復制。您應該以/slax/
磁盤上的文件夾結尾,例如E:\slax\
。建議您的磁盤使用msdos分區方案(而不是GPT)。此外,它需要進行格式化,建議使用FAT32或ext4。
完成后,還需要執行一個步驟來使驅動器可啟動:導航到/slax/boot/
USB設備或硬盤上的目錄,然后在其中找到 bootinst.bat
文件(Linux用戶在其中尋找bootinst.sh
)。只需雙擊運行它,它將對設備的主啟動記錄進行所有必要的更改,因此您計算機的BIOS實際上可以理解如何從磁盤啟動Slax。請記住,引導安裝程序不支持多重引導,因此只能從給定的驅動器引導Slax。
接下來,按照與從CD引導相同的步驟進行操作-重新引導計算機,然后從計算機的引導菜單中選擇從USB驅動器或硬盤引導。同樣,您可能需要查閱BIOS文檔,以了解如何從所需的設備引導計算機上的操作系統。
Slax啟動選項
在Slax本身開始加載之前,您可以在屏幕中間看到一個大的三葉草圖像。這是啟動徽標。它會顯示一小會兒,Esc
在此期間您只有四秒鍾的時間按一下鍵,以微調Slax的啟動方式。按下Esc
將調用一個簡單的啟動菜單,如下所示:
運行Slax(永久保留更改) 運行Slax(新啟動) 運行Slax(復制到RAM)
您可以使用此菜單在啟動過程中將Slax數據復制到RAM或以“新啟動”模式運行Slax,以防持久更改被破壞。使用箭頭鍵進行導航,然后使用Enter
鍵選擇任何選項。
持續的變化
從CD / DVD等只讀介質運行時,Slax僅將所有系統更改存儲在內存中,並且在重新引導時會丟失這些更改。如果您從可寫媒體(例如USB驅動器)啟動Slax,則對操作系統本身所做的所有更改都將在下次引導時保存並恢復。如果您的設備使用FAT文件系統(這是USB閃存驅動器上最常見的文件),則對Slax本身的所有文件修改都將保存到一個特殊文件中changes.dat
,該文件在啟動設備的/slax/changes/
目錄中創建,並會自動增長到4GB。如果您的引導設備使用本地Linux文件系統(例如ext4),則更改后的文件將本地保存到 /slax/changes/
目錄,而無需中間的changes.dat文件。如果由於某種原因您不喜歡持久性更改,只需在啟動菜單中選擇一個不同的選項,您的Slax將開始使用默認的“新”配置,並且不會保存任何修改。如果您想在系統范圍內進行測試,這也可能很有用,因為您始終可以通過簡單的重新引導就恢復為默認狀態(以防萬一)。
該文件changes.dat
旨在甚至在大多數USB閃存驅動器上常用的FAT文件系統上也可以使用。不幸的是,FAT的文件大小限制為4GB。因此,持久變化再也不會增長。如果您需要保存更多內容,請使用某些Linux文件系統(例如EXT4或BTRFS)格式化存儲驅動器,然后在其中安裝Slax。Slax將能夠本地保存更改,並且僅受設備實際容量的限制。永久更改功能(當然)不會影響您計算機硬盤驅動器上的文件。如果您修改這些文件,則無論您的永久更改設置如何,都將始終對其進行修改。
安全關閉Slax
Slax運行時,它將從其引導的設備讀取系統數據。如果您使用的是永久更改,則Slax甚至會將數據寫入啟動設備。拔出或彈出它可能會使操作系統崩潰。因此,只有在計算機關閉或重新引導至其他操作系統之后,才能拔出引導設備。同樣,如果在運行Slax時訪問計算機的硬盤驅動器,這些硬盤驅動器將保持掛載狀態並標記為“正在使用”。確保始終從關閉菜單或使用poweroff
或 reboot
命令正確關閉Slax ,並始終等待直到系統結束。
從內存運行Slax
但是,在某些情況下,您需要在保持Slax運行的同時盡快拔出引導設備。確實有可能。它需要您的計算機在啟動過程中將所有Slax數據加載(復制)到RAM內存中,因此即使在不再插入引導設備后也可以訪問它。為了使此“復制到RAM”功能生效,請確保使用啟動菜單中的該啟動選項啟動Slax。啟動Slax所需的時間將會增加,因為它將需要復制整個/slax
目錄從CD或USB到計算機的內存,但隨后它將從那里運行Slax,使您可以斷開引導設備的連接。您的計算機將需要至少512 MB的RAM來保存所有Slax數據,同時仍具有足夠的可用RAM用於操作系統本身。請記住,即使從內存運行Slax,也必須在需要時正確關閉它,以安全地卸下硬盤驅動器(如果有)。
Slax的秘籍
引導參數(也稱為作弊碼)用於影響Slax的引導過程。其中一些是所有Linux通用的,其他則僅適用於Slax。您可以使用它們禁用所需的硬件檢測,從硬盤驅動器啟動Slax等。要使用作弊碼,請Esc
像往常一樣在Slax啟動過程中按鍵激活啟動菜單,然后在看到啟動菜單時按Tab
。屏幕底部將顯示一個命令行,您可以在其末尾編輯或添加新的引導參數:
Cheatcode | 含義 | 例 |
---|---|---|
來自= | 從指定目錄 甚至從ISO文件加載Slax數據 |
來自= / slax7 / 來自= / Downloads / slax.iso 來自= http://domain.com/slax.iso |
noload = | 禁止加載 指定為正則表達式的特定.sb模塊 |
noload = 04-apps noload = apps |鉻 noload = 04 | 05 |
沒有聲音 | 啟動時靜音 | 沒有聲音 |
toram | 激活復制到RAM功能 | slax.flags = toram |
棲息 | 激活永久更改功能 | slax.flags = toram,棲息 |
文本 | 禁用X的啟動並僅停留在文本模式控制台中 | 文本 |
調試 | 啟用Slax啟動調試 | 調試 |
用空格分開命令。有關man bootparam
所有Linux常用的更多作弊碼,請參見手冊頁。
Slax中包含的文本模式實用程序
文本模式提供了多種可以使用的系統工具。這些工具當然也可以在圖形用戶界面中使用,您只需要在諸如的終端窗口中運行它們即可xterm
。以下是一些您可能會發現最有用的工具:
檔案實用程序 |
|
gzip 和 gunzip |
使用Lempel-Ziv編碼減少命名文件的大小 |
bzip2 和 bunzip2 |
使用Burrows-Wheeler塊排序文本壓縮算法壓縮文件 |
xz 和 unxz |
基於Igor Pavlov作為7-Zip一部分的LZMA算法的壓縮實用程序 |
zip 和 unzip |
與PKZIP(Phil Katz的ZIP)兼容的壓縮和文件打包實用程序 |
cpio 和 tar |
用於管理文件存檔的程序 |
磁盤工具 |
|
fdisk |
Linux分區表操縱器,僅支持MBR(主引導記錄)分區 |
hdparam 和 sdparam |
列出和可能更改ATA / IDE和SCSI磁盤參數的實用程序 |
mdadm |
用於創建,管理和監視Linux MD(軟件RAID)設備的實用程序 |
硬件監控工具 |
|
dmidecode |
轉儲計算機的DMI表內容。下表包含系統硬件組件的說明 |
smartctl |
使用自我監視,分析和報告技術(SMART)控制和監視存儲設備 |
文件系統實用程序 |
|
mkfs |
用於構建Linux或其他受支持的文件系統的工具,例如:ext2 / 3/4,reiserfs,btrfs,xfs,jfs,ntfs,fat等 |
fsck |
用於檢查和修復支持的文件系統的實用程序(請參見上文) |
tune2fs |
允許在Linux ext2,ext3或ext4文件系統上調整各種可調文件系統參數 |
系統實用程序 |
|
lsof |
列出有關由系統上運行的進程打開的文件的信息 |
htop |
類似於著名的“頂部”程序的進程查看器,但提供了更多功能 |
數據恢復工具 |
|
ddrescue |
將數據從文件或設備復制到另一文件或設備,並嘗試在發生讀取錯誤的情況下搶救數據 |
rsync |
遠程文件同步程序 |
聯網工具 |
|
ip |
顯示和操縱路由,設備,策略路由和隧道 |
nc |
使用TCP或UDP協議跨網絡連接讀取和寫入數據的實用程序 |
networkctl |
反思網絡鏈接的狀態 |
wpa_supplicant |
Textmode wifi客戶端 |
Windows共享支持 |
|
mount -t cifs |
安裝Windows共享的命令,使其看起來像本地文件系統 |
其他工具 |
|
ssh |
OpenSSH客戶端 |
service ssh start |
OpenSSH服務器 |
mc |
午夜指揮官文件管理器,包括FTP / SCP客戶端,十六進制查看器和文本編輯器 |
apt |
應用程序打包工具以安裝其他軟件 |
特定於Slax的命令 |
|
savechanges |
將在當前會話期間所做的所有文件系統修改保存到模塊文件中 |
sb2dir |
將.sb模塊轉換為目錄 |
dir2sb |
將目錄轉換為.sb模塊 |
rmsbdir |
擦除sb2dir創建的目錄 |
genslaxiso |
使用新模塊生成Slax iso文件 |
Slax中的桌面應用程序
xterm |
終端程序(命令行GUI) |
chromium |
互聯網網絡瀏覽器和視頻播放器(以訪客身份運行) |
leafpad |
簡單的文字編輯器 |
qalculate |
強大的計算器 |
scrot |
屏幕截圖捕獲程序,按PrintScreen按鈕調用 |
feh |
簡單的圖像查看器和背景設置器 |
wicd-manager |
網絡管理員 |
pcmanfm |
文件管理器 |
自定義Slax
即使Slax從CD / DVD等只讀介質運行,它仍然提供完全可寫的根文件系統(更改存儲在內存中),使您可以從聯機存儲庫或其他來源安裝其他軟件。除非您使用永久更改,否則安裝的所有內容僅保留在內存中,並且在重新啟動后丟失。下面介紹了向Slax添加軟件的工具以及使更改永久生效的工具。
使用apt添加軟件
Slax完全支持apt
命令,這是一個功能強大的命令行工具,適用於諸如安裝新軟件包或升級現有軟件包之類的任務。例如,為了安裝vlc視頻播放器,只需執行apt install vlc
並完成所有設置,Slax將下載所請求的程序包,包括運行該程序所需的所有庫和其他依賴項。如果不確定要安裝的軟件包名稱,可以使用進行搜索apt search your_keyword
。請記住,apt會在您首次運行時自動下載其可用軟件包的數據庫。如果系統連續運行幾天,則可能需要運行apt update
不時手動進行操作,以確保數據庫是最新的。
手動添加軟件
如果您希望手動將軟件添加到Slax,可以通過從Internet下載和編譯源代碼來完成。只需記住,為了能夠在Slax中編譯源代碼,您將需要apt install build-essential
提供,gcc編譯器,make以及該任務所需的其他工具。如果您正在使用github從github下載源git clone
,則可能還需要apt install git
。
使您的更改永久生效
如果從可寫介質運行Slax,則更改將被永久存儲,並且無需任何其他步驟。但是,如果從CD / DVD等只讀介質運行Slax,或者選擇在引導過程中禁用持久更改功能,則仍然可以通過創建模塊來保存更改。在任何時候,當您安裝並配置了所需的應用程序后,請使用savechanges
命令將對當前系統所做的所有修改保存到模塊中。該命令需要一個參數,該參數是將保存更改的文件的路徑。例如,使用savechanges /tmp/mychanges.sb
。除了一些預定義的文件和目錄(例如臨時文件,緩存等)外,對系統所做的所有修改都將被存儲。
一旦您的更改存儲在模塊中,您所需要做的就是將此模塊包括在您的Slax中,並且它將在啟動期間自動激活。將.sb模塊復制到/slax/modules/
目錄並重新啟動。如果從可寫介質(例如USB驅動器)運行Slax,則可以將模塊直接復制到/run/initramfs/memory/data/slax/modules/
,該模塊已映射到USB磁盤。如果從CD / DVD等只讀介質運行Slax,則可能需要使用genslaxiso
命令重新生成ISO映像。
如果要檢查模塊的內容或修改模塊中的文件,可以使用Slax中提供的兩個命令: sb2dir
將模塊轉換為目錄,然后dir2sb
將其轉換為.sb文件。要記住的重要一點是,轉換為目錄的模塊存儲在內存中(從技術上講,該目錄已用tmpfs重載),因此即使使用空目錄,您也可能無法用rmdir刪除該目錄(您將得到EBUSY錯誤)。使用rmsbdir
命令刪除由sb2dir創建的目錄。
請注意,這些命令在較舊的Slax版本中的工作方式有所不同,因此請確保您使用的是Slax 9.6.4或更高版本。
即時激活模塊
如果您有一個Slax模塊(.sb),並且希望在運行Slax時將其激活,而無需重新啟動,則可以使用slax activate
command。同樣,您可以使用停用任何模塊slax deactivate
。但是,如果打開或使用了模塊中的任何文件,則無法停用,因此在嘗試停用模塊之前,請確保殺死所有可能使用模塊中文件的進程。
回顧一下,這是我們剛剛學到的命令 |
|
apt search keyword |
通過關鍵字搜索可用的軟件包 |
apt install package |
下載並安裝軟件包 |
savechanges target.sb |
將當前會話期間進行的所有文件系統修改保存到模塊文件中 |
sb2dir module.sb |
將.sb模塊轉換為目錄 |
dir2sb directory.sb |
將目錄轉換為.sb模塊 |
rmsbdir directory.sb |
清除sb2dir創建的目錄 |
genslaxiso slax.iso module.sb |
用新模塊生成Slax iso文件 |
slax activate module.sb |
即時激活模塊 |
slax deactivate module.sb |
即時停用模塊 |
示例:使用新牆紙制作模塊
#Slax使用/usr/share/wallpapers/slax_wallpeper.jpg中的牆紙
#因此,我們將替換此文件 #首先,創建一個臨時模塊樹 #注意目錄本身的擴展名為.sb DIR = / tmp / module.sb mkdir $ DIR mkdir -p $ DIR / usr / share / wallpapers / #現在將牆紙文件復制到該目錄 貓new_wallpaper.jpg> $ DIR / usr / share / wallpapers / slax_wallpaper.jpg #最后,將模塊目錄轉換為文件 #目錄將被刪除,並將創建具有相同名稱的模塊文件 dir2sb $ DIR
示例:將FireFox添加到Slax
#首先,我們啟動新的Slax並嘗試apt apt安裝firefox
#如您所見,沒有名為“ firefox”的軟件包。讓我們嘗試搜索單詞 apt搜索Firefox | 更多 #啊,現在我們得到了一些東西。該軟件包稱為firefox-esr。所以讓我們安裝它 apt安裝firefox-esr #我們只希望它叫Firefox,所以讓我們編輯負責該名稱的桌面文件 sed -i -r“ s / ^ Name = FireFox ESR / Name = Firefox /” /usr/share/applications/firefox-esr.desktop #現在保存新安裝的軟件,包括我們對模塊的更改 #在我們的示例中,該模塊將保存在當前目錄中 savechanges firefox.sb #如果從只讀CD運行,則可以使用我們的模塊創建一個新的ISO #然后將ISO刻錄到新的CD上,並且在引導時可以使用Firefox #在我們的示例中,該ISO文件將在當前目錄中創建 genslaxiso slax.iso firefox.sb #如果我們正在從USB驅動器運行Slax,我們可以將其直接放入模塊文件夾 #這樣,firefox將在重啟后可用 mv firefox.sb / run / initramfs / memory / data / slax / modules /
Slax目錄結構
所有Slax數據文件都位於引導媒體上的單個目錄中。該目錄的名稱為“ slax”也就不足為奇了。所有的魔力都發生在里面。這里是簡化目錄結構的概述;目錄為紅色,使用斜體字還提到了一些有趣的文件 :
├─── boot
│ ├─── isolinux.bin
│ ├─── syslinux.cfg
│ ├─── initrfs.img
│ ├─── vmlinuz
│ └─── ...
├─── changes
├─── rootcopy
├─── 01-core.sb
├─── 02-xorg.sb
├─── 03-desktop.sb
├─── 04-chromium.sb
└─── ...
引導Linux內核
當計算機的BIOS啟動Slax時,它實際上僅運行SYSLINUX引導加載程序。引導加載程序本身存儲在文件isolinux.bin或ldlinux.sys中,具體取決於您的引導介質-CD / DVD使用isolinux.bin,USB磁盤或硬盤驅動器使用ldlinux.sys。
一旦SYSLINUX引導加載程序執行完畢,它就會從配置文件syslinux.cfg(您猜對了)中了解下一步要做什么。在Slax中,此配置文件包含顯示一些很酷的啟動徽標的說明,如果用戶在超時之前按了某個鍵,則可以選擇提供啟動菜單。當超時計數器達到零或用戶退出引導菜單時,SYSLINUX引導加載程序會將兩個文件加載到內存中:vmlinuz(Linux內核)和initrfs.img(基本根文件系統)。進度由打印在屏幕上的連續點流指示。加載文件后,將執行vmlinuz二進制文件以啟動Linux內核。
預初始化
在正常情況下(從硬盤驅動器開始使用標准Linux發行版時),Linux內核將從硬盤驅動器掛載根文件系統, /sbin/init
並將其作為執行系統啟動的主要過程來執行。在Slax中,情況有所不同-沒有硬盤驅動器可從中掛載根文件系統,但是內核肯定需要啟動一些初始化過程。為此,Slax在initrfs.img文件中帶有一個基本文件系統-它是一個壓縮的CPIO存檔,其中包含一些目錄和文件,包括核心Linux工具(命令)和所需的init。
因此,在Linux內核成功初始化並完全控制了計算機之后,它的最后一個任務是在內存中找到所提到的CPIO存檔(如您所記得,它是通過syslinux boot loader從文件initrfs.img加載到那里的),然后解壓縮它(進入用作臨時根文件系統的內存區域,稱為initramfs)並/init
從那里執行臨時過程。
轉義initramfs
這時,我們已經運行了一個完全初始化的Linux內核,內存中的initramfs區域由僅具有最基本的Linux命令的臨時根文件系統填充,並且臨時init剛剛啟動。
在initramfs中擁有臨時根文件系統並不理想,因為它不支持pivot_root
系統調用-這是一項重要的操作,將在啟動過程中稍后使用。我們需要從initramfs切換到其他內容。為此,臨時init首先在其上安裝tmpfs文件系統/m
,將所有文件和目錄(包括init腳本本身)移至其中,然后使用switch_root使該tmpfs /m
成為新的根目錄,並從那里重新啟動init本身。藍星號表示已移動的目錄。
/
├─── bin
│ ├─── sh
│ ├─── mount
│ └─── ...
├─── dev
├─── mnt
├─── m (tmpfs) ★
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
/
└─── m (tmpfs) ★
├─── bin
│ ├─── sh
│ ├─── mount
│ └─── ...
├─── dev
├─── mnt
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
/
├─── bin
│ ├─── sh
│ ├─── mount
│ └─── ...
├─── dev
├─── mnt
├─── memory
├─── proc
├─── sys
├─── init
└─── shutdown
不管整個操作看起來多么奇怪(我們最終都獲得了與以前相同的目錄結構,似乎根本沒有任何改善),但是更改是非常重要的。從現在開始,臨時根文件系統位於tmpfs而不是initramfs上,因此 pivot_root
將來需要時可以使用該操作。
您可能想知道為什么當前的根文件系統仍標記為臨時文件系統。這是因為我們仍處於構建階段的開始,我們稍后將通過將Slax壓縮數據映像組合到AUFS聯合來構建真正的根文件系統,如下所述。
Slax數據查詢
在初始化過程可以開始在可用設備上搜索Slax數據之前,它需要設置工作環境。proc和sysfs文件系統分別安裝在/proc
和之上/sys
。一些重要的內核驅動程序(例如aufs,squashfs和loop)使用modprobe加載,設備文件/dev
通過mdev命令在目錄中創建。
只要可通過中的設備文件訪問存儲設備/dev
,blkid命令將僅過濾掉那些可以掛載的設備(其中包含正在運行的內核已知的文件系統)。依次檢查設備(通過只讀方式安裝/memory/data/
),直到找到有效的Slax數據目錄。然后,處理所有擴展名為.sb的文件(Slax捆綁包)-對於每個Slax捆綁包,將在/memory/bundles/
其中創建目錄, 並將捆綁包(實際上是squashfs壓縮映像文件)循環安裝在其上。在下圖中,squashfs的內容為綠色。
/
├─── bin
├─── dev
├─── ...
├─── memory
│ ├─── bundles
│ │ ├─── 01-core.sb (squasfhs mount) < ───┐
│ │ │ ├─── bin │
│ │ │ ├─── etc │
│ │ │ ├─── sbin │
│ │ │ └─── ... │
│ │ ├─── 02-xorg.sb ......................│...
│ │ │ ├─── etc │ :
│ │ │ ├─── usr │ :
│ │ │ └─── ... │ :
│ │ ├─── 03-desktop.sb ...................│..:...
│ │ │ ├─── usr │ : :
│ │ │ └─── ... │ : :
│ │ └─── ... │ : : loop
│ ├─── data (slax device mounted here) │ : : mounts
│ │ └─── slax │ : :
│ │ ├─── boot │ : :
│ │ ├─── changes │ : :
│ │ ├─── rootcopy │ : :
│ │ ├─── 01-core.sb ──── > ──── > ───┘ : :
│ │ ├─── 02-xorg.sb ....................: :
│ │ ├─── 03-desktop.sb ....................:
│ │ └─── ...
│ ├─── changes (empty yet)
│ └─── union (empty yet)
├─── proc (procfs mounted here)
├─── sys (sysfs mounted here)
└─── init
與AUFS放在一起
現在,最終根文件系統的各個部分以只讀方式安裝在中的單獨文件夾下 /memory/bundles
。核心Linux系統實用程序和庫(例如/bin/bash
或/lib/ld-linux.so
位於中) /memory/bundles/01-core.sb/
,與桌面環境相關的文件可在等中找到/memory/bundles/03-desktop.sb/
。歸功於AUFS(由Junjiro Okajima先生開發的類似工會的文件系統),將它們組合到一個甚至可以寫的單個根文件系統中成為可能。AUFS能夠容納多個文件夾(所謂的分支)並將它們組合在一起形成一個目錄。這就是接下來要發生的事情,將分離的部分與目錄一起合並/memory/changes/
到AUFS聯合目錄,該目錄將安裝在/memory/union
。
/
├─── ...
└─── memory
├─── bundles
│ ├─── 01-core.sb ───────── > ──────┐
│ ├─── 02-xorg.sb ..................│.......
│ ├─── 03-desktop.sb ...............│......:........
│ └─── ... │ : :
├─── changes ──────── > ───────┐ │ : :
├─── ... ˅ ˅ : :
└─── union < ═══════ < ═══════ < ───── < ─────┘ < ────┘
├─── bin AUFS
├─── etc mount
├─── mnt
├─── root
├─── sbin
├─── usr
├─── ...
└─── var
變化
空目錄/memory/changes
是可寫的,因此整個AUFS掛載/memory/union
也可寫。聯盟中所有新的或更改的文件都將被復制到此空目錄,然后系統會創建或修改它們。由於更改目錄位於tmpfs(即RAM)上,因此所有新文件和修改后的文件都存儲在RAM中,因此在重新啟動時丟失。
但是,如果Slax是從USB設備或硬盤等可寫介質啟動的,則它會識別並/memory/changes
在將其與其他分支並入聯盟之前裝入可寫驅動器,這實際上意味着已更改和新文件將存儲在該驅動器上。引導設備而不是RAM,重新引導不會刪除它們。此功能稱為“永久更改”,可以通過啟動菜單設置來打開或關閉。
切換到真實根
至此,已經內置了完全可寫的最終根文件系統/memory/union
。臨時init的壽命即將結束。它使用pivot_root
和 chroot
系統調用創建/memory/union
新的根,將臨時tmpfs根轉移到/run/initramfs/
新的根中。下圖的藍色和綠色星星表示移動的位置。最后,/sbin/init
執行來自aufs根文件系統的real 。Slax操作系統的啟動才剛剛開始。
tmpfs根在pivot_root系統調用之前:
/
├─── ...
└─── memory
└─── union (aufs) ★
├─── bin
├─── etc
├─── root
├─── run
│ └─── initramfs (empty)
├─── sbin
│ ├─── ...
│ └─── init
├─── usr
├─── ...
└─── var
aufs as new root:
/
├─── bin
├─── etc
├─── root
├─── run
│ └─── initramfs (tmpfs) ★
│ ├─── ...
│ └─── memory
│ └─── union (empty)
├─── sbin
│ ├─── ...
│ └─── init <- gets executed
├─── usr
├─── ...
└─── var
快速向Slax添加模塊
根文件系統是可寫的,我們可以通過拆包的方式以常規方式安裝新軟件包,同時運行Slax。還有另一種可能性,可以在不安裝任何軟件包的情況下,將新文件和目錄即時添加到Slax。由於Slax以AUFS作為根運行,因此我們可以采用其他squashfs壓縮文件系統,將其循環掛載到位於aufs樹之外的目錄中(例如,/run/initramfs/memory/bundles/name.sb/
該目錄位於tmpfs上),然后發出重新掛載該命令將新安裝的目錄作為新分支添加到aufs。
新的squashfs模塊中的所有文件和目錄將立即顯示,就像它們是從一開始就安裝在系統中一樣,而解壓縮是即時進行的,僅適用於實際訪問的文件。
同樣,我們可以通過另一個remount命令從aufs根目錄中刪除先前添加的AUFS分支(掛載的squashfs)。分支中的文件將立即從系統中消失,這將有效地卸載軟件包。
Slax關機
當Slax關閉以進行重新引導或關閉系統電源時,它會像其他Linux一樣執行所有標准任務,例如卸載用戶安裝的所有分區,終止所有進程,等等。但是由於引導設備可能仍會在最后安裝並用於永久更改,因此在發出真正的電源關閉之前,還需要執行一些其他步驟,以確保完全卸載引導設備。
Slax不會在init認為應該這樣做的時候關閉系統,而是切換回initramfs(由systemd自動處理)並執行關閉腳本/run/initramfs/shutdown
。
然后,關閉腳本負責將剩余的從Slax啟動並已完全彈出引導設備的已安裝磁盤取消掉。最后,計算機將根據用戶的意圖重新啟動或關閉。
現在開始了定制了:
1、雖然slax可在只讀介質上運行,它依舊提供了可寫的根文件系統,將更改暫存在內存中,可在使用中從網絡或其他來源更新和安裝軟件,對系統進行配置等。如果完成操作后,不做任何處理,所有的更改將隨着系統的重啟而煙消雲散。
2、使用apt安裝新軟件、更新老軟件,同時更新或安裝軟件依賴的庫或者軟件包:
1)、apt edit-sources #編輯軟件源
2)、apt update #更新軟件源
3)、apt upgrade #更新所有有更新的包,有依賴的不更
4)、apt search fileName #查找指定的軟件包
5)、apt list fileName #列出指定的軟件包的所有信息
6)、apt show fileName #顯示指定的軟件包
7)、apt insall fileName #安裝指定的軟件包
8)、apt remove fileName #刪除指定的軟件包
9)、apt full-upgrade #更新軟件包,可能會刪除某些軟件包為了滿足依賴
10)、apt autoremove #自動刪除無用的軟件包
3、可以使用源碼安裝軟件,如果需要使用github的包,需要安裝git軟件包,同時也需要gcc、make等軟件包,最好把所有需要的一並裝上vim gdb git cmake,需要使用:
apt install build-essential vim gdb git cmake
4、系統配置,可以配置vim配置文件、git配置文件、bash配置文件等
5、若想將2或3或4的工作保存,主要有以下兩種情況:如果是在可寫介質上運行slax,所有的更改都是自動保存,無需其他操作,直接將更改保存到/slax/changes/目錄下,重啟后系統自動讀取,就會重新到配置后的狀態。另外一種情況是截至不能被寫入時,無論是介質本身不能寫入還是介質被禁止寫入都一樣的,使用:
savechanges /tmp/mychanges.sb #將系統的更改保存到指定的/tmp目錄下,文件名為mychanges,
將文件保存到可寫的介質中,以便后來的使用。
6、使用自己的配置或更改,若介質不能寫入,使用genslaxiso重新生成鏡像文件,如果介質可寫,將mychanges.sb文件放置到其他sb文件一樣的目錄下,就會在系統啟動后自動被加載,從而變相實現了運行環境的保存。
7、模塊修改總結:
1)、生成模塊 savechanges /tmp/mychanges.sb
2)、模塊變成目錄 sb2dir mychanges.sb
3)、目錄生成模塊 dir2sb mychanges
4)、刪除模塊目錄 rmsbdir mychanges
5)、新模塊生成ISO genslaxiso slax.iso mychanges.sb
6)、及時激活模塊 slax activate mychanges.sb
7)、及時停用模塊 slax deactivate mychanges.sb