在 20.10 / 20.04 (基础版) 上启用网络的最低​​要求是什么

在 20.10 / 20.04 (基础版) 上启用网络的最低​​要求是什么

我一直在尝试和学习 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.iodbus(推荐依赖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添加用户和组成员资格useraddaddgroup
  • 安装并设置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可以从官方存储库中提取软件包。

希望有人注意到并更新官方维基。

相关内容