我一直在用 Ubuntu Base、新的 subiquity 安装程序、PXE 等进行各种玩弄和学习。但有一件事一直困扰着我——网络。
我可以让我的安装工作,但是安装会netplan.io
拉动这么多必需的包,并且需要更多的包才能真正工作。
没有它有什么“合法”的方式吗?我确实尝试过 justiproute2
并手动进行,但我失败了,我将非常感谢任何想法:
- 联网工作
- dhcp 或静态,都可以接受(越少越好)
- 决心工作
只有在配置apt-get update
工作后才能真正通过测试。然后我可以称它为“功能齐全”。
不幸的是,根据我目前的经验,如果您没有可用的网络,调用 Ubuntu Base 功能最低限度,您可以从中安装所有其他软件包并按照您的意愿构建系统是不正确的。
作为更多信息,我当前的裸设置(没有网络)是:
- ubuntu-base-20.10-base-amd64.tar.gz
- linux-image-5.8.0-28-generic
- syslinux 作为引导加载程序
- 删除了人/文档
- 删除了 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 只是为了得到这些。
编辑#2:当前状态:我可以使用dhclient
已安装的工具和一些最少的其他工具。已安装软件包的完整列表(除了 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 包,看看它是否仍然有效。
好的,然后回答我自己的问题...但是,如果有人有更好的方法,请发布您的替代方案!
无论如何,我必须做这些准备步骤(对于 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
,没有 Ubuntu 20.10 并且您不能真正使用apt
(sudo
除非您无视官方root
禁用方式或类似方式)。只有添加了这几个元素,您才能真正感觉到您处于最小且功能强大的(以及,嗯,当前)Ubuntu 安装中,具有systemd
工作网络,并且apt
可以从官方存储库中提取软件包。希望有人注意到并更新官方 wiki。