ArchLinux
1.0、参考
1.1、ArchLinux简介
所属类型:GNU/Linux
base on:独立
原则理念:Keep It Simple
创建者:Judd Vinet
所在国家:加拿大
首次发布:2002
发布模型:滚动发布
包管理器:pacmanyay
cli-Shellbash
init-Softsystemd
支持架构:x86_64
桌面环境:CinnamonEnlightenmentGNOMEKDELXDEMATEXfce
优秀变种:ArcoLinuxManjaro
官方主页:http://www.archlinux.org
1.3、ArchLinux Docker Image

下载Docker Official archlinux Image镜像,并创建一个容器,然后启动该容器:

docker run -it --name archlinux --hostname archlinux archlinux /bin/bash
1.5、安装ArchLinux

ArchLinux并没有提供一个通用的安装镜像。因为它希望使用者自己决定如何使用该系统。因此,你需要对GNU/Linux的各个细节有足够多的了解。当然,你如果是个初学者, 通过安装ArchLinux,你将学习到非常多的GNU/Linux的知识。

step1 : 确认安装方案

满足下面的条件,您可以跳过step2~10,直接从step11开始:

  • 重新安装系统
  • 当前操作系统是GNU/Linux
  • 当前操作系统能正常使用
  • 不需要、不想要对磁盘进行分区,也就是现在的磁盘已经分区,并且符合您的要求。
step2 : 下载ArchLinux ISO 安装镜像

下载地址:

step3 : 准备一个U盘,制作可启动U盘
step4 : 从可启动U盘启动系统

1、将可启动U盘插入电脑中。

2、开机。

3、选择从USB启动之后,首先出现如下界面:

4、回车,最终出现如下界面:

step5 : 考虑硬盘是否要进行分区

明确以下2个问题:

1、硬盘以前是否分区过,也就是是否存在分区表?

2、如果已经存在分区表,是否要重新进行分区?

如果不需要重新分区,跳过step6step7step8step9

step6 : 选择硬盘分区模式

MBRMaster Boot Record

GPTGUID Partition Table

对比项MBRGPT
代码段空间512byte2048byte
地址宽度32bit64bit
最大磁盘容量2TB无限制
最多主分区4个无限制
分区类型主分区
扩展分区、逻辑分区
无区别
分区工具fdiskparted

建议优先选择GPT这种模式。

step7 : 选择硬盘引导模式

我们知道,在按下电脑的开机按钮之后,电脑获得了能量(电流),开始自举, 检测各种硬件并加载他们,其中,我们的操作系统的代码是存储在硬盘上的,要启动操作系统, 这在电脑的主板上有个专门的固件负责这个事情。随着技术的发展,现在总共有2种固件可以做这种事情:

BIOSBasic Input Output System

UEFIUnified Extensible Firmware Interface

MBRGPT
BIOS
UEFI

BIOS可以引导MBRGPT分区模式的磁盘;

UEFI也可以引导MBRGPT分区模式的磁盘;

BIOS-MBR这种组合形式是最早出现的,虽然现在有被抛弃的趋势,但是他们的组合是最稳定的。

UEFI-GPT这种模式也是相伴而生的,正在一步一步的取代BIOS-MBR,他们的组合也是稳定的。

BIOS-GPTUEFI-MBR这2种组合形式,他们只是为了兼容,并不提倡。

step8 : 规划硬盘分区布局

我们分别以BIOS-MBRUEFI-GPT2种组合形式给出建议。 其他2种组合形式就不予考虑了。

假设要分区的硬盘设备为/dev/sda


BIOS-MBR组合形式的分区建议:
分区大小用途文件系统挂载点
/dev/sda1512MBboot partitionext4/boot
/dev/sda24GBswap partitionnonenone
/dev/sda320GBroot partitionext4/
/dev/sda4剩余data partitionext4/home
UEFI-GPT组合形式的分区建议:
分区大小用途文件系统挂载点
/dev/sda1512MBEFI system partition, espFAT32/vfat/boot
/dev/sda24GBswap partitionnonenone
/dev/sda320GBroot partitionext4/
/dev/sda4剩余data partitionext4/home

注意:

1、第一个分区必须从2048sector处开始, 也就是要预留出硬盘的最开始处的2048 * 512byte = 1M空间,用来保存磁盘分区表信息和加载代码。

2、/boot挂载点对应的分区的大小为512MB已经是绰绰有余的,之所以分这么多,留出多余的部分是为了,可能会出现多个内核同时存在的情况。

3、swap分区不是必须的,如果创建了该分区,大小通常视您的内存容量的情况而定,建议大小为内存容量的一半。

4、root分区的大小要您自己衡量,因为它的大小与您如何使用磁盘有关,如果大部分数据存储到其他分区上的话,此磁盘的大小可以相对较小。

5、/home挂载点对应的分区是非必须的,但是如果你是为了日常办公的话,此挂载点单独分一个分区是必要的。 如果你用作其他目的,此分区可以挂载其他挂载点,比如/var之类的。总之,要看您的用途。

6、官方文档中,在使用了GPT分区的时候,第一个分区总是BIOS boot partition。 实际上,只有用BIOS启动GPT分区的时候才需要BIOS boot partition, 之所以总是创建了该分区,主要原因是该分区只占用了2M的磁盘空间,如果没有创建此分区, 一但想用BIOS启动GPT分区的时候,没有此分区就会启动失败,所以,为了兼容性,官方建议你无论打算用BIOS还是UEFI启动GPT分区,都创建BIOS boot partition

step9 : 按照规划,对磁盘进行分区
BIOS-MBR组合形式的分区:

1、进入fdisk的交互模式进行分区操作:

fdisk -t dos /dev/sda

2、最终布局如下:

Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: Hitachi HTS54505
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xe204b4ea

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048   1050623  1048576  512M 83 Linux
/dev/sda2        1050624   9439231  8388608    4G 82 Linux swap
/dev/sda3        9439232  51382271 41943040   20G 83 Linux
/dev/sda4       51382272 134217727 82835456 39.5G 83 Linux
UEFI-GPT组合形式的分区:

1、进入parted的交互模式进行分区操作:

fdisk -t dos /dev/sda

2、最终布局如下:

Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: Hitachi HTS54505
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xe204b4ea

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048   1050623  1048576  512M 83 Linux
/dev/sda2        1050624   9439231  8388608    4G 82 Linux swap
/dev/sda3        9439232  51382271 41943040   20G 83 Linux
/dev/sda4       51382272 134217727 82835456 39.5G 83 Linux
step9 : 给每个分区应用文件系统

UEFI-GPT模式下,第一个分区是EFI system partition,此分区的文件系统必须是FAT32,设置如下:

mkfs.fat -F 32 /dev/sda1

BIOS-MBR模式下,第一个分区是boot partition,此分区的文件系统是ext4,设置如下:

mkfs.ext4 -T small /dev/sda1

/dev/sda3/dev/sda4应用文件系统ext4:

mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4

注意:应用文件系统就是我们常说的格式化,他会把原来的所有数据都清除掉。所以, 如果再重新安装操作系统的时候,挂载点为/home的磁盘如果本来它已经应用过文件系统了,就不需要再次应用了, 因为再次应用文件系统就会把它里面存储的数据清除掉。

step10 : 初始化并激活swap分区
mkswap /dev/sda2
swapon /dev/sda2
step11 : 把各个磁盘分区挂载到对应的目录上

后面操作中的数据需要写到对应的磁盘分区中。所以,现在我们需要先把这些分区挂载到对应的目录上。

mkdir /mnt/root.x86_64
mount /dev/sda3 /mnt/root.x86_64

mkdir /mnt/root.x86_64/{boot,home}
mount /dev/sda1 /mnt/root.x86_64/boot
mount /dev/sda4 /mnt/root.x86_64/home
step12 : 配置网络

如果是通过Wi-Fi上网,并且您连接的Wi-Fi热点设置了密码,此时,您一定无法上网,您需要按照以下步骤进行设置:

1、使用ip命令查看有哪些网卡:

ip addr

通常无线网的网卡名称为wlan0wlp4s0之类的。

2、使用ip命令开启无线网卡:

ip link set wlan0 up

3、使用iw命令扫描Wi-Fi热点,并查看对应的SSID

iw dev wlan0 scan | grep SSID

4、使用wpa_passphrase命令生成配置:

wpa_passphrase TP-LINK-2F5A 12345678 > /etc/wpa_passphrase/wpa_passphrase.conf

5、启动wpa_supplicant服务:

systemctl start wpa_supplicant

6、使用dhcpcd命令获取IP地址:

dhcpcd wlan0

7、使用ping命令检测是否可以连接外网:

ping www.baidu.com
step13 : 下载并解压archlinux-bootstrap tarball

1、使用curl命令下载archlinux-bootstrap tarball下载地址

bootstrapTarballDownloadUrl=https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/
bootstrapTarball=$(curl $bootstrapTarballDownloadUrl | grep "href=\"archlinux-bootstrap\-[0-9]\{4\}.[0-9]\{2\}\.[0-9]\{2\}\-x86_64.tar.gz\"" | sed 's/.*href="\([^"]*\)".*/\1/')
curl -LO "$bootstrapTarballDownloadUrl$bootstrapTarball"

2、使用tar解压:

tar vxf "$bootstrapTarball" -C /mnt

注意:这里本应该验证此包的合法性、是否被修改过等。为了方便,我们就不验证了。

step14 : 使用genfstab配置/mnt/root.x86_64/etc/fstab
genfstab -U /mnt/root.x86_64/ >> /mnt/root.x86_64/etc/fstab

/etc/fstab是系统启动后自动挂载的磁盘分区表(filesystem table)。

step15 : 修改/mnt/root.x86_64/etc/pacman.d/mirrorlist

选择国内的ArchLinux包服务器镜像:

f=/mnt/root.x86_64/etc/pacman.d/mirrorlist

server1="Server = https://mirrors.tuna.tsinghua.edu.cn"
server2="Server = http://mirrors.163.com"
server3="Server = http://mirrors.zju.edu.cn"

sed -i "s@#$server1@$server1@g" $f
sed -i "s@#$server2@$server2@g" $f
sed -i "s@#$server3@$server3@g" $f
step16 : 复制/etc/resolv.conf
cp --dereference /etc/resolv.conf /mnt/root.x86_64/etc/

--dereference的意思是:如果/etc/resolv.conf是一个软连接, 将复制它的真实文件而不是软连接,不能用软连接的原因是:后面我们chroot/mnt/ArchLinux之后, 如果是软连接,则会出现找不到该文件的问题。

step17 : 复制/etc/wpa_supplicant/wpa_supplicant.conf
mkdir /mnt/root.x86_64/etc/wpa_supplicant
cp --dereference /etc/wpa_supplicant/wpa_supplicant.conf /mnt/root.x86_64/etc/wpa_supplicant/

如果您是通过Wi-Fi上网的,并且Wi-Fi热点设置有密码,前面您肯定已经配置过该文件,为了避免安装好系统后再配置一次,我们直接复制过去。

step18 : 重新挂载一些必要的文件系统

/proc/sys/dev这些伪文件系统的数据是操作系统运行起来之后动态变化的, 我们也需要把这些重新挂载到新位置。

mount --types proc /proc /mnt/root.x86_64/proc

mount --rbind  /sys /mnt/root.x86_64/sys
mount --make-rslave /mnt/root.x86_64/sys

mount --rbind  /dev /mnt/root.x86_64/dev
mount --make-rslave /mnt/root.x86_64/dev
step19 : chroot进入/mnt/root.x86_64
chroot /mnt/root.x86_64 /bin/bash
step20 : 使用pacman-key生成keyring
pacman-key --init
pacman-key --populate archlinux
step21 : 更新软件仓库:
pacman -Syyuu --noconfirm
step22 : 安装必备软件
pacman -S --noconfirm base base-devel man-db man-pages vim iw wpa_supplicant dhcpcd cronie mlocate ntp grub
step23 : 设置时区
echo "Asia/Shanghai" > /etc/timezone
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
step24 : 设置locale

1、修改/etc/locale.gen配置文件:

sed -i 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen

2、生成locale数据:

locale-gen

3、设置LANG环境变量:

echo "export LANG=en_US.UTF-8" >> /etc/profile

4、更新环境变量:

. /etc/profile
step25 : 安装 Linux kernel

安装Linux kernel2种方式:

安装方式可配置性难度推荐
安装预先编译好的二进制包
从源码自己配置、编译、安装自主可控

安装预先编译好的二进制包:

1、官方支持的预先编译好的Linux kernel

2、选择其中一个进行安装:

pacman -S linux linux-firmware

从源码自己配置、编译、安装:

从源码自己配置、编译、安装Linux kernel源码也有2种方式:

方式一-通过ABS编译安装:

官方支持的通过ABS编译安装的Linux kernel

1、选择其中一个,下载PKGBUILD配置文件:

git clone https://aur.archlinux.org/linux-git.git

2、进入linux-git,查看其内容:

3、修改里面的配置。

4、编译、安装:

makepkg -si

方式二-完全手动编译安装

step26 : 创建、配置/etc/hostname
echo ArchLinux > /etc/hostname
step27 : 配置/etc/hosts
cat >> /etc/hosts <<EOF
127.0.0.1 localhost ArchLinux
::1       localhost ArchLinux
EOF
step28 : 设置root账户密码
passwd
step29 : 创建一个非root账户,并设置其密码
useradd -m -G wheel -s /bin/bash fpliu
passwd fpliu
step30 : 配置/etc/sudoers
sed -i 's/\# \%wheel ALL=(ALL) ALL/\%wheel ALL=(ALL) ALL/g' /etc/sudoers

因为上面创建的fpliu用户在wheel组中,所以, 我们将原来/etc/sudoers中的wheel组的配置前面的注释放开。

step31 : 配置vi的软连接指向vim
ln -s /usr/bin/vim /usr/bin/vi
step32 : 安装、配置yay
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
su fpliu -c 'yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save'
step34 : 设置开机启动服务
systemctl enable dhcpcd wpa_supplicant cronie ntpdate
step36 : 配置GRUB
BIOS-MBR组合形式的配置:
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
UEFI-GPT组合形式的配置:
grub-install --target=x86_64-efi --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
step37 : 退出chroot
exit
step38 : 卸载文件系统
umount -R /mnt/root.x86_64
step39 : 重启系统
reboot
step40 : 选择从硬盘启动
1.6、通过SSH安装ArchLinux

如果你同时又2台电脑,那么通过SSH连接上要安装系统的电脑进行操作要比直接在 要安装系统的电脑上操作要方便的多。

前提条件:

1、启动系统。

2、配置网络。

3、在要安装系统的电脑上设置root账户密码:

passwd

4、在要安装系统的电脑上启动OpenSSH Server

systemctl start sshd

5、在另外一台电脑上通过OpenSSH Client连接上要安装系统的电脑:

ssh root@192.168.1.108

6、后续操作都在这台电脑上操作即可。