欺骗安装程序使用带压缩的 btrfs 根目录

欺骗安装程序使用带压缩的 btrfs 根目录

我想将 Maverick 安装到 BTRFS 根分区上。不是为了好玩或测试,而是因为我需要压缩由于闪存盘较小(4GB)。

现在 10.10 安装程序终于支持 btrfs,但无法compress在其中启用该标志。我能以某种方式欺骗安装程序吗?对于旧版本并获取 LUKS,您可以预安装分区。或者是否有一个简单的 monkeypatch 可以在安装前启用 btrfs+compress?

答案1

一个更简单的方法是改变mount实时环境的命令。

  1. 像往常一样启动并进入实时会话。
  2. 将可执行文件移动mount到另一个位置:

    sudo mv /bin/mount /bin/mount.bin
    
  3. 使用 编辑一个新文件sudoedit /bin/mount并将以下脚本保存到其中(根据需要更改选项;这里我们添加了compress):

    #!/bin/sh
    if echo "$@" | grep -q -- "-t btrfs"; then
        /bin/mount.bin "$@" -o compress
    else
        /bin/mount.bin "$@"
    fi
    

    您还可以匹配块设备(例如,/dev/sda1而不是-t btrfs和 chain elif),以便对不同的设备和文件系统使用不同的挂载选项。

  4. 将原始权限复制到新脚本:

    sudo chmod --reference=/bin/mount.bin /bin/mount
    
  5. 像往常一样安装,您的 btrfs 分区将使用指定的选项(此处,compress)进行挂载。

  6. 安装完成后,在退出实时环境之前,改变/etc/fstab新安装的系统以匹配指定的选项,以便它在新的启动中使用相同的选项。

我使用:defaults,noatime,compress-force=lzo,space_cache作为挂载选项。

这与每日量子 (30/6/12) 配合使用。

我使用 btrfs 分区作为/交换分区。

致谢这个帖子(在此主题),其中又引用这篇博文

答案2

安装程序挂载您的分区后,您可以尝试切换到 shell 并执行mount -o remount,compress /target,这可能会有效。

答案3

我偶然发现了这个帖子,因为我从一开始就想在闪存驱动器上安装 Linux Mint Debian 版本,并安装在压缩的 btrfs 上。虽然这些解决方案并不直接适用于实现我的结果,但我使用了其中的一些信息来实现我的目标。

问题在于安装程序格式化和安装分区与开始复制文件的点紧挨着,因此我无法执行上面其他人提到的“重新安装”选项。

LMDE 版本的安装程序脚本采用 python 编写(usr/lib/live-installer/installer.py)。我不确定它是否与 Ubuntu 相同,但如果相同,则可直接应用。这使我可以编辑脚本并在最初安装“/”分区的行下方添加此行

os.system("mount -o remount,compress /dev/sda3 /target -t btrfs")

当然,“/dev/sda3”将根据您的设备而有所不同。

我知道这是一个 Ubuntu 论坛,但就像我说的,搜索后出现了这个解决方案,如果安装程序是基于 Python 的,那么这个解决方案将直接相关。反正我们都是 Debian,对吧!?

答案4

从 13.04(Raring Ringtail)开始,您应该能够在无需压缩的情况下安装在 btrfs 卷上,然后在启动到新安装后压缩整个卷上的每个文件。

根据 Oracle 的文档,您可以使用 -clzo 选项对现有文件系统进行碎片整理来压缩现有文件系统上的现有文件。

sudo btrfs filesystem defragment -clzo /

传递单个斜杠会告诉 btrfs 对根卷上的所有文件和目录进行碎片整理。

看:http://docs.oracle.com/cd/E37670_01/E37355/html/ol_use_case1_btrfs.html

完成后,将 compress=lzo(或者如果您愿意,可以添加 compress=zlib,但为了提高速度,建议使用 lzo)添加到 /etc/fstab 中卷的行中,然后重新启动,这样以后写入磁盘的任何其他文件都将被压缩。

相关内容