我在 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
总括:
- 重新挂载
/dev/sda
为/media/sda
rw - 编辑 fstab 以使用
/media/sda
而不是/media/usb
- 重新运行
setup-lbu
即可使用sda
- 重新运行
setup-apkcache
即可使用/media/sda/cache
- 跑步
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/sda
mount 的情况。
笔记
如果您从干净启动开始,只需从一开始就以这种方式配置安装,并将
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)进行调整。
.: 弗朗西斯科