G.4 修改 ZENworks Imaging 資源檔案

您有時可能會想透過新增您自己的檔案來修改影像配送。可以是其他程式、程序檔、資料檔案或更新過的 Linux 驅動程式。

您可以使用以下方法來更新影像資源檔案:

以下各節中介紹了修改影像資源檔案的各種方法:

G.4.1 將檔案新增至影像開機 CD

若您要將檔案新增至影像開機 CD 以便可以在您進入實際複製影像程序 (例如程序檔,但通常不是驅動程式模組) 後可以使用這些檔案,則您可以將這些檔案複製到影像 CD 上的 /addfiles 目錄中。這是一種無需修改 initrdroot 檔案系統,而是將程序檔或其他檔案插入配送的簡便方式。但是,在開機和模組載入階段中,這些檔案不可用。

影像開機 CD 具有名為 /addfiles 的目錄,您可以在其中新增檔案。應使用正確的目錄名稱,將它們放在此目錄之下。然後,在影像程序中,於此目錄結構中即可找到這些檔案。

有關如何新增檔案的範例:

  1. 若要執行自己的程序檔而非一般的影像程序,請建立名為 myscript.s 的程序檔,並將其放置於開機 CD 上。例如 /addfiles/bin/myscript.s

    重要:程序檔必須具有 Linux 所需之正確 LF 結束符號,而非 DOS CR 與 LF 行尾字元。換言之,您不能使用 Notepad.exe 建立程序檔;必須使用與 Linux 相容的文字編輯器,例如 TextPad。

  2. 若要將以下行放於 settings.txt 檔案中,請輸入:

    export IMGCMD="/bin/myscript.s"
    

    執行影像複製時,它會執行 /bin/myscript.s,而非使用一般的 img ‑auto 指令。

G.4.2 將檔案新增至 Initrd 或 Root 檔案系統

這是更新影像資源檔案的常用方法,而且必須在 Linux 環境中執行。

執行以下指定的程序之前,請先確保已經建立了計劃要變更之所有檔案的備份副本,尤其是 /srv/tftp/boot/initrd 檔案。若要變更影像 CD 上的檔案,您將需要 ISO 編輯程式或其他處理程序,用以解壓縮及取代 bootcd.iso 影像檔中的檔案。

重要:initrdroot 檔案系統中更新或新增檔案與 Linux 驅動程式時,請記錄您所做的變更。您從 Novell 接收更新過的資源檔案時,檔案中將不包含您自定的變更。如果核心版本已隨 Novell 的較新資源檔案一起變更,則必須透過從製造商獲得新版本,或透過使用正確的 Linux 核心版本來源重新編譯驅動程式來更新先前新增的驅動程式。

若要將檔案新增至 root 檔案系統,您也可以使用 driverupdate 方法,如節 G.4.3, 使用 Driverupdate 檔案方法 中所述。

新增到 Initrd

若要修改 initrd 檔案系統:

  1. 使用 Linux 設備建立工作目錄及變更該目錄。

  2. 從 PXE 伺服器或開機 CD 將 initrd 複製到新工作目錄的步驟:

    • 若使用 PXE,將 /tftp/boot/initrd 複製到 Linux 工作站的工作目錄中。

    • 若使用 CD,則從開機 CD 上的 /boot/i386/loader 目錄解壓縮 initrd,然後將解壓縮的 initrd 複製到 Linux 工作站的工作目錄中。

  3. 若要將 initrd 重新命名為 initrd.gz,請輸入:

    mv initrd initrd.gz
    
  4. 若要解壓縮 initrd.gz 檔案,請輸入:

    gunzip initrd.gz
    
  5. 若要建立在後續步驟中用作安裝點的另一個工作目錄,請輸入:

    mkdir work
    
    cd work
    
  6. 若要將 initrd 解壓縮至 /work 目錄,請輸入:

    cpio -idmuv <../initrd >/dev/null 2>&1
    
  7. 若要將您的檔案或更新過的驅動程式複製到解壓縮的 initrd 檔案系統中,請輸入:

    cp /your_path/module.ko lib/modules/2.6.5-override-default/initrd
    

    其中,您的路徑模組.ko 檔案的路徑,模組是模組的名稱。

    應將要包含在 initrd 檔案系統中的其他檔案複製到適當的目錄中。

  8. 若要重新封裝 initrd 檔案系統,請輸入:

    find . | cpio --quiet -o -H newc > ../initrd
    
    cd ..
    
  9. 若要壓縮新的 initrd 檔案,請輸入:

    gzip -v9c initrd > initrd.gz
    
  10. 若要將 initrd.gz 重新命名為 initrd,請輸入:

    mv initrd.gz initrd
    
  11. 將檔案複製回來的步驟:

    • 若使用 PXE,將更新的 initrd 檔案複製到 PXE 伺服器的 /tftp/boot 目錄中。

    • 若使用 CD,則將更新的 initrd 檔案複製到開機 CD 上的 /boot/i386/loader 目錄中。

新增到 Root

若要修改 root 檔案系統:

  1. 使用 Linux 設備建立工作目錄及變更該目錄。

  2. 若要將 PXE 伺服器或開機 CD 的根目錄複製到新工作目錄:

    • 若使用 PXE,將 /tftp/boot/root 複製到 Linux 工作站的工作目錄中。

    • 若使用 CD,則從開機 CD 上的 /boot/i386/ 目錄中解壓縮 root,然後將解壓縮的 root 複製到 Linux 工作站的工作目錄中。

  3. 若要將 root 重新命名為 root.gz,請輸入:

    mv root root.gz
    
  4. 若要解壓縮 root.gz 檔案,請輸入:

    gunzip root.gz
    
  5. 若要建立在後續步驟中用作安裝點的另一個工作目錄,請輸入:

    mkdir work
    
  6. 若要將根檔案系統安裝至 /work 目錄,請輸入:

    mount -o loop root work
    
  7. /work 目錄進行所需變更。

  8. 若要解下 root 檔案系統,請輸入:

    umount work
    
  9. 若要壓縮新的 root 檔案,請輸入:

    gzip -v9c root > root.gz
    
  10. 若要將 root.gz 重新命名回 root,請輸入:

    mv root.gz root
    
  11. 將檔案複製回來的步驟:

    • 若使用 PXE,將更新的 root 檔案複製到 PXE 伺服器的 /tftp/boot 目錄中。

    • 若使用 CD,將更新的 root 檔案複製到開機 CD 上的 /boot/i386/ 目錄中。

G.4.3 使用 Driverupdate 檔案方法

自定 Novell 影像配送的另一個方法是使用所有 SUSE 套裝作業系統中內建的驅動程式更新機制。使用此方法時必須修改名為 driverupdate 的檔案,此檔案位於影像伺服器的 /srv/tftp/boot 目錄以及影像開機 CD 的根目錄 (/) 中。

此方法與修改 initrdroot 檔案系統相較,其入侵性較低。您只需在開機時間另行建立可納入複製影像作業系統的檔案即可。

可執行的驅動程式更新操作共有三種類型:

  • 安裝核心模組或硬體驅動程式

  • 安裝檔案並執行程序檔

  • 直接將檔案放置於作業系統中

本節將說明如何安裝檔案以及如何執行程序檔。如需其他兩種方法的相關資訊,請參閱 Novell Connection Magazine (Novell 連接雜誌)中的「Tech Talk #3 - Spittin’ Image」(技術探討 3 - 配送影像)。請特別參閱此文中的「SUSE Linux Driver Updates」(SUSE Linux 驅動程式更新) 與「Adding files to the distro "root" file」(將檔案新增至 distro "root" 檔案) 章節。

本節中的範例採用影像配送中目前尚無法使用的程式「樹狀結構」,而會在開機時加以安裝。

驅動程式更新機制會搜尋 driverupdate 檔案,其中所含的目錄結構會在設備以 ZENworks 配送啟動後模擬作業系統中的目錄結構。若此檔案存在,linuxrc 即會在開機期間加以下載,並以動態方式將其納入作業系統中。

driverupdate 為檔案系統檔案,可屬於任何一種檔案系統類型,如 EXT3 或 REISER 等。為求單純,我們將在範例中使用 CRAMFS 檔案系統。

若要將樹狀程式放置於 driverupdate 檔案中:

  1. 在您的影像伺服器上建立工作目錄,如 /work

  2. 若要使用 driverupdate 檔案,請將 driverupdate.tgz 檔案下載至 /work 目錄,然後輸入下列指令加以解壓縮:

    mkdir work
    cd work
    wget http://www.novell.com/connectionmagazine/2005/11/download/driverupdate.tgz
    tar -xzvf driverupdate.tgz
    

    driverupdate.tgz 檔案包含步驟 3 中所建立的相同目錄結構。

  3. 若要手動建立目錄,請在 /work 目錄下建立以下結構:

    `-- linux
        `-- suse
            |-- i386-sles10
                |-- dud.config
                |-- inst-sys
                    `-- lib
                    `-- bin
                |-- adddir.s
    

    dud.config 檔案的內容應包含如下幾行。您應提供自己的資料,以保存關鍵字。但您可以使用下列值:

    UpdateName:     ZENworks 10 Patch 
    UpdateID:       a37f92556e4dd99e
    UpdatePriority: 100
    

    adddir.s 應為包含下列幾行的可執行程序檔:

    echo "Processing: adddir.s" > /dev/tty3 2>&1
    # driver update: add files to inst-sys
    for i in /update/[0-9]*/inst-sys ; do
         [ -d "$i" ] && adddir "$i" /
    done
    
    # driver update: run update.pre scripts
    for i in /update/[0?9]*/install/update.pre ; do
         echo "Processing: $i" > /dev/tty3 2>&1
         [ -x "$i" ] && "$i"
    done
    
  4. 若要將樹狀程式複製到 /bin 目錄中,請輸入:

    cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
    
  5. 若要建立 CRAMFS 檔案,請輸入:

    mkfs.cramfs work/ driverupdate
    

    SUSE 套裝作業系統需要有 CRAMFS 檔案。

  6. 若要將 driverupdate 檔案複製到 /srv/tftp/boot 中,請輸入:

    cp driverupdate /srv/tftp/boot
    
  7. 將以下幾行附加到 /srv/tftp/boot/settings.txt 檔案的結尾處:

    # SUSE driver update
    for i in /update/[0?9]*/install/adddir.s ; do
         [ -x "$i" ] && "$i"
         rm $i
    done
    

    如此可使 adddir.s 程序檔執行,進而建立所有要複製之新檔案的軟體連結。

    這幾行可能已存在於 settings.txt 檔案中。

  8. 重新啟動具有 PXE 功能的設備。

    在作業系統啟動後,您會在影像維護模式提示下看到「ZENworks 10 Patch」。

  9. 執行樹狀程式。

作業系統啟動後,您放置到 driverupdate 檔案中的所有檔案都將位於作業系統的 /update 目錄下。接著,adddir.s 程序檔 (或您在步驟 7 中附加到 settings.txt 檔案中的程式碼) 會在 root 檔案系統下方,建立指向 /update 目錄結構下之對應檔案的軟體連結。您可以執行下列作業加以驗證:

/# which tree
/bin/tree
/# ll /bin/tree
lrwxrwxrwx  1 root root 29 Aug 31 21:45 /bin/tree -> /update/000/inst-sys/bin/tree

若只要在複製影像作業系統中納入新的硬體驅動程式或核心模組,您可以使用較簡單的程序,將 .ko 檔案複製到 /dirstruct/linux/suse/i386-9.2/modules/ 目錄中。接著,複製影像作業系統會自動載入任何位於此目錄中的 .ko 檔案。