我一直在尝试和学习 Ubuntu Base、新的 subiquity 安装程序、PXE 等。但有一件事一直困扰着我 —— 网络。
我可以让我的安装工作,但是安装netplan.io
需要拉取很多必需的包,并且需要更多的包才能真正工作。
没有它,有没有“合法”的方法?我确实尝试过iproute2
手动完成,但失败了,如果能得到任何想法我将不胜感激:
- 网络工作
- dhcp 或 static,均可(越少越好)
- 决心工作
配置完成后,只有通过测试才能正常apt-get update
工作。然后我才能称其为“功能齐全”。
不幸的是,根据我迄今为止的经验,如果您没有可用的网络,那么将 Ubuntu Base 称为功能最小值(您可以从中安装所有其他软件包并根据需要构建系统)是不正确的。
至于更多信息,我当前的裸设置(没有网络)是:
- ubuntu-base-20.10-base-amd64.tar.gz
- Linux-映像-5.8.0-28-通用
- syslinux 作为引导加载程序
- 删除了 man/docs
- 删除了 apt 缓存(尝试过与 20.04.1 类似的方法)
这将启动到 sh,我可以启动 bash,并执行一些基本操作。apt 在那里但是无法连接(显然),所以我只能添加更多软件包。
我知道我可以给它安装一堆软件包,最终它会正常工作。但我希望有一个最低限度。目前我有 370MB。即使只安装 netplan.io+dependencies,它也会达到 470+(增加约 30%),但仍然无法正常工作。可以正常ubuntu-minimal
工作,但那是 800MB+
我并不是一个完全的新手,但我一直在努力应对所有的 netplan/iproute2 变化,我真的很想让它们按照 20.10 和 20.04 的设想以“正确”的方式工作
谢谢!
编辑#1:正如我刚才在评论中写的答案(对于现在已经消失的评论)我在部署期间安装了一些额外的软件包来使它工作:
apt-get install -y netplan.io dbus init iputils-ping isc-dhcp-client nano netbase ubuntu-advantage-tools sudo
我知道有些是可选的,但我需要它们,直到我完成其余的消除。我仍在尝试从此列表中找出真正需要的包(包括它们的依赖项):
netplan.io init
似乎安装netplan.io
、dbus
(推荐依赖netplan
)和init
有效,然后我就可以创建正常的 netplan .yaml 等,但这只是为了建立网络而有点过度,因为我从 370MB 增加到 480MB 只是为了获得这些。
dhclient
编辑 #2:当前状态:我可以使用已安装的和一些最少的其他工具来使其工作。已安装软件包的完整列表(除 Ubuntu Base rootfs 外):
chroot /mnt/root sh -c "apt-get install dbus init initramfs-tools iproute2 linux-image-5.8.0-28-generic sudo isc-dhcp-client --no-install-recommends"
所以 - 不需要netplan
。但我仍然不明白为什么我不能只用iproute
工具来运行它,因为如果我不安装,isc-dhcp-client
我的手动ip
命令就不起作用。
不起作用:
ip addr add 10.10.2.101/24 brd + dev enp0s10f0
ip link set enp0s10f0 up
ip route add default via 10.10.2.99
是否有效:
dhclient -v -w
编辑 #3:没关系,systemd-resolved
现在已经安装并且覆盖了我的resolv.conf
。我现在可以在没有 DHCP 的情况下让它工作。现在需要尝试删除 DHCP 包,看看它是否仍然有效。
答案1
好的,那么回答我自己的...但是,如果有人有更好的方法,请发布您的替代方案!
无论如何,我必须执行这些准备步骤(对于 Ubuntu Base 而言):
- 准备磁盘和分区
- 安塔尔
ubuntu-base-20.10-base-amd64.tar.gz
- 打开
chroot
并运行以下命令 apt-get install -y linux-image-5.8.0-28-generic initramfs-tools init dbus iproute2 sudo nano openssh-server --no-install-recommends
- 同时仍在
chroot
添加用户和组成员资格useradd
addgroup
- 安装并设置
syslinux
为引导加载程序 - 复制
vmlinuz
到期望的initrd.img
位置syslinux
然后,为了在退出 chroot 并重新启动后获得正确的网络配置,请添加以下内容:
(echo [Match]; echo Name=enp0s10f0; echo [Network]; echo Address=10.10.2.101/24; echo Gateway=10.10.2.99; echo DNS=8.8.8.8) > /mnt/root/etc/systemd/network/00-wired.network
和
systemctl enable systemd-networkd.service
卸载、清理(apt clean
)和reboot
。
此过程的安装大小略低于 400MB,并且大约需要 10 分钟(受限于网络速度和我缓慢且负担过重的虚拟化主机)。
重启后,我收到了预期的登录提示,可以使用我选择的用户和密码登录useradd
,可以执行sudo
,然后可以执行apt-get update && apt-get upgrade -y
,所有操作都将顺利进行,不会出现错误。
我确实进一步确认不会出现意外,并安装了 xserver、openbox 和 chromium(来自 Debian repo),创建了另一个用户,尝试ssh
进入系统,使用 检查和更改设置ip
,然后可以安装 dhcp-client 并更改 conf 文件以让 DHCP 接管等,一切正常。我甚至接下来压缩了整个分区,并从中实时启动,一切正常。
现在,这可以称为可用的系统。但是粗体显示的三行(apt install、00-wired.network 和 enable systemd-networkd)非常必要,而且在任何旧指南和 wiki 中都没有提及(难怪,这些是版本 6 及类似版本)。
确切地说,旧指南缺少的是:
- 您需要安装:
init, dbus, iproute2 and sudo
- 这些将拉动其他重要的(缺失的)硬依赖关系,例如:
systemd, systemd-sysv, udev
- 您至少需要一个工作配置:
/etc/systemd/network/*.network
- 您需要启用服务:
systemd-networkd.service
再次强调,我知道指南已经过时了,但除非你采取变通措施,否则没有 Ubuntu 20.10 就不是真正的 Ubuntu 20.10 systemd
,你也无法真正使用apt
没有 Ubuntu 20.10 sudo
(除非你无视官方禁用的方式root
或类似方式)。只有添加了这几个元素,你才能真正感受到自己身处简约而实用(以及,呃,当前的)Ubuntu 安装,带有systemd
,工作网络,并且apt
可以从官方存储库中提取软件包。
希望有人注意到并更新官方维基。