Lightwhale 讓 Linux 伺服器再次有趣。

直接開機,專注於重要事項!

這是一款專為輕鬆運行 Docker 容器而設計的作業系統。它可直接從 ISO 映像檔開機,進入功能齊全的 Docker Engine,無需安裝或設定。

核心系統是不可變更的,這使其本質上無需維護,同時增強了安全性。資料和自訂設定完全獨立儲存在專用裝置上,確保它們不會與核心系統檔案混淆。這提供了透明度,並使備份更容易。

簡潔而功能強大,適用於家用實驗室或企業環境,裸機或虛擬化,邊緣節點或叢集。

秉持極簡設計理念和對易用性的重視,Lightwhale 降低了入門門檻,消除了繁瑣的管理任務,並開啟了無摩擦的生產力之路,讓您感覺很棒!

讓我們用幾個簡單的步驟,在裸機 x86 機器上運行 Lightwhale。

從下載區下載最新的 Lightwhale ISO 檔案,或複製、貼上並在終端機中運行此命令:

curl -JOL http://lightwhale.asklandd.dk/download/lightwhale-3.0.5-x86.iso

使用您偏好的 ISO 燒錄工具,或直接使用 dd 命令,將 Lightwhale ISO 檔案寫入 USB 隨身碟:

sudo dd bs=4M conv=fsync if=lightwhale-3.0.5-x86.iso of=/dev/sdx

在您新準備的 Lightwhale 開機媒體上啟動您的機器。可能需要先在 BIOS 中禁用安全開機。

請注意,開機 Lightwhale 是完全安全的,除非您明確啟用持續性(可選,請參閱步驟 5),否則它不會將任何內容寫入任何磁碟。

將魔術標頭寫入所需的儲存裝置,通常是 SSD 或 HDD。將其寫入區塊裝置(而非分割區);對於 HDD,請使用例如 /dev/sda(而非 /dev/sda1);對於 NVME,請使用例如 /dev/nvme0n1(而非 /dev/nvme0n1p1)。請注意,這將清除該裝置上所有現有資料。在某些系統上,在寫入魔術標頭之前,需要先清除現有的分割區表:

sudo dd if=/dev/zero bs=512 count=1 conv=notrunc of=/dev/nvmeØn1 echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/nvmeØn1

重新啟動以讓 Lightwhale 偵測到魔術標頭並自動建立和掛載資料檔案系統。

sudo setup-wifi --ssid="my wifi name" --password="my wifi secret"

此時,一切照常進行:

在將伺服器暴露於網際網路之前,請務必採取足夠的安全措施。由於每個人都知道您新伺服器的預設登入和密碼,至少要更改它:

您也可以在 VM 中運行 Lightwhale,甚至虛擬化持續性。

Lightwhale ISO 可在裸機或虛擬機器上開機,支援 UEFI 和傳統 BIOS。它使用經典的類 sysv init 系統,保持啟動過程簡單透明。

首先,開機載入程式將 Linux 核心和根檔案系統載入記憶體。核心初始化硬體,然後將控制權交給 /init。

init 處理程序讀取 /etc/inittab,掛載標準的可寫 tmpfs 用於 /tmp 和 /run,然後執行 /etc/init.d 中的 init 腳本。

在 init 過程中早期,會掛載可寫資料檔案系統。它為 Docker 資料提供直接儲存,並為 /etc、/var 和 /home 提供上層疊加。這有效地使您能夠在不可變更的根檔案系統之上配置 Lightwhale,以及安裝和運行容器。預設情況下,資料檔案系統是揮發性的 tmpfs,但當啟用持續性時,則使用儲存裝置。

在所有檔案系統和疊加層就位後,其餘服務啟動,Lightwhale 即可為容器提供服務。

這才是真正讓 Lightwhale 與傳統伺服器作業系統區分開來的特點!

根檔案系統是靜態的 squashfs 映像檔,經過壓縮以節省記憶體,並且本質上是不可變更的。不可變更的核心和根檔案系統在簡單性、安全性與可靠性方面帶來了顯著優勢。

Lightwhale 的不可變更性提供了明顯的優勢,但為了安裝、配置、運行容器和寫入資料,需要一個可寫檔案系統。此外,為了使系統真正有用,此類修改必須在重新啟動後仍然存在。

Lightwhale 在啟動過程中早期啟動一個自動子系統,該子系統在資料檔案系統上啟用寫入功能。這可以是臨時的,也可以是持續的,但始終掛載在 /mnt/lightwhale-data。

Lightwhale 寫入的所有資料都保留在單一子目錄中:資料檔案系統上的 /mnt/lightwhale-data/lightwhale-state。這反過來作為 overlayfs 堆疊中的可寫上層,不可變更的根作為下層,共同在唯讀檔案系統之上啟用寫入功能。

預設情況下,Lightwhale 掛載揮發性 tmpfs 作為其資料檔案系統。當啟用持續性時,資料檔案系統則位於儲存裝置上。多個儲存裝置在 Btrfs RAID1 資料檔案系統中自動管理。

資料檔案系統疊加層不涵蓋整個根檔案系統;這將完全違背不可變更性和 Lightwhale 的目的。相反,可寫疊加層僅應用於幾個策略性目錄:

Docker 會繞過疊加層,並將所有資料(包括映像檔、容器、磁碟區和網路狀態)直接儲存在資料檔案系統上:

持續性必須明確啟用,否則 Lightwhale 永遠不會寫入磁碟並保持完全揮發性。

若要啟用持續性,請將魔術標頭寫入要使用的儲存裝置,例如 /dev/sdx:

echo "lightwhale-please-format-me" | sudo dd conv=notrunc of=/dev/sdx

下次 Lightwhale 啟動時,它將偵測到魔術磁碟,格式化它,並將其設為資料檔案系統。

多個魔術磁碟將合併為單一 Btrfs RAID1 資料檔案系統。

持續性子系統從 /etc/init.d/S11persistence 啟動,並通過一系列詳細步驟執行,完全自動化:

掃描所有磁碟,尋找標籤為 lightwhale-data 的分割區。

如果找到,則將其用作資料檔案系統並跳至步驟 6;否則繼續執行步驟 2。

掃描所有磁碟,尋找魔術標頭,特別是裝置開頭的確切位元組序列:lightwhale-please-format-me。

如果找到,則將每個磁碟視為魔術磁碟並繼續執行步驟 3;否則跳至步驟 6。

對於每個魔術磁碟,建立一個標籤為 lightwhale-swap 的交換分割區,然後建立一個使用剩餘空間並標籤為 lightwhale-data 的 Linux 分割區。然後繼續執行步驟 4。

掃描所有磁碟,尋找標籤為 lightwhale-swap 的交換分割區和標籤為 lightwhale-data 的 Linux 分割區。將每個分割區視為魔術交換分割區或魔術資料分割區,然後繼續執行步驟 5。

所有魔術交換分割區都將被格式化並標籤為 lightwhale-swap。

如果只有一個魔術資料分割區,則使用 btrfs --data single --metadata dup 進行格式化。如果有多个,则将它们合并为 RAID1 并使用 btrfs --data raid1 --metadata raid1c n 进行格式化。将创建子卷 @lightwhale-data、@lightwhale-state 和 @lightwhale-state-snapshots。

標籤資料檔案系統為 lightwhale-data,以便在下次啟動時在步驟 1 中被偵測到。

如果已建立或找到資料檔案系統,則將其子卷 @lightwhale-data 掛載到 /mnt/lightwhale-data;否則掛載 tmpfs。

/etc、/var 和 /home --> 準備不可變更的下層:將 /etc 綁定掛載到 /run/lightwhale/overlay/lower/etc,並鏡像不可變更根檔案系統的整個目錄樹。

準備可寫的上層:如果不存在,則在可寫資料檔案系統上建立一個目錄 /mnt/lightwhale-data/lightwhale-state/overlay/upper/etc。

最後使用 overlayfs 虛擬合併兩個層,並將疊加檔案系統掛載到 /etc。這有效地用可寫版本替換了不可變更的目錄!

對剩餘的關鍵目錄 /var 和 /home 重複此操作。

常見問題解答,或未來某個時候可能有人會問的問題。

您沒有手動輸入所有命令是正確的。三擊以選取整行命令,將其複製到剪貼簿。三擊並拖曳以選取多行命令。然後按滑鼠中鍵貼上到終端機。

在執行命令之前,請務必審查和編輯,特別是處理 sudo 和主機上的裝置名稱時。

使用 console getty 或 ssh 的預設登入。

是的,在這裡和這裡。Lightwhale 僅支援文字模式。您可以安裝任何您喜歡的管理 Web UI 容器。

否,目前沒有。這在待辦事項清單上。

否,不是裸機。當然,您可以將其虛擬化。

否,開箱即用沒有。務必採取足夠的安全措施。不要將伺服器直接放在網際網路上,而是將它們放在防火牆後面。更改預設密碼,並禁用密碼登入。

Lightwhale 確實包含 iptables,因此可以手動配置防火wall 規則。此外,預設情況下僅開啟連接埠 22 以供 SSH 使用。

是的,Lightwhale 包含 QEMU/KVM(由 Proxmox 使用)和 VMware ESXi hypervisor 的客戶端代理。

這是一種快速簡單的方法,可以在 QEMU 中使用魔術虛擬磁碟映像檔開機 Lightwhale ISO 來測試持續性:

dd if=/dev/zero of=persistence.img bs=1M count=512 echo "lightwhale-please-format-me" | dd conv=notrunc of=persistence.img qemu-system-x86_64 -m 1G -hda persistence.img -cdrom lightwhale-3.0.5-x86.iso -boot d qemu-system-x86_64 \

-enable-kvm -cpu host -m 1G -rtc base=utc,clock=host -vga std \

-drive file="lightwhale-3.0.5-x86.iso,index=0,format=raw" \

-drive file="persistence.img",index=1,format=raw,if=ide,media=disk,id=bootmedia \

-device virtio-rng-pci -device sdhci-pci \

-net nic,model=virtio-net-pci -net user,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80 -->

只能安裝 Docker 容器。直接在檔案系統上安裝軟體是不可能的,這將違背 Lightwhale 的宗旨。

首先問自己:為什麼要升級?您真的必須嗎?

過程與 Lightwhale 首次安裝時沒有什麼不同。只是現在,您可以下載新的 Lightwhale ISO 並直接從 Live Lightwhale 寫入開機裝置:

curl -JOL http://lightwhale.asklandd.dk/download/lightwhale-3.0.5-x86.iso | sudo dd bs=4M conv=fsync of=/dev/sdx sudo reboot

這並不特別重要,因為開機裝置僅在啟動時載入核心和 rootfs 到記憶體時使用。

這取決於。但這不是 Lightwhale 的作用。

Lightwhale 從開機媒體開機,然後將核心和根檔案系統都載入記憶體。當系統開始初始化時,它已經完全從 RAM 運行,並且在運行時不再存取開機裝置。您甚至可以拔掉它。

核心系統是不可變更的,無法修改。配置、自訂、容器等寫入完全獨立的資料檔案系統。預設情況下,這位於揮發性 RAM 中,您可以選擇啟用持續性。

盡量不要過度思考或套用來自其他 Linux 發行版的舊習慣。Lightwhale 的設計宗旨是輕鬆且可預測,並且持續性是透過一種簡單的策略實現的,該策略在每個系統上都相同。

預設主機名稱包含機器 ID,以防止網路上的主機名稱衝突。更改主機名稱會立即生效,但對於目前的 shell 環境除外,因此請登出後再登入,或替換 shell。例如:

sudo setup-hostname lightwhale exec "$SHELL" -l

底層概念是您不需要。

這是基於一個前提,即作業系統的關鍵必要更新極為罕見。Lightwhale 主要由 Docker、sshd 和 Linux 組成,運行在不可變更的 rootfs 上,使用容器化執行。這大大減少了攻擊面和需要此類更新的可能性。

也就是說,更新的 Lightwhale 映像檔會出現,原因可能是關鍵錯誤修復、必須擁有的功能,或僅僅是便利性。在這種情況下,您有兩個選擇:

或者,如果您必須或只是想:只需下載映像檔,將其寫入開機裝置,然後重新啟動到更新的 Lightwhale。

請記住先執行此操作,因為它可能包含重要資訊。

運行中的 Lightwhale 實例可以方便地從自身進行原地更新。由於此時未在使用開機裝置,只需使用 x86 永久連結下載最新發布的 x86 映像檔,並直接覆蓋開機裝置上的舊版本,例如 /dev/sdx,然後重新啟動到更新的 Lightwhale 系統:

沒有保固。請思考,對自己的行為負責,並自行承擔風險。

我理解沒有所有您習慣於主流 Linux 系統上的工具可能會令人失望。也許您習慣了 nano,現在被迫學習 vi。但請記住,這是一個極簡的專用伺服器作業系統,因此會有一些妥協和限制;您有一個編輯器、一個 http 客戶端和其他預選的必需品。所有必需的都在那裡,但可能不是您喜歡的形狀和大小。

請不要這樣做。crond 應被視為內部的一部分,僅用於運行 btrfs 擦洗和快照任務。

Lightwhale 專案不關心您的私人資料。這完全是您的事。我們不想要任何資料,因此我們竭盡全力不收集它。

儲存和處理個人身份資訊需要嚴格的責任:必須以強大的安全性保護,小心謹慎地處理,並遵守 GDPR 等法規下的法律義務。

為我們甚至不需要的關鍵資料承擔這種負擔沒有意義。所以我們根本不收集它。

如果您選擇加入遙測,我們僅收集匿名資料,您可以隨時查看並選擇退出。

Lightwhale 是一個作業系統,而不是線上服務。它不提供年齡限制內容,也不識別或追蹤其使用者。