Alpine:永久磁盘安装到 /media/sda,即使 fstab 具有 /media/usb

Alpine:永久磁盘安装到 /media/sda,即使 fstab 具有 /media/usb

我在 ESXi 上以“无盘”模式运行 Alpine Linux 时遇到一些问题。我已经按照以下配置了它维基百科中的说明

这是 fstab 文件的内容:

/dev/cdrom  /media/cdrom    iso9660 noauto,ro 0 0
/dev/sda /media/usb vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 0

(这是完全按照 wiki 中的说明进行配置的)

然而,在启动时,/dev/sda磁盘被安装在 上/media/sda,并且 上没有安装任何东西/media/usb。结果是我的本地备份没有恢复。

我怎样才能解决这个问题?

答案1

总括:

  1. 重新挂载/dev/sda/media/sdarw
  2. 编辑 fstab 以使用/media/sda而不是/media/usb
  3. 重新运行setup-lbu即可使用sda
  4. 重新运行setup-apkcache即可使用/media/sda/cache
  5. 跑步lbu ci

背景和更长的答案:

显然,alpine 在解析之前安装了可用分区(以及 r/o)/etc/fstab。如果 fstab 条目与其中一个分区重叠,它将无法挂载。

我无法在 alpine 源代码中找到它发生的确切位置,但发现这里提到了该行为:https://oscillate.gr/words/router-pt2/

引用该链接:

例如,如果格式化设备是 sda1,则将其挂载在 /media/sda1 下。看起来 alpine 的 initrd 脚本使用设备名称挂载 /media 下的每个可用文件系统,忽略您的 fstab。这是有道理的,因为 fstab 在预启动环境中不可用。因此,为了避免任何进一步的复杂化,我建议我们遵守该约定。

回答作者:Francesco Colista 从 cdrom iso 启动时不能真正使用,就像我的情况(VirtualBox)一样,我假设 OP 也是如此(ESXi)。

但是,似乎会setup-lbu检测目录中的可用挂载/media,因此最简单的方法是使用自动挂载并运行setup-lbu以指定sda 为 lbu 存储设备。

例子:

alpine:~# setup-lbu
Enter where to store configs ('floppy', 'sda', 'usb' or 'none') [usb]: sda

这同样适用于setup-apkcache也可以配置为使用/media/sdamount 的情况。

笔记

如果您从干净启动开始,只需从一开始就以这种方式配置安装,并将setup-alpine其用于初始设置

# mount /dev/sda /media/sda
# grep /dev/sda /proc/mount >> /etc/fstab
# setup-alpine

答案2

这是引导加载程序传递的选项。

如果您有syslinux(alpine使用的默认引导加载程序),请检查 boot/syslinux/syslinux.cfg 并修改alpine_dev选项从usbdisk到sda,如下所示例子:

serial 0 9600
timeout 20
prompt 1
default grsec
label grsec
    kernel /boot/vmlinuz-grsec
    append initrd=/boot/initramfs-grsec alpine_dev=sda:vfat modules=loop,squashfs,sd-mod,usb-storage quiet console=tty1,38400 console=ttyS0,9600

由于是一个示例,因此请根据您的设置(尤其是内核和 initrd)进行调整。

.: 弗朗西斯科

相关内容