SDB:远程安装
执行仅网络安装
有时需要升级只能通过网络访问的计算机。在 openSUSE 中,您有几种可能性可以远程运行安装程序。这些是
本教程概述了如何使用 openSSH 进行安装。VNC 类似,而对于串行控制台来说,事情甚至更容易。此提示旨在提示如何完成任务,而不是作为深入的参考。
手动准备
获取所需的安装文件
对于网络安装,您需要在远程计算机上启动安装内核以及安装 initrd。同时,您需要知道计算机将具有的 IP 地址。假设您具有固定的 IP 地址。如果您使用 dhcp,请省略网络定义并使用从您的 dhcp 服务器获取的 IP 地址。
首先,将内核镜像和安装 initrd 复制到您的/boot目录
cd /boot wget --output-document=vmlinuz.install http://<path to openSUSE>/boot/<arch>/loader/linux wget --output-document=initrd.install http://<path to openSUSE>/boot/<arch>/loader/initrd
对于稳定的 openSUSE 版本
- 替换<version>为您的 openSUSE 版本(例如,15.2, ...).
- 替换<arch>为您的架构(i386或x86_64).
cd /boot wget --output-document=vmlinuz.install http://download.opensuse.org/distribution/leap/<version>/repo/oss/boot/<arch>/loader/linux wget --output-document=initrd.install http://download.opensuse.org/distribution/leap/<version>/repo/oss/boot/<arch>/loader/initrd
对于最新的 Factory 开发代码
- 替换<arch>为您的架构(i386或x86_64).
cd /boot wget --output-document=vmlinuz.install http://download.opensuse.org/factory/repo/oss/boot/<arch>/loader/linux wget --output-document=initrd.install http://download.opensuse.org/factory/repo/oss/boot/<arch>/loader/initrd
配置 GRUB
接下来,准备您的 grub 配置以启动这些镜像。如果您的计算机的 IP 地址是 192.168.10.10,互联网的网关是 192.168.10.1,您的根 (/) 分区是 /dev/hda1,请将如下部分添加到 /boot/grub/menu.lst
title Boot -- openSUSE 15.2 root (hd0,0) kernel /boot/vmlinuz.install noapic usessh=1 sshpassword="12345678" install=ftp://<path to openSUSE> hostip=192.168.10.10 netmask=255.255.255.0 gateway=192.168.10.1 nameserver=192.168.10.1 initrd /boot/initrd.install
请注意,如果您没有提供名称服务器,则必须在 openSUSE 的路径中输入 IP 地址,而不是名称。然后通过更改 menu.lst 中的行使此第一个条目成为默认条目
default 0
以反映您的条目编号。
完成此操作后,请重新启动。
对于稳定的 openSUSE 版本
- 替换<version>为您的 openSUSE 版本(例如,15.3, ...).
title Boot -- openSUSE <version> root (hd0,0) kernel /boot/vmlinuz.install noapic usessh=1 sshpassword="12345645" install=http://download.opensuse.org/distribution/leap/<version>/repo/oss/ hostip=192.168.42.123/24 gateway=192.168.42.1 nameserver=192.168.42.1 initrd /boot/initrd.install
对于最新的 Factory 开发版本
title Boot -- openSUSE Factory INSTALL root (hd0,0) kernel /boot/vmlinuz.install usessh=1 sshpassword="12345678" install=http://download.opensuse.org/factory/repo/oss/ hostip=192.139.88.209 netmask=255.255.255.0 gateway=192.139.88.254 nameserver=192.139.88.1 initrd /boot/initrd.install
最终,您可能需要提供镜像 IP。
配置 GRUB2
接下来,准备您的 grub2 配置以启动这些镜像。如果您的计算机的 IP 地址是 192.168.10.10,互联网的网关是 192.168.10.1,您的根 (/) 分区是 /dev/hda1,请将如下部分添加到 /boot/grub2/custom.cfg
menuentry 'openSUSE install' {
insmod gzio
set root='hd0,msdos1'
linux /boot/vmlinuz.install noapic usessh=1 sshpassword="12345678" install=ftp://<path to openSUSE> hostip=192.168.10.10 netmask=255.255.255.0 gateway=192.168.10.1 nameserver=192.168.10.1
initrd /boot/initrd.install
}
请注意,如果您没有提供名称服务器,则必须在 openSUSE 的路径中输入 IP 地址,而不是名称。
找到菜单条目的编号
grub2-once --list
注意安装条目的 ID,并指示 grub2 启动到它。假设条目 5 是“openSUSE 安装”
grub2-once 5
完成此操作后,请重新启动。
对于稳定的 openSUSE 版本
- 替换<version>为您的 openSUSE 版本(例如,15.2, ...).
menuentry 'openSUSE install' {
insmod gzio
set root='hd0,msdos1'
linux /boot/vmlinuz.install noapic usessh=1 sshpassword="12345678" install=http://download.opensuse.org/distribution/leap/15.2/repo/oss/ hostip=192.168.10.10 netmask=255.255.255.0 gateway=192.168.10.1 nameserver=192.168.10.1
initrd /boot/initrd.install
}
对于最新的 Factory 开发版本
menuentry 'openSUSE install' {
insmod gzio
set root='hd0,msdos1'
linux /boot/vmlinuz.install noapic usessh=1 sshpassword="12345678" install=http://download.opensuse.org/tumbleweed/repo/oss/ hostip=192.168.10.10 netmask=255.255.255.0 gateway=192.168.10.1 nameserver=192.168.10.1
initrd /boot/initrd.install
}
自动准备
下载内核和 initrd 以及修改 grub 配置都可以使用 Setup GRUB for NFS install 脚本进行大部分自动化。
开始安装
计算机将在重新启动后再次启动,但这次启动您的安装镜像而不是安装的系统。要访问安装镜像,请执行 ssh 到该系统
ssh -X root@192.168.10.10
并输入在 sshpassword 中给出的密码(在上面的示例中,这是“12345645”,因为 1-8 对网络钓鱼者来说太明显了;)。现在您所要做的就是启动 yast(或图形化安装的 yast2),然后像正常安装一样进行操作。
安装后
之后,您可能需要运行 /usr/lib/YaST2/startup/YaST2.ssh 以继续安装。
这可能会被忽略,因为它仅用于安装 X,但如果未安装,则启动过程会受到一定程度的破坏。
没有虚拟介质访问权限的远程安装
如果您可以以 root 身份访问某种 Linux 发行版,则可以用作跳板,通过 ssh 或 vnc 启动 opensuse 安装。以下脚本为 CC0 bmwiedemann 2020
#!/bin/bash
set -xe
: ${repo:=https://download.opensuse.org/distribution/openSUSE-stable/repo/oss}
#: ${repo:=https://download.opensuse.org/tumbleweed/repo/oss}
: ${arch:=$(uname -m)}
: ${vncpassword:=supercomplexpassword}
#: ${append:=vnc=1 vncpassword=$vncpassword}
: ${append:=ssh=1 sshpassword=$vncpassword}
#append+=" addon=https://download.opensuse.org/update/openSUSE-stable/"
#append+=" autoyast=https://www.zq1.de/~bernhard/linux/opensuse/autoyast.leap152.xml"
pkgs="wget kexec-tools"
zypper -n install $pkgs ||
DEBIAN_FRONTEND=noninteractive apt-get -y install $pkgs ||
dnf install -y $pkgs ||
pacman --noconfirm -S $pkgs ||
emerge $pkgs ||
true
which wget
which kexec
mkdir -p /dev/shm/
mount -t tmpfs tmpfs /dev/shm
cd /dev/shm/
wget $repo/boot/$arch/loader/{linux,initrd}
kexec -l linux --initrd=initrd --reset-vga --append="install=$repo $append"
sync ; echo u > /proc/sysrq-trigger ; sync
kexec -e
更多信息
可以在内核命令行中使用的选项总结在以下位置:/usr/share/doc/packages/autoyast2/html/appendix.linuxrc.html或/usr/share/doc/packages/linuxrc/linuxrc.html。在 GRUB 菜单中将选项添加到内核命令行时,请使用等号 (=) 分隔名称和值,而不是使用冒号 (:)(如 /info 文件中所用)。Linuxrc始终尝试尽可能多地了解计算机的信息,因此,如果您没有提供网络连接信息,它将尝试使用 dhcp 设置其网络。