slax linux的定制


由於數據結構教學的需要,需要用到linux,要求就是小,啟動快,可定制性強,恰好slax正好滿足要求,以下就是定制slax linux的過程記錄:

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位處理器體系結構。32位版本旨在在非常老舊的計算機(與Intel 686一樣古老;可追溯到1995年)上運行。它也可以在全新的計算機上正常運行,但是下載量更大。此外,還有一個限制,即單個應用程序只能尋址4GB的RAM。另一方面,64位版本較小,沒有這種限制,它將在當今可用的大多數計算機上運行。因此,通常,如果您打算在非常古老的舊計算機上使用Slax,請選擇32位。如果您打算在本世紀制造的機器上使用Slax,則最好選擇64位。而且,如果您不知道目標硬件是什么,

 

  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是免費軟件:您可以根據自由軟件基金會發布的GNU通用公共許可(GPL)的條款,重新分發和/或修改它。分發Slax希望是有用的,但是沒有任何擔保;使用風險自負。GNU GPL許可證要求發布所有源代碼,以便其他人可以重用,修改或從中學習。您可以相信我,這是一個非常好的主意-沒有它,根本就不會有Slax。Slax本身與Debian共享大多數代碼,Debian的源代碼也可以公開獲得。

如果計划從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啟動。這神奇的鑰匙,其顯示啟動菜單通常F11F9 或者Esc,請咨詢您的BIOS文件或觀看屏幕上的說明當你的計算機重新啟動,以確保。

 

為了從硬盤驅動器或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本身開始加載之前,您可以在屏幕中間看到一個大的三葉草圖像。這是啟動徽標。它會顯示一小會兒,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時訪問計算機的硬盤驅動器,這些硬盤驅動器將保持掛載狀態並標記為“正在使用”。確保始終從關閉菜單或使用poweroff或 reboot命令正確關閉Slax ,並始終等待直到系統結束。


但是,在某些情況下,您需要在保持Slax運行的同時盡快拔出引導設備。確實有可能。它需要您的計算機在啟動過程中將所有Slax數據加載(復制)到RAM內存中,因此即使在不再插入引導設備后也可以訪問它。為了使此“復制到RAM”功能生效,請確保使用啟動菜單中的該啟動選項啟動Slax。啟動Slax所需的時間將會增加,因為它將需要復制整個/slax目錄從CD或USB到計算機的內存,但隨后它將從那里運行Slax,使您可以斷開引導設備的連接。您的計算機將需要至少512 MB的RAM來保存所有Slax數據,同時仍具有足夠的可用RAM用於操作系統本身。請記住,即使從內存運行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的啟動並僅停留在文本模式控制台中 文本
調試 啟用S​​lax啟動調試 調試

用空格分開命令。有關man bootparam所有Linux常用的更多作弊碼,請參見手冊頁 

文本模式提供了多種可以使用的系統工具。這些工具當然也可以在圖形用戶界面中使用,您只需要在諸如的終端窗口中運行它們即可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文件

 

 

xterm 終端程序(命令行GUI)
chromium 互聯網網絡瀏覽器和視頻播放器(以訪客身份運行)
leafpad 簡單的文字編輯器
qalculate 強大的計算器
scrot 屏幕截圖捕獲程序,按PrintScreen按鈕調用
feh 簡單的圖像查看器和背景設置器
wicd-manager 網絡管理員
pcmanfm 文件管理器

即使Slax從CD / DVD等只讀介質運行,它仍然提供完全可寫的根文件系統(更改存儲在內存中),使您可以從聯機存儲庫或其他來源安裝其他軟件。除非您使用永久更改,否則安裝的所有內容僅保留在內存中,並且在重新啟動后丟失。下面介紹了向Slax添加軟件的工具以及使更改永久生效的工具。

 

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 activatecommand。同樣,您可以使用停用任何模塊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並嘗試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
└───  ...

 

當計算機的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從那里執行臨時過程。

這時,我們已經運行了一個完全初始化的Linux內核,內存中的initramfs區域由僅具有最基本的Linux命令的臨時根文件系統填充,並且臨時init剛剛啟動。

在initramfs中擁有臨時根文件系統並不理想,因為它不支持pivot_root 系統調用-這是一項重要的操作,將在啟動過程中稍后使用。我們需要從initramfs切換到其他內容。為此,臨時init首先在其上安裝tmpfs文件系統/m,將所有文件和目錄(包括init腳本本身)移至其中,然后使用switch_root使該tmpfs /m成為新的根目錄,並從那里重新啟動init本身。藍星號表示已移動的目錄。

initramfs as root:
(initramfs)
/
├─── bin
│    ├───  sh
│    ├───  mount
│    └───  ...
├─── dev
├─── mnt
├─── m (tmpfs) ★
├─── memory
├─── proc
├─── sys
├───  init
└───  shutdown
->
initramfs after move to tmpfs:
(initramfs)
/
└─── m (tmpfs) ★
     ├─── bin
     │    ├─── sh
     │    ├─── mount
     │    └───  ...
     ├─── dev
     ├─── mnt
     ├─── memory
     ├─── proc
     ├─── sys
     ├───  init
     └───  shutdown
->
tmpfs after switch_root:
(tmpfs) ★
/
├─── bin
│    ├───  sh
│    ├───  mount
│    └───  ...
├─── dev
├─── mnt
├─── memory
├─── proc
├─── sys
├───  init
└───  shutdown
 

不管整個操作看起來多么奇怪(我們最終都獲得了與以前相同的目錄結構,似乎根本沒有任何改善),但是更改是非常重要的。從現在開始,臨時根文件系統位於tmpfs而不是initramfs上,因此 pivot_root將來需要時可以使用該操作。

您可能想知道為什么當前的根文件系統仍標記為臨時文件系統。這是因為我們仍處於構建階段的開始,我們稍后將通過將Slax壓縮數據映像組合到AUFS聯合來構建真正的根文件系統,如下所述。

在初始化過程可以開始在可用設備上搜索Slax數據之前,它需要設置工作環境。proc和sysfs文件系統分別安裝在/proc之上/sys一些重要的內核驅動程序(例如aufs,squashfs和loop)使用modprobe加載,設備文件/dev 通過mdev命令目錄中創建

只要可通過中的設備文件訪問存儲設備/dev,blkid命令將僅過濾掉那些可以掛載的設備(其中包含正在運行的內核已知的文件系統)。依次檢查設備(通過只讀方式安裝/memory/data/),直到找到有效的Slax數據目錄。然后,處理所有擴展名為.sb的文件(Slax捆綁包)-對於每個Slax捆綁包,將在/memory/bundles/其中創建目錄, 並將捆綁包(實際上是squashfs壓縮映像文件)循環安裝在其上。在下圖中,squashfs的內容為綠色。

(tmpfs)
/
├─── 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
 

現在,最終根文件系統的各個部分以只讀方式安裝在中的單獨文件夾下 /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

(tmpfs)
/
├─── ...
└─── 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系統調用之前:

tmpfs root before pivot_root syscall:

(tmpfs) ★
/
├─── ...
└─── memory
     └─── union (aufs) ★
          ├─── bin
          ├─── etc
          ├─── root
          ├─── run
          │    └─── initramfs (empty)
          ├─── sbin
          │    ├─── ...
          │    └─── init
          ├─── usr
          ├─── ...
          └─── var

aufs as new root:

(aufs) ★
/
├─── bin
├─── etc
├─── root
├─── run
│    └─── initramfs (tmpfs) ★
│         ├─── ...
│         └─── memory
│              └─── union (empty)
├─── sbin
│    ├─── ...
│    └───  init <- gets executed
├─── usr
├─── ...
└─── var
 
 

根文件系統是可寫的,我們可以通過拆包的方式以常規方式安裝新軟件包,同時運行Slax。還有另一種可能性,可以在不安裝任何軟件包的情況下,將新文件和目錄即時添加到Slax。由於Slax以AUFS作為根運行,因此我們可以采用其他squashfs壓縮文件系統,將其循環掛載到位於aufs樹之外的目錄中(例如,/run/initramfs/memory/bundles/name.sb/目錄位於tmpfs上),然后發出重新掛載該命令將新安裝的目錄作為新分支添加到aufs。

新的squashfs模塊中的所有文件和目錄將立即顯示,就像它們是從一開始就安裝在系統中一樣,而解壓縮是即時進行的,僅適用於實際訪問的文件。

同樣,我們可以通過另一個remount命令從aufs根目錄中刪除先前添加的AUFS分支(掛載的squashfs)。分支中的文件將立即從系統中消失,這將有效地卸載軟件包。

當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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM