Dan*_*iel 7 linux ext4 case-sensitivity root-filesystem
我需要在 Debian 11 服务器的 ext4 上启用不区分大小写的文件系统功能(casefold),该服务器具有向后移植的 6.1 Linux 内核,并编译了所需的选项。
服务器有一个 2GB 的交换分区和一个用于文件系统的大 ext4 分区,它也从该分区启动。我只能以 root 身份进行 ssh 访问,无法访问物理/虚拟主机本身,因此我无法访问(虚拟)USB 棒或 CDROM 介质。
启用皮夹功能的最快方法是什么?une2fs 不想这样做,因为文件系统已安装。
想法:删除交换区,在其中安装一个小型救援系统,重新启动到所述救援系统,更改根分区的文件系统选项,重新启动到活动分区并恢复交换区。但为了实现这一点,我需要准备一个额外的 Linux 系统来执行所需的une2fs命令。
有没有更好的办法?我可以使用任何救援系统并在重新启动后预先配置所需的网络设置吗?
Dan*_*iel 13
感谢@Marcus M\xc3\xbcller,我能够做到这一点。诀窍是将tune2fs 添加到initrd 映像中并在引导期间调用它。
\n创建脚本initramfs-utils
:
cat > /usr/share/initramfs-tools/scripts/local-premount/ext4_casefold << 'EOF'\n#\n# ext4_casefold\n#\n# initrd script to add the casefold option to the root filesystem\n#\n\nDEVICE=/dev/sda2\n\nprereqs()\n{\n . /usr/share/initramfs-tools/hook-functions \n copy_exec /usr/sbin/tune2fs usr/sbin/tune2fs\n}\n\ncase $1 in\n# get pre-requisites\nprereqs)\n prereqs\n exit 0\n ;;\nesac\n\necho "Adding casefold option to $DEVICE"\nsleep 5\n/usr/sbin/tune2fs -O casefold $DEVICE\necho "If everything went well, we added the casefold option to $DEVICE"\nsleep 5\n\nEOF\n
Run Code Online (Sandbox Code Playgroud)\n使其可执行:
\nchmod a+x /usr/share/initramfs-tools/scripts/local-premount/ext4_casefold\n
Run Code Online (Sandbox Code Playgroud)\n重建initrd:
\nupdate-initramfs -u\n
Run Code Online (Sandbox Code Playgroud)\n检查ramdisk的内容是否确实包含tune2fs(可选):
\nINIT_RD_IMAGE=initrd.img-6.1.0-0.deb11.7-amd64\nrm -rf /root/initrd\nmkdir /root/initrd\ncp /boot/$INIT_RD_IMAGE /root/$INIT_RD_IMAGE.gz\ngunzip /root/$INIT_RD_IMAGE.gz\ncd /root/initrd\ncpio -id < /root/$INIT_RD_IMAGE\n
Run Code Online (Sandbox Code Playgroud)\n重新启动并享受!
\nMar*_*ler 10
我喜欢你的做法;它很干净,因为它不需要修改主系统上的数据。
\n而且,是的,我认为如果你想tune2fs
大幅运行,最简单的解决方案是从正在运行的 Linux 运行它,这样当主文件系统未安装时就没有真正的办法来运行它。
我认为你的网络设置没有任何意义 \xe2\x80\x93 你确切地知道你想要你的系统做什么;预配置网络以给你一个 SSH shell 比仅仅运行更困难tune2fs \xe2\x80\xa6 /dev/disk/by-partuuid/\xe2\x80\xa6
在自动执行的脚本中运行(然后继续执行启动正常系统所需的操作)更困难。
现在,有两个选择:
\n在第一种情况下,修改 initrd 生成过程以仅包含必要的tune2fs
调用,生成一个新的 initrd,并用它引导,这可能是最简单的。请注意,initrd 确实是您想要避免构建的内容:自定义的成熟 Linux 系统(这恰好是 Linux 发行版在挂载根文件系统并继续主引导过程之前初始化系统的方法)。不管怎样,debian 已经为你构建了这些:)
\n我必须承认,自从我为 debianoid Linux 做类似的事情以来已经有十年(或更长时间)了,所以我对如何做并没有太多帮助;查看 debian 的(遗憾的是看起来有点稀疏/过时)文档,看看/etc/mkinitrd
.
在第二种情况下,你的方法似乎是明智的。
\n 归档时间: |
|
查看次数: |
1594 次 |
最近记录: |