Arch折腾记 | 安装Windows/Arch双系统(一)
想用Arch Linux做开发,但又不想干掉Windows?那装个双系统吧~
本篇内容主要基于Arch - Installation Guide及这篇很不错的博客,写在前面表示感谢。
数据无价,请备份好重要数据再搞机。
预留新系统的空间
首先需要给你的Arch预留出空间,这个主要看你的使用情况,对我来说100G左右完全够了(不玩游戏,不跑机器学习,没有大型数据库)。
在Windows的“磁盘管理”中可以进行硬盘的压缩。预留出的空间应该是灰色的,表示没有被启用。
制作启动盘
启动盘,一般推荐使用一个8G以上的U盘,因为除了镜像本体外,安装过程中的缓存文件也需要在启动盘的空间上保存,所以越大越好。
制作方式多种多样,我使用的工具是Ventoy,非常傻瓜式:
- 下载安装Ventoy;
- 下载所需系统的iso镜像;
- 插入U盘,打开Ventoy,用它来格式化U盘(原有数据会被清空);
- 将iso复制进格式化后的U盘里,可以复制多个;
- 制作完成。
没了。
关闭安全启动(secure boot)
值得注意的是,无论是Arch Linux的安装,还是我用到Veotoy启动盘,都不支持安全启动(secure boot)。大部分主板默认是关闭了这个,但不妨进入BIOS看一眼,确认这玩意是关掉的。
具体请看Arch不支持安全启动和Ventoy不支持安全启动。
从U盘启动电脑
下面开始安装新的系统,需要从我们的启动盘启动,所以先插上。
- 对于Windows 10,“设置”里提供了“更新和安全 - 恢复 - 高级启动”的启动方式,点击里面的重启后,会进入蓝屏画面,选择从你的U盘启动;
- 通用办法则是开机进入BIOS(这个不同主板品牌,进入方式可能不一样),应该有个类似“启动顺序”的玩意,选择从U盘启动;
对于Ventoy启动盘,它会进入到类似这样一个页面:
选项里面是你放进去的iso系统镜像,按上下键选中想安装的系统,确认即可。
对于其他工具制作的启动盘,可能有不同的界面,但最终选好系统、开始安装后看到的就是一样的了。
Arch安装方式一:Installation Guide
进去之后会有个大大的Arch Linux的logo,然后下面选择安装方式,总之选第一个就可以。
然后他会出一堆的DEBUG命令,反正左边现实绿色OK就不用管。最后进入了一个命令行界面,才是正式开始。是的Arch的安装界面是命令行,很简陋吧哈哈哈
1 | root@archiso ~ # |
确定键盘布局
虽然一般不会用到,但假如你的键盘布局并不是US类型(指QWERTY那玩意,是默认的),需要在这里找到你要的布局:
1 | root@archiso ~ # ls /usr/share/kbd/keymaps/**/*.map.gz |
布局名字就是最后一个/
和.map.gz
之间的字符串,比如默认的us
,然后启用它:
1 | root@archiso ~ # loadkeys us |
随便敲点什么,看有没有问题。
检查引导方式
这个一般来说也不需要,毕竟在制作启动盘的时候已经选好了引导方式。假如还不太清楚的话,可以输入:
1 | root@archiso ~ # ls /sys/firmware/efi/efivars |
这是UEFI引导下才会存在的一个路径,因此,如果提示路径不存在那就是BIOS。
引导方式不同会影响到后面的部分安装步骤,但现在的电脑都是以UEFI居多,我也主要介绍这一边。
连接网络
这是安装Arch我认为最重要的前提:把网络接好,因为Arch的整个安装流程基本都要基于网络。
先查看一下网络设备:
1 | root@archiso ~ # ip link |
这会显示你的网卡、无线网卡设备(名称是比较容易辨认的,比如无线网卡就是wlan
),然后根据你的网络:
-
对于有线网络,可以使用DHCP连接:
1
root@archiso ~ # dhcpcd
-
对于无线网络,可以使用iwctl连接,这里需要记住上面
ip link
输出的那个无线网卡设备名(比如wlan0
):1
2
3root@archiso ~ # iwctl
[iwd]# station wlan0 scan
[iwd]# station wlan0 get-networks现在网卡
wlan0
扫描到了你的wifi,进行连接:1
[iwd]# station wlan0 connect YOUR_WIFI
输入密码完成连接,然后用
quit
或者exit
退出即可。
测试一下网络吧:
1 | root@archiso ~ # ping www.bing.com |
没啥问题就棒(๑•̀ㅂ•́)و✧,进行下一步。
设置时区
这个命令可以用来查看时区:
1 | root@archiso ~ # timedatectl list-timezones |
然后设置时区,并启动时间同步:
1 | root@archiso ~ # timedatectl set-timezone Asia/Shanghai |
再通过这个命令检查一下时间:
1 | root@archiso ~ # timedatectl status |
没问题就好。
磁盘分区与格式化
!!!这里特别注意不要手残干掉了原有数据(甚至系统文件),如果出现未知错误,请立刻谷歌!!!
首先查看一下现有磁盘分区情况:
1 | root@archiso ~ # fdisk -l |
最重要的是要看类似下面的段落:
1 | Disk /dev/sda: XXX GiB, XXX bytes, XXX sectors |
/dev/sda
是指电脑里的一个叫sda
的硬盘,以此类推;/dev/sda1
是指sda
硬盘里的sda1
分区,以此类推;
比如我给Arch预留的空间是在/dev/sda
硬盘里面,则:
1 | root@archiso ~ # fdisk /dev/sda |
进入到fdisk的操作界面,输入m
可以查看全部命令(并不多,都可能用到)。
磁盘分区方案可以看官方的建议,总之只需要注意:
- 假如搞砸了,不要写入,直接输入
q
退出重来; - 不同引导方式(UEFI or BIOS)有不同的分区要求;
- 注意分区类型(Partition type),一定要对的上;
- 注意分区地址,不要有重合,尽量不要有遗漏;
- 不要误修改了现有的分区;
建立新分区的时候,会让你输入"分区编号"和"分区的起始地址":
- 编号只要和现有的不同即可,没有要求;
- 地址区域不能重合,默认自动检测未使用的区域;
写入之前,再三检查一下分区,没问题就可以按w
写入。
分区完成后,需要对磁盘空间进行格式化,以准备正式安装。
-
这里我把主分区格式化为ext4的格式:
1
root@archiso ~ # mkfs.ext4 /dev/ROOT_PARTITION
-
假如创建了SWAP分区,则:
1
root@archiso ~ # mkswap /dev/SWAP_PARTITION
-
假如创建了EFI分区,则:
1
root@archiso ~ # mkfs.fat -F 32 /dev/EFI_PARTITION
挂载与系统安装
写到这里,一切准备就绪,你可以开始把Arch装到硬盘上了。
首先挂载之前的分区:
- 主分区:
1
root@archiso ~ # mount /dev/ROOT_PARTITION /mnt
- 假如是UEFI引导,EFI分区:
1
2root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/EFI_PARTITION /mnt/boot - 假如有SWAP分区:
1
root@archiso ~ # swapon /dev/SWAP_PARTITION
/mnt
这个目录就是Arch的目录结构雏形,现在需要把它的核心文件下载进去。
更换国内下载源(假如是国内网络原本的源会很慢),这里可以利用官方的选源工具。把生成出来的地址加进这里面去,顺序要排前面:
1 | root@archiso ~ # vim /etc/pacman.d/mirrorlist |
改好之后用这个命令开始下载安装:
1 | root@archiso ~ # pacstrap /mnt base linux linux-firmware |
好了,整了这么久,喝杯水,上个厕所去吧。
生成fstab自动挂载文件(以后开机挂载就不用手撸了):
1 | root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab |
进入新系统
输入:
1 | root@archiso ~ # arch-chroot /mnt |
神圣的一刻到来了!自此,你的命令行就变成了这玩意(对还是命令行):
1 | [root@archiso /]# |
这是你硬盘上的Arch Linux,而不再是启动盘上那个了,妙啊妙啊(不是)。
现在又有些杂七杂八的东西需要设置:
-
必备软件:(如文本编辑器)
1
[root@archiso /]# pacman -S vim
-
时区:
1
2[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@archiso /]# hwclock --systohc -
语言:
在/etc/locale.gen
里面取消注释所要用的语言,强烈建议要包括"en_US.UTF-8 UTF-8"(中文的话还需要"zh_CN.UTF-8 UTF-8"):1
2[root@archiso /]# vim /etc/locale.gen
[root@archiso /]# locale-gen然后创建
/etc/locale.conf
并填入全局界面语言,推荐使用英文(不然在路径上可能有问题):1
LANG=en_US.UTF-8
-
主机名(不是用户名):
创建
/etc/hostname
并填入:1
YOUR_HOSTNAME
-
网络:
1
[root@archiso /]# pacman -S wpa_supplicant dhcpcd
-
CPU补丁(Intel或Amd):
官方文档说有用,反正装了吧(我的是Intel):
1
[root@archiso /]# pacman -S intel-ucode
-
开机引导工具:
可以在这里随意选择,我用的是Grub,根据引导方式不同要做的也会有差别,以UEFI为例:
1
2[root@archiso /]# pacman -S grub efibootmgr os-prober
[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB对于双系统(特别是非Linux),需要在
/etc/default/grub
大约最后的地方取消掉这个的注释:1
GRUB_DISABLE_OS_PROBER=false
现在写入GRUB:
1
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
非必须的设置如下:
-
管理员用户密码(不设的话管理员账户默认禁用,即只能用
sudo
):1
[root@archiso /]# passwd
-
键盘布局(US布局可以不用):
创建
/etc/vconsole.conf
并填入:1
KEYMAP=us
一切准备就绪,输入exit
退出到启动盘的命令行,然后reboot
重启试试。
现在你进入到了tmd还是命令行,由于还没加入用户,我们使用root管理员账号登录,再输入刚刚设置的密码,这就是Arch啦~!
1 | arch login: root |
Arch安装方式二:Archinstall
如果想快速简单地安装Arch Linux,官方也提供了另一个途径:Archinstall一步到位。
同样是需要先联网,然后直接输入
1 | root@archiso ~ # archinstall |
他会自行走完所有必要的流程:
- 设置时区;
- 设置软件镜像来源;
- 格式化分区、安装系统、挂载分区;
- 设置用户;
- 设置开机引导。
这是个挺棒的玩意,但并不能帮助了解Linux的底层架构,因此有时间有想法的话,建议还是使用方式一。(都用Arch了,加强下动手能力也好)这里就不详细介绍了,应该是不难的。
联网
从现在开始,启动盘可以拔了,我们开始在装好了的Arch里面搞东西。
显然,这需要再次联网。首先查看网络设备(设备名字可能和启动盘那会儿看到的不同了):
1 | [root@YOUR_HOSTNAME ~]# ip link |
联网工具就是之前安装进来的那些,就我举的例子来说,是安装了dhcpcd和wpa_supplicant:
- 有线:
1
[root@YOUR_HOSTNAME ~]# dhcpcd
- 无线:
1
2
3[root@YOUR_HOSTNAME ~]# wpa_passphrase "WIFI_NAME" "WIFI_PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
[root@YOUR_HOSTNAME ~]# wpa_supplicant -B -i INTERFACE -c /etc/wpa_supplicant/wpa_supplicant.conf
[root@YOUR_HOSTNAME ~]# dhcpcd
若无意外的话,现在就已经有一个网络地址分配过来了,可以通过ip addr
或者直接ping
来检查网络。
用户
到目前为止,我们还是用root管理员账号进行设置,但这是很不安全,最好能是一个“管理员权限随用随取的普通用户”。
在Arch里面,用户是分组管理的,每个组别具有不同的身份和权限。根据我们的需求(root之下,普通之上),可以放到"wheel"用户组里面。
新建用户并记入wheel组:
1 | [root@YOUR_HOSTNAME ~]# useradd -m -G wheel USER_NAME |
为其设置密码:
1 | [root@YOUR_HOSTNAME ~]# passwd USER_NAME |
安装sudo
,这玩意就是用来让普通用户获取管理员权限的:
1 | [root@YOUR_HOSTNAME ~]# pacman -S sudo |
给wheel用户组赋予sudo权限,这里默认的文本编辑器是vi,但那玩意太丑了,因此我们把它软连接到vim上:
1 | [root@YOUR_HOSTNAME ~]# ln -s /bin/vim /bin/vi |
找到这么一行并取消前面的注释:
1 | %wheel ALL=(ALL:ALL) ALL |
用户创建完成,以后就可以用新的用户登陆了(而且命令行的提示符会从#
变成$
,表示非root用户)。
p.s. 命令
su USER_NAME
可以用来切换不同的用户;命令su
可以进入root用户;命令sudo XXXX
表示用非root用户用root权限来运行命令;它们都可能需要输入用户密码哦。
开始使用
有了用户,有了联网,就能自行下载各种软件包并保存到本地使用。如果你的电脑用作服务器的话,实际上这已经足够了。
但要是日常用,这黑不溜秋的命令行界面确实不是一般人能接受的,下一篇我会讲点图形化的东西。装了半天机。。累了。。休息去了。。