如何将 12.04 安装到 nilfs 根分区上?

mle*_*vin 6 installation 12.04

我有一个全新的 SSD,我想将 12.04 安装到它上面,并将 nilfs 作为根分区的文件系统。

我找不到任何简单的方法来做到这一点。如果我从 12.04 LiveCD 启动,我可以安装 nilfs-tools(我必须通过 wget 下载它——我似乎无法 apt-get 它)并且我能够通过 mkfs.nilfs 将分区格式化为 nilfs。

但是,当我单击“安装 Ubuntu”并启动安装程序并告诉它我想选择分区时,它想重新格式化它并且只给我其他文件系统(reiser、ext 等)的选项,但没有 nilfs,即使已经安装了 nilfs 支持(我能够在我的分区上创建一个 nilfs 文件系统)。

任何提示或建议?

wea*_*ish 7

正如 Roland Taylor 指出的那样,您可以先使用安装程序安装到 ext4 分区,然后将其转移到 nilfs 分区。

为系统准备一个空闲分区。它将被挂载为/,我们称之为 NILFS。

并且您需要另一个分区来安装 Ubuntu,它可以是 USB 磁盘或磁盘上的另一个分区,我们称之为 EXT。

您不需要单独的/boot分区,因为 Ubuntu 12.04 附带的 grub 1.99 已经支持从 nilfs2 文件系统启动。

准备系统

您对 EXT 执行正常的 Ubuntu 安装。

安装nilfs-tools,将空闲分区格式化为nilfs2。

默认情况下,Ubuntu 的 initramfs 中没有 nilfs 内核模块。

你需要重新生成它:

sudo echo nilfs2 >> /etc/initramfs-tools/modules
sudo update-initramfs -u
Run Code Online (Sandbox Code Playgroud)

转移系统

启动到 Ubuntu 12.04 livecd。安装 nilfs 工具。(之前需要在软件中心更改源apt-get install nilfs-tools。)

挂载 EXT 和 NILFS,然后复制您的系统:

sudo cp -ax /media/EXT/* /media/NILFS/*
Run Code Online (Sandbox Code Playgroud)

(您可以rsync改用。)

然后编辑您的/media/NILFS/etc/fstab,更改行/。(更改 uuid,ext4->nilfs2。我建议noatime,async,discard为 SSD添加挂载选项。)

然后编辑您的 grub 配置并重新安装 grub。有关如何使用 grub 进行调整,请参阅Ubuntu Wiki。请注意,您需要在重新安装之前更改您的 grub 配置文件。我建议 chroot 到 NILFS,然后只用于dpkg-reconfigure更改配置并立即重新安装。

现在您可以重新启动到基于 nilfs2 的 Ubuntu 12.04!:-)


虽然我没有测试过,但上面的说明应该可以工作。事实上,我使用相同的方法将我的 Ubuntu 10.04 从 ext3 转移到 nilfs2。由于 Ubuntu 10.04 的 grub 不支持从 nilfs2 启动,我使用 ext2 作为/boot. 但最近我下载了 Ubuntu 12.04 live cd 来测试 12.04 是否适用于我的上网本。所以刚才我已经复制/boot//分区,更改了我的 grub 配置文件并使用 12.04 的 grub-install 重新安装 grub。它奏效了!(所以也许我可以将无用的分离引导分区变成一个小的交换分区?)

PS 如果您不喜欢这种方法,您可以尝试通过 debootstrap 安装。我认为它也会起作用。


Rol*_*Xor 1

本质上,您目前还不能执行此操作,因为安装程序不支持它。

从技术上讲,可能可以将安装从 EXT4 转移到 NILFS(安装到分区,然后转移到 NILFS 分区),但您还需要一个单独的引导分区(正如您所看到的,这变得越来越复杂)。

本质上,目前的答案是“你不能”。另外,请记住 NILFS 相当新,因此不太可能支持这样的举措。