JunOS 更新

准备工作

准备一个容量小于等于 4GB 的 U 盘,建立 MBR 分区表(一定要有),创建一个 FAT32 分区并格式化。把系统镜像直接装入分区根目录。如果找不到这样的 U 盘的话,准备一个 TFTP 服务器和充足的时间也可以。

如果目标系统存储空间不足,请事先清理存储

request system storage cleanup

更新系统

从正常工作的 JunOS 更新

U 盘方式

先把文件复制到 /var/tmp 然后去 cli 里面启动更新。(如果不复制到 /var/tmp,视硬件和系统版本不同,会有各种不同报错;所以这里建议总是先复制到 /var/tmp。)

注意:SRX300/500 系列防火墙上请不要快速插拔 USB 设备,建议冷插拔。

root@% mount -t msdosfs /dev/da1s1 /mnt
root@% cp /mnt/junos-srxsme-18.2R3-S2.9.tgz /var/tmp
root@% umount /mnt
root@% cli
root> request system software add no-validate /var/tmp/junos-srxsme-18.2R3-S2.9.tgz

TFTP 方式

JunOS 文档会告诉你说 file copy 命令支持 TFTP,但是其实它不支持。解决方法是去 BSD shell 里面调用 tftp 命令。

TFTP 传输时请稍安勿躁,传输系统镜像大约需要 30 分钟。

root@% cd /var/tmp
root@% tftp 192.168.1.100
tftp> get junos-srxsme-18.2R3-S2.9.tgz
tftp> quit
root@% cli
root> request system software add no-validate /var/tmp/junos-srxsme-18.2R3-S2.9.tgz

从 loader 安装

如果系统已经损坏,或者用正常方法无法安装,或者你想格式化硬盘从头再来,那么就需要从 loader 安装系统。这个方法会全盘格式化,清空所有文件和配置,请事先做好备份。

如果系统无法启动,那么开机后应该会直接看到 loader> 提示符。但是如果系统还能正常启动的话,就需要趁 kernel... 字样出现的时候狂按空格键来进入 loader。注意开机阶段有两次能按空格停下来的地方,如果你停下来以后没看到 loader> 的提示符,说明按早了。

U 盘方式

install file:///junos-srxsme-18.4R3-S2.tgz

文件名是大小写不敏感的。install 命令的帮助会告诉你应该使用 usb:// 开头的 URL;可惜这也是假的,你得使用 file://

TFTP 方式

我没试过,看文档吧。

复制系统

和备份分区同步

request system snapshot slice alternate

把系统复制到 U 盘

注意,这会格式化你的 U 盘。

request system snapshot

常见问题排错

第一次启动以后无法 commit 配置

现象:commit 配置时报错:

[edit security utm utm-policy junos-av-policy anti-virus http-profile]
'http-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-policy anti-virus ftp upload-profile]
'upload-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-policy anti-virus ftp download-profile]
'download-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-policy anti-virus smtp-profile]
'smtp-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-policy anti-virus pop3-profile]
'pop3-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-policy anti-virus imap-profile]
'imap-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-wf-policy anti-virus http-profile]
'http-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-wf-policy anti-virus ftp upload-profile]
'upload-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-wf-policy anti-virus ftp download-profile]
'download-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-wf-policy anti-virus smtp-profile]
'smtp-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-wf-policy anti-virus pop3-profile]
'pop3-profile junos-av-defaults'
An anti-virus profile must be defined
[edit security utm utm-policy junos-av-wf-policy anti-virus imap-profile]
'imap-profile junos-av-defaults'
An anti-virus profile must be defined
error: commit failed: (statements constraint check failed)

原因:你在不被支持的老设备上启动了新版本系统。老设备的默认配置没有更新,commit 时合并配置产生了一些无法被新版系统识别的配置。

解决方案:set security utm apply-groups-except junos-defaults 阻止默认配置被合并即可。