在 Live 环境中准备系统

格式化并挂载分区

1
2
3
4
5
6
7
8
9
10
11
12
# 假设 /dev/nvme0n1p2 是您的 NTFS 根分区,/dev/nvme0n1p1 是 EFI 分区
# 请根据实际情况替换设备名称

# 格式化 NTFS 分区(如果已经是 NTFS 可跳过此步)
sudo mkfs.ntfs -Q /dev/nvme0n1p2

# 挂载根分区(使用新的 ntfs 驱动)
sudo mount -t ntfs /dev/nvme0n1p2 /mnt

# 创建并挂载 EFI 分区
sudo mkdir -p /mnt/boot
sudo mount /dev/nvme0n1p1 /mnt/boot

安装基础系统

此处省略常规配置,但务必完成,否则可能无法启动。

生成 fstab 文件

1
sudo genfstab -U /mnt >> /mnt/etc/fstab

检查:确保 /mnt/etc/fstab 中根分区那行的文件系统类型为 ntfs。


进入 Chroot 环境配置系统

进入 Chroot

1
sudo arch-chroot /mnt

配置 mkinitcpio

Arch 使用 mkinitcpio 生成 initramfs。我们需要在 MODULES 数组中添加 ntfs 驱动。

1
2
# 编辑 mkinitcpio 配置文件
nano /etc/mkinitcpio.conf

找到 MODULES=() 这一行,修改为:

1
MODULES=(ntfs)

mkinitcpio 的 HOOKS 中包含 fsck,但 ntfs 没有 fsck 工具

启动时如果 fsck 尝试检查 NTFS 分区,会报错并进入紧急模式,所以需从 HOOKS 中移除 fsck

完整的修改示例:

1
2
3
4
# 原本可能是空的
MODULES=(ntfs)

HOOKS=(base udev autodetect modconf block filesystems keyboard)

保存并退出后,重新生成 initramfs:

1
2
3
mkinitcpio -P
# 或对当前内核版本
mkinitcpio -p linux

安装并配置 GRUB

1
2
3
4
5
6
7
8
9
# 安装 GRUB
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux

# 添加内核参数 rootfstype=ntfs
sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT=/s/"$/ rootfstype=ntfs"/' /etc/default/grub

# 生成 GRUB 配置文件
grub-mkconfig -o /boot/grub/grub.cfg

设置 Root 密码

1
passwd

重启

1
2
3
exit
sudo umount -R /mnt
sudo reboot