我有一个全新的 SSD,我想在其上安装 12.04,并使用 nilfs 作为根分区的文件系统。
我找不到任何简单的方法来实现这一点。如果我从 12.04 LiveCD 启动,我可以安装 nilfs-tools(我必须通过 wget 下载它——我似乎无法通过 apt-get 下载它),并且我能够通过 mkfs.nilfs 将分区格式化为 nilfs。
但是,当我单击“安装 Ubuntu”并启动安装程序并告诉它我想要选择分区时,它会重新格式化它并且只给我其他文件系统(reiser、ext 等)的选项,但没有 nilfs,即使已经安装了 nilfs 支持(我能够在我的分区上创建一个 nilfs 文件系统)。
有什么提示或建议吗?
答案1
正如 Roland Taylor 指出的那样,您可以先使用安装程序安装到 ext4 分区,然后将其传输到 nilfs 分区。
为系统准备一个空闲分区。它将被挂载为/
,我们称之为 NILFS。
并且您需要另一个分区来安装 Ubuntu,它可以是 USB 磁盘或磁盘上的另一个分区,我们称之为 EXT。
您不需要单独的/boot
分区,因为 Ubuntu 12.04 附带的 grub 1.99 已经支持从 nilfs2 文件系统启动。
准备系统
您可以按照常规方式将 Ubuntu 安装到 EXT。
安装 nilfs-tools,并将空闲分区格式化为 nilfs2。
默认情况下,Ubuntu 的 initramfs 没有 nilfs 内核模块。
您需要重新生成它:
sudo echo nilfs2 >> /etc/initramfs-tools/modules
sudo update-initramfs -u
转移系统
启动 Ubuntu 12.04 livecd。安装 nilfs-tools。(您需要先在软件中心更改源apt-get install nilfs-tools
。)
挂载 EXT 和 NILFS,然后复制您的系统:
sudo cp -ax /media/EXT/* /media/NILFS/*
(您可以改用rsync
。)
然后编辑你的/media/NILFS/etc/fstab
,更改行/
。(更改uuid,ext4->nilfs2。我建议添加noatime,async,discard
SSD的挂载选项。)
然后编辑 grub 配置并重新安装 grub。请参阅Ubuntu 维基如何使用 grub 进行调整。请注意,您需要在重新安装之前更改 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 安装。我认为它也可以。
答案2
本质上您还不能这样做,因为安装程序不支持它。
从技术上来说,将安装从 EXT4 转移到 NILFS(安装到分区然后转移到 NILFS 分区)是可行的,但您还需要一个单独的启动分区(正如您所见,这变得越来越复杂)。
从本质上讲,目前答案是“你不能”。另外,请记住 NILFS 还很新,因此不太可能支持这样的举措。