想用Arch Linux做开发,但又不想干掉Windows?那装个双系统吧~

本篇内容主要基于Arch - Installation Guide这篇很不错的博客,写在前面表示感谢。

数据无价,请备份好重要数据再搞机。

预留新系统的空间

首先需要给你的Arch预留出空间,这个主要看你的使用情况,对我来说100G左右完全够了(不玩游戏,不跑机器学习,没有大型数据库)。

在Windows的“磁盘管理”中可以进行硬盘的压缩。预留出的空间应该是灰色的,表示没有被启用。

制作启动盘

启动盘,一般推荐使用一个8G以上的U盘,因为除了镜像本体外,安装过程中的缓存文件也需要在启动盘的空间上保存,所以越大越好。

制作方式多种多样,我使用的工具是Ventoy,非常傻瓜式:

  1. 下载安装Ventoy;
  2. 下载所需系统的iso镜像;
  3. 插入U盘,打开Ventoy,用它来格式化U盘(原有数据会被清空);
  4. 将iso复制进格式化后的U盘里,可以复制多个;
  5. 制作完成。

没了。

关闭安全启动(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
    3
    root@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
2
root@archiso ~ # timedatectl set-timezone Asia/Shanghai
root@archiso ~ # timedatectl set-ntp true

再通过这个命令检查一下时间:

1
root@archiso ~ # timedatectl status

没问题就好。

磁盘分区与格式化

!!!这里特别注意不要手残干掉了原有数据(甚至系统文件),如果出现未知错误,请立刻谷歌!!!

首先查看一下现有磁盘分区情况:

1
root@archiso ~ # fdisk -l

最重要的是要看类似下面的段落:

1
2
3
4
5
6
Disk /dev/sda: XXX GiB, XXX bytes, XXX sectors
...

Device Start End Sectors Size Type
/dev/sda1 XXX XXX XXX XXX XXX
...
  • /dev/sda是指电脑里的一个叫sda的硬盘,以此类推;
  • /dev/sda1是指sda硬盘里的sda1分区,以此类推;

比如我给Arch预留的空间是在/dev/sda硬盘里面,则:

1
root@archiso ~ # fdisk /dev/sda

进入到fdisk的操作界面,输入m可以查看全部命令(并不多,都可能用到)。

磁盘分区方案可以看官方的建议,总之只需要注意:

  1. 假如搞砸了,不要写入,直接输入q退出重来;
  2. 不同引导方式(UEFI or BIOS)有不同的分区要求;
  3. 注意分区类型(Partition type),一定要对的上;
  4. 注意分区地址,不要有重合,尽量不要有遗漏;
  5. 不要误修改了现有的分区;

建立新分区的时候,会让你输入"分区编号"和"分区的起始地址":

  • 编号只要和现有的不同即可,没有要求;
  • 地址区域不能重合,默认自动检测未使用的区域;

写入之前,再三检查一下分区,没问题就可以按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
    2
    root@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
2
3
4
arch login: root
Password:

[root@YOUR_HOSTNAME ~]#

Arch安装方式二:Archinstall

如果想快速简单地安装Arch Linux,官方也提供了另一个途径:Archinstall一步到位。

同样是需要先联网,然后直接输入

1
root@archiso ~ # archinstall

他会自行走完所有必要的流程:

  1. 设置时区;
  2. 设置软件镜像来源;
  3. 格式化分区、安装系统、挂载分区;
  4. 设置用户;
  5. 设置开机引导。

这是个挺棒的玩意,但并不能帮助了解Linux的底层架构,因此有时间有想法的话,建议还是使用方式一。(都用Arch了,加强下动手能力也好)这里就不详细介绍了,应该是不难的。

联网

从现在开始,启动盘可以拔了,我们开始在装好了的Arch里面搞东西。

显然,这需要再次联网。首先查看网络设备(设备名字可能和启动盘那会儿看到的不同了):

1
[root@YOUR_HOSTNAME ~]# ip link

联网工具就是之前安装进来的那些,就我举的例子来说,是安装了dhcpcdwpa_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
2
[root@YOUR_HOSTNAME ~]# ln -s /bin/vim /bin/vi
[root@YOUR_HOSTNAME ~]# visudo

找到这么一行并取消前面的注释:

1
%wheel ALL=(ALL:ALL) ALL

用户创建完成,以后就可以用新的用户登陆了(而且命令行的提示符会从#变成$,表示非root用户)。

p.s. 命令su USER_NAME可以用来切换不同的用户;命令su可以进入root用户;命令sudo XXXX表示用非root用户用root权限来运行命令;它们都可能需要输入用户密码哦。

开始使用

有了用户,有了联网,就能自行下载各种软件包并保存到本地使用。如果你的电脑用作服务器的话,实际上这已经足够了。
但要是日常用,这黑不溜秋的命令行界面确实不是一般人能接受的,下一篇我会讲点图形化的东西。装了半天机。。累了。。休息去了。。