您好,登錄后才能下訂單哦!
據(jù)wikipedia描述overlayfs在2014年融入linux內(nèi)核,其輕量和易用特性已在openwrt中應(yīng)用,但在debian發(fā)行版本中還沒有直接使用overlayfs掛載根目錄的啟動(dòng)選項(xiàng)。增加啟動(dòng)選項(xiàng)需對(duì)啟動(dòng)initrd進(jìn)行相應(yīng)改造,debian的initrt腳本已經(jīng)預(yù)留了應(yīng)用接口,使得應(yīng)用overlayfs和無盤(或簡盤)工作變得相對(duì)簡單。
構(gòu)建無盤工作站使用
TFTP+PXE啟動(dòng)服務(wù)器 <=== QEMU客戶端
進(jìn)行改造和測試
因需要在已安裝系統(tǒng)中改造initrd,首先分析mkinitramfs腳本,可以得到啟動(dòng)腳本模板init使用的是/usr/share/initramfs-tools/init,進(jìn)而分析該init腳本。
init腳本中掛載根目錄片段
: : log_begin_msg "Mounting root file system" # Always load local and nfs (since these might be needed for /etc or # /usr, irrespective of the boot script used to mount the rootfs). . /scripts/local . /scripts/nfs . /scripts/${BOOT} parse_numeric ${ROOT} maybe_break mountroot mount_top mount_premount mountroot log_end_msg : : |
由此,在啟動(dòng)服務(wù)器上構(gòu)建TFTP和PXE啟動(dòng)環(huán)境,配置PXE腳本啟動(dòng)部分可以使用BOOT參數(shù)傳遞應(yīng)用overlay
在scripts子目錄下需要增加overlay腳本文件,其中定義mountroot函數(shù)。
無盤工作使用tmpfs內(nèi)存文件作為根目錄。
: : #Use general mapping functions . /scripts/functions #Load related kernel modules modprobe overlay modprobe squashfs modprobe tmpfs #Setup overlay base directory mkdir –p /overlay mount –t tmpfs tmpfs /overlay –o size=4G : : |
overlay需要底層根目錄作為只讀的基礎(chǔ)結(jié)構(gòu),在openwrt中使用flash區(qū)塊,而在無盤環(huán)境內(nèi)可以考慮多種選擇,直接使用initrt的根目錄,nfs掛載,本地squash鏡像,遠(yuǎn)程squash鏡像。
為保證無盤環(huán)境,而因initrd鏡像的系統(tǒng)功能是不完整的,因debian的initrt環(huán)境下已有tftp客戶端,在這里使用遠(yuǎn)程squash鏡像方式。
(在單網(wǎng)卡環(huán)境下,nfs根掛載和overlayfs存在耦合性問題,并造成操作系統(tǒng)網(wǎng)絡(luò)連接和應(yīng)用系統(tǒng)存在配置干擾,造成系統(tǒng)網(wǎng)絡(luò)不完整或不穩(wěn)定,如需nfs根掛載,需使用至少雙網(wǎng)卡方式,減少基礎(chǔ)系統(tǒng)連接和應(yīng)用網(wǎng)絡(luò)的依賴和影響。因此種方式增加配置復(fù)雜程度且與overlay主題無關(guān),不選擇使用)
可以將squash鏡像放置在pxe的tftp服務(wù)器上,debian(stretch)的最簡安裝系統(tǒng)后大約使用1.5G硬盤,squash鏡像可以壓縮到200M,在100M網(wǎng)絡(luò)環(huán)境下傳輸30s左右。
補(bǔ)充后續(xù)腳本
: : #Setup overlay mapping directories mkdir -p /overlay/lower mkdir -p /overlay/upper mkdir -p /overlay/work : : #Recieve squash image and mount tftp –g –l /overlay/$SQUASHIMAGE –r $REMOTESQUASHIMAGE $PXEHOST mount –t squashfs /overlay/$SQUASHIMAGE /overlay/lower : : |
debian的initrd環(huán)境中使用/root作為根掛載的準(zhǔn)備目錄,后續(xù)/dev,/proc,/sys等系統(tǒng)配置已有相應(yīng)腳本,所以僅在overlay腳本中映射掛載/root即可
: : mount –t overlay overlay /root –o lowerdir=/overlay/lower,upperdir=/overlay/upper,workdir=/overlay/work : : |
問題記錄:
- 制作squash鏡像的時(shí)候需要將原來系統(tǒng)的/etc/fstab的根目錄和swap條目刪除,stretch版本系統(tǒng)使用systemd,雖不影響使用,缺失映射盤會(huì)有很長超時(shí)等待
- 制作initrd鏡像時(shí),如需對(duì)鏡像內(nèi)容確認(rèn),可以恢復(fù)至本地文件夾,但最近版initrd使用了合成模式(不太明白原因),導(dǎo)致如果單純做cpio的輸出僅包含kernel/x86/microcode下面的內(nèi)容,使用合成命令(cpio -id ; zcat | cpio -id) < ../$OUTFILE可以解析所有內(nèi)容
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。