再生龙可以通过修改开机参数来实现自动化,可以让再生龙开机后自动执行设定的动作。
开机参数是被Linux系统用来改变一些系统的行为,可以是开启或者关闭某些特别的功能。
不同的开机载入程序使用不同的开机参数:
/syslinux/isolinux.cfg
。/syslinux/syslinux.cfg
。/tftpboot/nbi_img/pxelinux.cfg/default
,也可能在其他地方,端看管理者的在PXE服务器上的设定。/boot/grub/grub.cfg
。/tftpboot/nbi_img/grub/grub.cfg
,也可能在其他地方,端看管理者的在UEFI网络开机服务器上的设定。Linux开机后,上面设置的开机参数会出现在/proc/cmdline
.
再生龙是基于Debian以及Clonezilla组合而成。所以有两种开机参数:
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=NONE (使用美式键盘)
keyboard-layouts=us(使用美式键盘)
keyboard-layouts=fr(使用法国键盘)
locales
参数可指定预设语系(细节请参考live-config)例如:
locales=zh_CN.UTF-8(使用简体中文)
[URI(Uniform Resource Identifier)](https://en.wikipedia.org/wiki/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:[email protected]/images/“
ocs_repository=“smb://my_domain;jack:[email protected]:445/images/“
ocs_repository=“ssh://[email protected]/home/partimag/“
ocs_repository=“http://192.168.100.180/share“
用了上述的开机参数,再生龙开机后,会自动挂载经ocs_repository指定的镜像源库。当有需要密码的时候,会提示你输入。
//NOTE//
- 若使用网络磁碟机当作镜像源库,记得“ocs_prerun”来“dhclient”或者“ip”这个参数来设定网络。
- 你也可以用“ocs_prerun”来跑对应的指令来挂载镜像源库,若你要自己指定更多挂载的参数使用ocs_prerun会比较灵活。
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. 第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会比较灵活。
例如:
ocs_fontface=“TerminusBold”
ocs_fontsize=“24x12”
可以参考Debian或者Ubuntu系统上的/etc/default/console-setup
以及console-setup(5)
的手册。
前两个参数是用来启动或者关闭某个服务,例如ocs_daemonon=“ssh”
,那ssh服务就会在开机的时候被自动启动。后两个参数是开启或关闭number lock与caps lock的键。例如:ocs_numlk=on
来自动开启number lock键。
ocs_prerun=“/live/image/myscript.sh”
。如果你有更多指令要执行,依照顺序:ocs_prerun=…,ocs_prerun1=…,ocs_prerun2=….
超过10个参数的话,记得ocs_prerun01,ocs_prerun02…,ocs_prerun11来按照顺序执行。ocs_restoredisk_prerun=“echo running ocs_restoredisk_prerun”
就是在Clonezilla live跑“restoredisk”这个动作之前,先跑这个指令“echo running ocs_restoredisk_prerun”。ocs_restoredisk_postrun=“echo running ocs_restoredisk_postrun
”就是在Clonezilla live跑“restoredisk”之后,执行这个指令:“echo running ocs_restoredisk_postrun”。[choose|reboot|poweroff]-on-[restoredisk|restoreparts|savedisk|saveparts|clone]
举例而言,choose-on-restoredisk
也就是Clonezilla live将restoredisk这动作执行完后,总是会让使用者选择后续的动作,不管ocs-sr的“-p”参数以及ocs-onthefly的“-pa”参数所指定的动作为何。例如:
echo_ocs_prerun=“no”
//注意//
- 如果`live-getty console=ttyS0,38400n81`被指定在开机参数里,ocs_live_run_tty会尊重ttyS0,即使其他的值被指定到ocs_live_run_tty也会被略去。
- 使用此值时,建议同时指定locales与keyboard-layouts。
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=“eth1”
可以让你强迫live-initramfs使用eth1的网卡来抓档案系统档filesystem.squashfs。nicif=00:aa:bb:cc:dd:ee
可以指定强迫在Clonezilla live开机的时候,透过MAC address是00:aa:bb:cc:dd:ee的网卡来抓取filesystem.squashfs。ocs_netlink_timeout=5
由于公司内系统版本更新的比较勤快,搞自动化备份会有效的提高工作效率。
首先我们要知道再生龙提供给我们了一些接口用于自动化处理一些流程,上面也做了介绍,比如我们要跳过设置语言的步骤,通过设置开机参数locales=zh_CN.UTF-8
就可以实现。
我们先看下初始状态下的开机参数吧,/boot/grub/grub.cfg
如下所示:
menuentry "Clonezilla live (VGA 800x600)" --id live-default {
search --set -f /live/vmlinuz
$linux_cmd /live/vmlinuz boot=live union=overlay username=user config components quiet loglevel=0 noswap edd=on nomodeset enforcing=0 locales= keyboard-layouts= ocs_live_run="ocs-live-general" 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
$initrd_cmd /live/initrd.img
}
其对应的就是如图所示的第一个选项,当我们选择这个选项的时候,执行的就是大括号里面的命令:
在初始启动参数里面找到locales
并且设置为zh_CN.UTF-8
,这就跳过了语言设置。keyboard-layouts
设置为NONE
或者us
,跳过键盘设置界面。
这时候就已经跳过了两个步骤,那如何将系统盘自动挂载呢,这时候就需要另一个参数ocs_prerun
了,通过设置下面两个参数即可自动化挂载硬盘:
ocs_prerun="mount /dev/sdb1 /mnt" # 先把硬盘mount到本地
ocs_prerun1="mount --bind -o noatime /mnt/WBOX-5762 /home/partimag" # 再mount文件夹到/home/partimag
接下来的步骤也就是系统备份了,不难发现我们在配置完系统备份的所有选项后会跳出一行绿色字体的代码,这个就是系统备份的代码,如下图所示:
PS. 下次您可以直接使用这样的指令:
/usr/sbin/ocs-sr -q2 -c -j2 -z9p -i 4096 sfsck -scs -senc -p choose savedisk 2023-05-29-06-img sda
该指令会被存储到:/tmp/ocs-2023-05-29-06-img-2023-05-29-06-11
有了这行代码后如何让他自动化执行呢,其实再生龙提供了一个参数,如下面命令所示:
ocs_live_run="/usr/sbin/ocs-sr -q2 -c -j2 -z9p -i 4096 sfsck -scs -senc -p choose savedisk 2023-05-29-06-img sda"
当然,使用上面的命令就能实现自动化备份了,但是期间还是会有一步需要手动确认,如何自动跳过呢?
ocs_live_run
这个参数也是可以接受运行脚本的,我们只要把脚本编写好,很多功能都能实现。
# **********************************************************"
# * Author : maochk
# * Email : [email protected]
# * Create time : 2023-05-17
# * Filename : clonezilla-backup.sh
# * Description : 再生龙自动化备份脚本
# **********************************************************
echo "auto run backup scripts"
echo y | /usr/sbin/ocs-sr -q2 -c -j2 -z9p -i 4096 sfsck -scs -senc -p choose savedisk 2023-05-29-06-img sda
这时候的ocs_live_run参数应该这样配置:
ocs_live_run="sudo bash /home/partimag/auto-backup.sh"
这时候就可以实现完整的自动化备份了~~~
整体的开机参数如下所示:
menuentry "YCZX DEPLOY LIVE" --id live-default {
search --set -f /live/vmlinuz
$linux_cmd /live/vmlinuz boot=live union=overlay username=user hostname=kinetic config quiet loglevel=0 noswap edd=on nomodeset enforcing=0 locales=zh_CN.UTF-8 keyboard-layouts=NONE ocs_prerun="mount /dev/sdb1 /mnt" ocs_prerun1="mount --bind -o noatime /mnt/WBOX-5762 /home/partimag" ocs_live_run="sudo bash /home/partimag/auto-deploy.sh" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0 splash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1
$initrd_cmd /live/initrd.img
}
以该启动参数启动后的界面如下所示:
BACKUP LIVE 以及DEPLOY LIVE,这两个分别是自动化备份选项以及自动化部署选项,当再生龙系统启动后过5秒自动进入自动化部署选项,后续27个步骤都为自动化实现。
在实现自动化后对其进行了时间测试,发现自动化后可以将镜像还原、备份时间缩短1~2分钟,除了需要手动选择BIOS自动项,其余只要插上U盘和系统盘就能自动完成工作了。
场景 | 自动化前 | 自动化后 | 结论 |
---|---|---|---|
标准镜像制作(备份) | 10分10秒 | 8分54秒 | 已经熟练使用再生龙的情况下,实现自动化后大概节约了1分钟时间,除了BIOS修改需要人员介入,其余都为自动化完成,部署完成后自动关机 |
标准镜像部署(还原) | 12分53秒 | 11分50秒 |