Raspberry Pi 服务器映像,用于 docker 所需的焦点缺失模块(ip_table)

Raspberry Pi 服务器映像,用于 docker 所需的焦点缺失模块(ip_table)

全部:

我无法在 Focal Fossa 的 Raspberry Pi 服务器版本上运行 docker。运行 dockerd 时出现的错误消息生成致命消息“在目录 /lib/modules/5.4.0-1012-raspi 中未找到模块 ip_tables”

细节:

  1. 树莓派 4
  2. 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
  3. 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 版本。不行。

我认为/bootSD 的 也需要安装。
时间不早了,但这就是我目前的情况,如果能弄清楚如何安装/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 键盘尚不可用)

正如我所说,我不确定问题最初是什么原因造成的。我最有可能的猜测是:

  1. 由于成像器程序或系统启动内容混乱而导致的 SD 卡映像损坏。
  2. 可写分区的内容未完整传输到我的 USB 驱动器。

祝你好运,

-史蒂夫

相关内容