全部:
我无法在 Focal Fossa 的 Raspberry Pi 服务器版本上运行 docker。运行 dockerd 时出现的错误消息生成致命消息“在目录 /lib/modules/5.4.0-1012-raspi 中未找到模块 ip_tables”
细节:
- 树莓派 4
- uname -a: Linux appserver02-sea 5.4.0-1012-raspi #12-Ubuntu SMP 2020 年 5 月 27 日星期三 04:08:35 UTC aarch64 aarch64 aarch64 GNU/Linux
- lsb_release:Ubuntu 20.04 焦点。
请注意,linux-generic 内核似乎包含模块。但是,尝试安装它失败,并显示:
在以下路径上找不到 DTB bcm2711-rpi-4-b.dtb:/etc/flash-kernel/dtbs /usr/lib/linux-image-5.4.0-39-generic /lib/firmware/5.4.0-39-generic/device-tree/ 安装到 /boot/dtbs/5.4.0-39-generic/./bcm2711-rpi-4-b.dtb
这可能反映出我使用 SD 卡运行系统只是为了启动。出于性能和稳定性的原因,系统本身位于 USB 驱动器上。
- 史蒂夫
答案1
你并不孤单,这看起来很相似,事实上,这是完全相同的原因 iptables 在 Ubuntu Server/Raspberry Pi 4 上不起作用:“未找到模块 ip_tables”
我尝试对我的原始回复 (mojibake) 发表更新,但 askubuntu 无法以访客身份运行,因此我又以注册用户身份重新登录...
那么,您问的真正原因是什么?所有模块都在 linux-modules-5.4.0-1012-raspi 软件包中,如果您强制重新安装软件包(sudo apt install linux-modules-5.4.0-1012-raspi --reinstall),ip_tables 模块和更多内容将在 /lib/modules/5.4.0-1012-raspi/kernel/net/ipv4/ 中可用
但是一旦你重新启动,噗,一切都消失了...并且你无法将 docker 连接到你...
有趣的是,您提到了您的设置,用于启动的 SD 卡和 USB 记忆棒上的系统,这与我的设置相同。
答案2
叮叮叮... 这里有个问题.. 我记得读过关于在/boot
诸如vmlinux
等等中更新东西时这可能会出现问题...
我挂载了 SD 卡的根分区,并复制了/boot/
除已挂载的固件目录之外的所有内容。
然而,在安装过程中,/boot/dtbs
我的 USB 上的内容丢失了 1012 raspi 子目录。因此,我重新安装了Linux 模块并立即将其复制过来。
我做了,sudo sync
但模块又丢失了。现在尝试重新安装,应该vmlinux
指向内核的 1012 版本。不行。
我认为/boot
SD 的 也需要安装。
时间不早了,但这就是我目前的情况,如果能弄清楚如何安装/boot
我的 SD 卡fstab
,那就太好了。
请注意我的fstab
安装使用标签。一定要让 SD 卡和 USB 棒的标签不同。
Steve,我猜你fstab
和
LABEL=writable / ext4 defaults 0 0
LABEL=system-boot /boot/firmware vfat defaults 0 1
奇怪的是,这两个标签都是我的 SD 卡分区标签,但df -lh
会显示/dev/sda2
(USB)已安装到/
还有一些事情需要学习。
答案3
我不知怎么就修好了它,让它正常工作了。不幸的是,我不知道到底是什么造成了差异,但我将分享我的过程。
将我的 USB 驱动器格式化为具有两个子卷 - /@ 和 @home 的 BTRFS 驱动器。
记录U盘的UUID。
使用 Raspberry Pi 映像仪重新创建了 Ubuntu 64 服务器映像的新映像。
在第二个 Linux 系统上安装了 SD 卡(两个分区“可写”和“系统启动”)和 USB 驱动器。
使用以下 rsync 命令将可写分区的内容传输到 @ 子卷。请注意,此 rsync 命令与我最初使用的命令不同。与我原来的 rsync 不同,这个命令在制作精确副本(权限、acls、符号链接等)方面做得更好。(注意:小心路径,以确保复制到 BTRFS 分区不会创建父目录。这将涉及在可写目录/磁盘的路径中添加尾部斜杠):
rsync -avxHAX --info=progress2 <path to writable>/ <path to @>
修改 USB 驱动器上的 /@/etc/fstab 以正确挂载根目录、启动目录和主目录(请注意,我用 SD 卡的 UUID 替换了系统启动标签)
UUID=0468-A52F /boot/firmware vfat defaults 0 1 UUID=e2bebc64-1b17-4375-a6fe-afa02143f297 / btrfs rw,relatime,compress=lzo,autodefrag,user_subvol_rm_allowed,subvol=@ 0 0 UUID=e2bebc64-1b17-4375-a6fe-afa02143f297 /home btrfs rw,relatime,compress=lzo,,autodefrag,subvol=@home 0 0
更新了 SD 卡系统启动分区中的 cmdline.txt,以使其能够识别 BTRFS 结构。以下是我的结构:
net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=UUID=<USB drive UUID> rootfstype=btrfs rootflags=subvol=@ elevator=deadline rootwait fixrtc
此时,我就可以开始了——连接 SD 卡和 USB 驱动器并打开电源。
最后一条可能有用的提示。您可以通过附加systemd.unit=rescue.target
到 cmdline.txt 来强制 Pi 启动到单用户模式。这是调查问题所必需的,因为控制启动过程的正常按键不起作用(显然,当显示该选项时,USB 键盘尚不可用)
正如我所说,我不确定问题最初是什么原因造成的。我最有可能的猜测是:
- 由于成像器程序或系统启动内容混乱而导致的 SD 卡映像损坏。
- 可写分区的内容未完整传输到我的 USB 驱动器。
祝你好运,
-史蒂夫