这是一篇简要的总结性文章,适用于在UEFI模式下进行的Windows10与Archlinux共存性安装。
一、制作镜像
注意:不要使用ultraiso制作镜像,否则将造成U盘启动的LOOP,无法进入安装。
使用rufus写入镜像,切记在最后一步选择DD镜像写入模式,这是ultraiso所不具备的模式。
二、系统安装
在windows中划分出要使用的空白磁盘,关闭快速启动,同时在BIOS中禁止SecureBoot,将U盘改为启动第一顺位,即可开始安装。
安装前预计分区如下:
- sda8: / 根目录 (30G)
- sda9:Swap(内存*2)
- sda10: / home(剩下的全部空间)
- sda2: 无需/boot,双系统状态下将共用Windows的EFI分区作为/boot。
进入安装界面,使用如下命令:
lsblk列出磁盘信息
cfdisk进行磁盘分区(注意/dev/sdx不要写错)
-
mkfs.ext4 /dev/sda8
-
mkfs.ext4 /dev/sda10
-
mkswap /dev/sda9 && swapon /dev/sda9
挂载新分区
-
mount /dev/sda8 /mnt
-
mkdir /mnt/home && mkdir -p /mnt/boot/efi
-
mount /dev/sda10 /mnt/home && mount /dev/sda2 /mnt/boot/efi
此时可进入/mnt/boot/efi 查看其内容:
作者:苏好铁链接:https://www.zhihu.com/question/22502670/answer/35305955来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.efi系统分区(/boot/efi)的结构是这样的.(efi分区挂到arch的/boot/efi目录下)
$ tree /boot/efi -L 4
/boot/efi
└── EFI
├── arch_grub
│ └── grubx64.efi
├── Boot
│ └── bootx64.efi
└── Microsoft
└── Boot
├── BCD
├── BCD.LOG
├── BCD.LOG1
├── BCD.LOG2
├── bg-BG
├── bootmgfw.efi
├── bootmgr.efi
├── BOOTSTAT.DAT
├── boot.stl
├── cs-CZ
├── da-DK
├── de-DE ..... 略去一堆语言的文件,不重要
其中,/EFI/Boot/bootx64.efi和/EFI/Microsoft/Boot/bootmgfw.efi是同样文件的不同命名,在这里下载他们。
若要修复win10启动,用安装u盘启动,选择"修复计算机", "Troubleshoot", "高级", 选择命令行,
- bootrec /scanos
- bootrec /rebuildbcd
- bootrec /fixmbr
- bootrec /fixboot
重启
可见在/efi/EFI文件夹下存在各个系统写入的启动项,UEFI默认读取/BOOT文件夹下的bootx64.efi来启动,最先安装的windows将/EFI/Microsoft/Boot/bootmgfw.efi下的efi文件重命名为bootx64.efi并放置到/BOOT下,然而在安装Linux时Linux也会将自己的efi文件重命名并复制到/BOOT下,这样就造成了windows的启动被覆盖。
(解决方案:照常安装Linux,Reboot后再次执行
grub-mkconfig -o /boot/grub/grub.cfg
Grub菜单中即可生成Windows启动项)
此时可考虑提取备份原有EFI分区:
-
mkdir /mnt/home/usb
-
mount /dev/sdx(U盘盘符)& /mnt/home/usb
-
cp -r /boot/EFI /mnt/home/usb
-
umount /dev/sda2 && umount /dev/sdb&
-
mount /dev/sda2 /mnt/boot/EFI
进入正式安装:
nano /etc/pacman.d/mirrorlist ,将tuna源和163源Ctrl+K和Ctrl+U前置即可。
pacman -Syy,同步源
pacstrap -i base base-devel
genfstab -U -p /mnt >> /mnt/etc/fstab
nano /mnt/etc/fstab检查fstab文件是否有问题
arch-chroot /mnt /bin/bash切换root
更改/etc/hostname 和/etc/hosts里的主机名
mkinitcpio -p linux
passwd更换密码
nano /etc/locale.gen,反注释en_US-UTF8,zh_CN-UTF8,zh_CN-GBK,
locale-gen
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 注意:这里如果不使用-f,将提示file exists错误。
hwclock --localtime设置系统时间为当地时间 ,与windows保持一致
为了之后能连上网络,安装:
pacman -S dialog
pacman -S wpa_supplicant
pacman -S netctl
pacman -S wireless_tools
pacman -S grub
pacman -S efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=arch_grub --recheck 将Grub装到EFI分区
cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo 复制语言文件
pacman -S os-prober
grub-mkconfig -o /boot/grub/grub.cfg此时如果提示没有找到windows系统,就在重启之后再次执行
基本上安装完成
exit
umount -R /mnt强制解除挂载,否则提示busy
reboot(此时拔掉U盘)
重启之后,以root和之前设置的密码登录,
可以按照之前的步骤连接到wifi,
新建一个日常使用的非root账户:
useradd -m -G wheel -s /bin/bash YourName
passwd Yourname
nano /etc/sudoers,去掉%wheel ALL=(ALL) ALL这一行之前的注释,可以使用sudo来完成临时提升权限
hwclock --systohc --localtime
开启Multilib:
去掉/etc/pacman.conf下的注释:
[multilib]
Include=/etc/pacman.d/mirrorlist
之后# pacman -Syy
安装Yaourt以使用AUR:
#pacman -S git
git clone https://aur.archlinux.org/package-query.git
cd package-query
makepkg -si
cd ..
git clone https://aur.archlinux.org/yaourt.git
cd yaourt
makepkg -si
cd ..
系统安装完成。