核心的開機參數(boot parameters)是文字的字串描述,被Linux系統開機後用來改變一些系統的行為,可以是開啟或關閉某些特別的功能。
不同的開機載入程式使用不同的開機參數設定檔:
- 在MBR的機器上,使用Clonezilla live從光碟開機,isolinux是此時的開機載入程式,所以設定檔在於Clonezilla live的這個檔案/syslinux/isolinux.cfg。
- 在MBR的機器上,使用Clonezilla live從USB隨身碟開機,syslinux是此時的開機載入程式,所以設定檔在於Clonezilla live的這個檔案/syslinux/syslinux.cfg。
- 在MBR的機器上,使用Clonezilla live從PXE開機,pxelinux是此時的開機載入程式,設定檔在於PXE伺服器上,以DRBL當作PXE伺服器為例,在/tftpboot/nbi_img/pxelinux.cfg/default,也可能在其他地方,端看管理者的在PXE伺服器上的設定。
- 在uEFI的機器上,使用Clonezilla live從光碟或者隨身碟開機,grub2是此時的開機載入程式,所以設定檔在於Clonezilla live的這個檔案/boot/grub/grub.cfg。
- 在uEFI的機器上,使用Clonezilla live從uEFI網路開機,grub2是此時的開機載入程式,設定檔在於uEFI網路開機伺服器上,以DRBL當作uEFI網路開機伺服器為例,在/tftpboot/nbi_img/grub/grub.cfg,也可能在其他地方,端看管理者的在uEFI網路開機伺服器上的設定。
Linux開機後,在上述設定檔設定的開機參數,會出現在/proc/cmdline。
Clonezilla live是基於Debian live以及clonezilla相關程式而組成的。因此,有兩種開機參數:
- 來自於Debian的live-boot與live-config的參數。你可以參考此live-boot的手冊 以及 live-config的手冊。
- Clonezilla live自己的開機參數。這些參數名稱取做"ocs_*",例如ocs_live_run, ocs_live_extra_param, ocs_live_batch等。
- ocs_live_run是Clonezilla live開機後執行的主程式名稱,可以是任何指令。常見的是: ocs-live-general, ocs-live-restore或者任何你輸入的指令。
例如 ocs_live_run="ocs-live-general"
//注意// 你可能會需要在你的script中使用"sudo"指令,或者你可以類似這樣指定: ocs_live_run="sudo bash /my-clonezilla" (只限英文環境才能有空白,中文環境因為要進jfbterm無法吃到空白後的參數)
- ocs_live_extra_param參數只有在ocs_live_run=ocs-live-restore (不是ocs-live-general或者其他指令)時, 這個參數會被傳給ocs-sr。因此,這個參數事實上是將參數餵給ocs-sr。
例如: ocs_live_extra_param="--batch -c restoredisk sarge-r5 sda"
- keyboard-layouts 參數可預先設定鍵盤對應 (細節請參考 live-config)
例如:keyboard-layouts=us (使用美式鍵盤)
keyboard-layouts=fr (使用法國鍵盤)
- locales 參數可指定預設語系 (細節請參考 live-config)
例如: locales=zh_TW.UTF-8 (使用正體中文)
- 透過URI (Uniform Resource Identifier)來指定印象檔儲藏庫,可用"ocs_repository":
Clonezilla live所支援的URI:
[dev|smb|smb1|smb1.0|smb2|smb2.0|smb2.1|smb3|smb3.0|smb3.11|smb3.1.1|ssh|nfs|nfs4|http|https|ram]:[//[user:password@]host[:port]][/]path
有五種形式可以透過"ocs_repository"來指定印象檔儲藏庫:
- local device: dev:///dev/partition, dev:///LABEL|UUID|PARTLABEL|PARTUUID=uuid|label
LABEL, UUID 是來自檔案系統, 而PARTLABEL或者PARTUUID是來自GPT分割表中的的分割區.
- nfs server: nfs|nfs4://host/path
- samba server: smb://[domain;user:password@]host/path
- 指定samba_server的版本: (smb1|smb1.0|smb2|smb2.0|smb2.1|smb3|smb3.0|smb3.11|smb3.1.1)://[domain;user:password@]host/path
- ssh server: ssh://[user@]host[:port]/path (URI在ssh這部份無法指定密碼)
- webdav server: http|https://host[:port]/path (URI在webdav這部份無法指定使用者名稱與密)
舉例而言:
- ocs_repository="dev:///dev/sdf1"
- ocs_repository="dev:///LABEL=my-img-repo"
- ocs_repository="nfs://192.168.100.254/home/partimag/"
- ocs_repository="nfs4://192.168.100.254/partimag/"
- ocs_repository="smb://administrator:mypasswd@192.168.100.175/images/"
- ocs_repository="smb://my_domain;jack:mypasswd@192.168.1.1:445/images/"
- ocs_repository="ssh://jack@192.168.100.211/home/partimag/"
- ocs_repository="http://192.168.100.180/share"
用了上述的開機參數,再生龍開機後,會自動掛載經ocs_repository指定的印象檔儲藏。當有需要密碼的時候,會提示你輸入。
//NOTE//
- 若使用網路磁碟機當作印象檔儲藏庫,記得"ocs_prerun"來"dhclient"或者"ip"這個參數來設定網路。
- 你也可以用"ocs_prerun"來跑對應的指令來掛載印象檔儲藏庫,若你要自己指定更多掛載的參數使用ocs_prerun會比較靈活。
- 要從http(s), ftp, tftp, 與本機的URL來抓tarall/zip/sh型態的檔案然後解開放在Clonezilla live開機後的/opt/目錄下,可以用"ocs_preload*",例如:
- 第1類, 抓取tarball/zip/shell script檔案:
ocs_preload=[http|https|ftp|tftp|file]://[HOST_NAME_or_IP_ADD]/path/to/your_tarball_or_script
支援的副檔名有: tar.gz, tgz, tar.bz2, tbz2, tar.xz, txz, zip, .sh
- 第2類, 使用cifs/nfs網路磁碟目錄上的檔案,使用掛載的方式:
ocs_preload="mount -t cifs //YOUR_CIFS_SERVER/path/to/ /path/to/mounting_point"
ocs_preload="mount -t nfs YOUR_CIFS_SERVER:/path/to/ /path/to/mounting_point"
支援的網路磁碟機有: cifs (網路芳鄰/samba)與nfs 2/3/4
例如,使用如下的開機參數:
- ocs_preload=tftp://192.168.100.254/my-custom.tgz
- ocs_preload=http://192.168.200.254/my-custom.tar.xz
- ocs_preload=file:///lib/live/mount/medium/my-custom.tar.bz2
- ocs_preload=tftp://192.168.100.254/my-custom.sh
- ocs_preload="mount -t cifs //192.168.120.2/images/ /tmp/cifs -o user=administrator,password=yourpasswd"
- ocs_preload="mount -t nfs 192.168.120.254:/home/partimag/script/ /tmp/nfs -o ro"
多重的ocs_preload*參數是可以的,只要在最後面加上數字即,例如:
ocs_prealod=... ocs_preload1=... ocs_preload2=...
如此,當Clonezilla live開機的時候,這些ocs_preload指定的檔案會自動被下載/複製並且解開後放到/opt/下。它的檔案模式也會自動被設定,亦即設成755的格式以便可以執行。
此外,若/opt/{overwrite-all-boot-param,overwrite-part-boot-param}這兩個檔案存在(從ocs_preload下載來的),它可以用來蓋掉某些開機參數。檔案"overwrite-all-boot-param"是用來蓋掉全部的/proc/cmdline,而"overwrite-part-boot-param"僅會蓋掉/proc/cmdline下的部份開機參數。特別來說,也就是那些 "ocs_*"參數。這功能特別有用在於你要客製化的時候,然而有些時候你不容易或者不能改開機參數的設定檔(如isolinux.cfg,因為它在光碟上,是唯讀的)。
舉例而言,"overwrite-all-boot-param"的檔案內容可以類似這樣: boot=live union=overlay username=user config components quiet noswap edd=on nomodeset nodmraid locales=en_US.UTF-8 keyboard-layouts=us ocs_live_run="ocs-sr -x -um beginner --batch -p reboot -scs -scr -sfsck -senc" ocs_live_extra_param="" ocs_live_batch=no vga=788 ip= net.ifnames=0 nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1.
而"overwrite-part-boot-param"的內容可以類似這樣: locales=ja_JP.UTF-8 keyboard-layouts=fr ocs_live_run="ocs-sr -x -scr -scs" ocs_live_batch="no"
//注意//
- 若使用網路磁碟機當作印象檔儲藏庫,記得"ocs_prerun"來"dhclient"或者"ip"這個參數來設定網路。
- 你也可以用"ocs_prerun"來跑對應的指令來掛載印象檔儲藏庫,若你要自己指定更多掛載的參數使用ocs_prerun會比較靈活。
- 在KMS模式中指定字體名稱與大小,可以使用 "ocs_fontface" 與 "ocs_fontsize":
例如: ocs_fontface="TerminusBold"
ocs_fontsize="24x12"
可以參考Debian或者Ubuntu系統上的/etc/default/console-setup以及console-setup(5)的手冊。
- ocs_debug (或者ocs-debug)是用來在執行Clonezilla live相關指令之前,進入命令列,以便除錯。
- ocs_daemonon, ocs_daemonoff, ocs_numlk, ocs_capslk.
前兩個參數是用來啟動或者關閉某個服務,例如 ocs_daemonon="ssh",那ssh服務就會在開機的時候被自動啟動。後兩個參數是開啟或關閉number lock與caps lock的鍵。例如: ocs_numlk=on 來自動開啟number lock鍵。
- ocs_prerun, ocs_prerun1, ocs_prerun2... 等參數讓你可以在Clonezilla主程式被執行前,執行相關指令,例如ocs_prerun="/live/image/myscript.sh"。如果你有更多指令要執行,依照順序: ocs_prerun=..., ocs_prerun1=..., ocs_prerun2=.... 超過10個參數的話,記得ocs_prerun01, ocs_prerun02..., ocs_prerun11來讓執行的順序排序是對得。
- ocs_savedisk_prerun, ocs_saveparts_prerun, ocs_restoredisk_prerun, and ocs_restoreparts_prerun: 這四個開機參數是用來在Clonezilla live分別跑savedisk, saveparts, restoredisk, 與restoreparts之前執行一些指令。例如: ocs_restoredisk_prerun="echo running ocs_restoredisk_prerun" 就是在Clonezilla live跑"restoredisk"這個動作之前,先跑這個指令"echo running ocs_restoredisk_prerun"。
- ocs_savedisk_postrun, ocs_saveparts_postrun, ocs_restoredisk_postrun, and ocs_restoreparts_postrun: 這四個開機參數是用來在Clonezilla live分別跑savedisk, saveparts, restoredisk,與restoreparts之後執行一些指令。例如: ocs_restoredisk_postrun="echo running ocs_restoredisk_postrun" 就是在Clonezilla live跑"restoredisk"之後,執行這個指令: "echo running ocs_restoredisk_postrun"。
- ocs_overwrite_postaction. 這個開機參數有比較高的執行順序,可以蓋過ocs-sr的"-p"參數以及ocs-onthefly的"-pa"參數所指定的動作。ocs_overwrite_postaction可以指定的參數包含: [choose|reboot|poweroff]-on-[restoredisk|restoreparts|savedisk|saveparts|clone] 舉例而言,choose-on-restoredisk 也就是Clonezilla live將restoredisk這動作執行完後,總是會讓使用者選擇後續的動作,不管ocs-sr的"-p"參數以及ocs-onthefly的"-pa"參數所指定的動作為何。
- echo_ocs_prerun與echo_ocs_postrun: 這參數是用來是否要在螢幕上顯示ocs_prerun與ocs_postrun的指令,預設這兩個參數指定的指令在執行前會被顯示。但是若你因為某個原因,例如安全考量不顯示機敏資料的話,可以"no"來隱藏那個ocs_prerun或者ocs_postrun指定的指令不在螢幕上顯示。
例如: echo_ocs_prerun="no"
- ocs_live_run_tty是用來指定執行$ocs_live_run的終端機(tty)。預設$ocs_live_run是只在/dev/tty1執行(也就是第一個終端機)。如果你要用序列終端機ttyS0, 可以加上 live-getty 與 console=ttyS0,38400n81。
//注意//
- 如果"live-getty console=ttyS0,38400n81"被指定在開機參數裡,ocs_live_run_tty 會尊重ttyS0,即使其他的值被指定到ocs_live_run_tty也會被略去。
- 使用此值時,建議同時指定locales與keyboard-layouts。
- ip,這個參數是讓你來指定網路的設定值。在Clonezilla live裡面,使用一個修改過的live-initramfs版本,所以你同時可以指定DNS伺服器。它的格式是: ip=ethernet port,IP address, netmask, gateway, DNS。例如你要指定網卡eth0的IP位址是10.0.100.1, netmask是255.255.255.0, gateway是10.0.100.254, DNS伺服器是8.8.8.8,你可以這樣指定:
ip=eth0:10.0.100.1:255.255.255.0:10.0.100.254:8.8.8.8
如果有兩張以上的網卡,使用","來區隔它們,例:
ip=eth0:10.0.100.1:255.255.255.0:10.0.100.254:8.8.8.8,eth1:192.168.120.1:255.255.255.0:192.168.120.254::
- 此外,"live-netdev" (是的,不是ocs_live_netdev)可以被用來指定PXE開機時候的網卡,以便抓取檔案系統檔filesystem.squashfs。這主要是針對兩張或者兩張以上的網卡才會有此需求。例如live-netdev="eth1" 可以讓你強迫live-initramfs使用eth1的網卡來抓檔案系統檔filesystem.squashfs。
- nicif: 網路開機時,透過指定網卡的MAC address來抓取filesystem.squashfs。例如nicif=00:aa:bb:cc:dd:ee可以指定強迫在Clonezilla live開機的時候,透過MAC address是00:aa:bb:cc:dd:ee的網卡來抓取filesystem.squashfs。
- ocs_netlink_timeout: 這個參數讓你來指定偵測網卡連通時,最長偵測時間的設定(秒), 預設是30秒。舉例而言,若你覺得30秒太久了,可以用以下的方式來指定最長只偵測5秒:
ocs_netlink_timeout=5
你可以在這裡找到更多的使用開機參數的例子。
|