所属类型: | GNU/Linux |
base on: | 独立 |
原则理念: | Keep It Simple |
创建者: | Judd Vinet |
所在国家: | 加拿大 |
首次发布: | 2002 年 |
发布模型: | 滚动发布 |
包管理器: | pacman、yay |
cli-Shell: | bash |
init-Soft: | systemd |
支持架构: | x86_64 |
桌面环境: | Cinnamon、Enlightenment、GNOME、KDE、LXDE、MATE、Xfce |
优秀变种: | ArcoLinux、Manjaro |
官方主页: | http://www.archlinux.org |
下载Docker Official archlinux Image镜像,并创建一个容器,然后启动该容器:
docker run --tty --interactive --name archlinux --hostname archlinux archlinux /bin/bash
ArchLinux
并没有提供一个通用的安装镜像。因为它希望使用者自己决定如何使用该系统。因此,你需要对GNU/Linux的各个细节有足够多的了解。当然,你如果是个初学者, 通过安装ArchLinux
,你将学习到非常多的GNU/Linux的知识。
满足下面的条件,您可以跳过step2~10
,直接从step11
开始:
下载地址:
1、将可启动U盘
插入电脑中。
2、开机。
3、选择从USB
启动之后,首先出现如下界面:
4、回车,最终出现如下界面:
明确以下2个问题:
1、硬盘以前是否分区过,也就是是否存在分区表?
2、如果已经存在分区表,是否要重新进行分区?
如果不需要重新分区,跳过step6
、step7
、step8
、step9
MBR
(Master Boot Record
)
GPT
(GUID Partition Table
)
对比项 | MBR | GPT |
代码段空间 | 512byte | 2048byte |
地址宽度 | 32bit | 64bit |
最大磁盘容量 | 2TB | 无限制 |
最多主分区 | 4个 | 无限制 |
分区类型 | 主分区 扩展分区、逻辑分区 | 无区别 |
分区工具 | fdisk | parted |
建议优先选择GPT
这种模式。
我们知道,在按下电脑的开机
按钮之后,电脑获得了能量(电流),开始自举, 检测各种硬件并加载他们,其中,我们的操作系统的代码是存储在硬盘
上的,要启动操作系统, 这在电脑的主板上有个专门的固件负责这个事情。随着技术的发展,现在总共有2
种固件可以做这种事情:
BIOS
(Basic Input Output System
)
UEFI
(Unified Extensible Firmware Interface
)
MBR | GPT | |
BIOS | ||
UEFI |
BIOS
可以引导MBR
和GPT
分区模式的磁盘;
UEFI
也可以引导MBR
和GPT
分区模式的磁盘;
BIOS-MBR
这种组合形式是最早出现的,虽然现在有被抛弃的趋势,但是他们的组合是最稳定的。
UEFI-GPT
这种模式也是相伴而生的,正在一步一步的取代BIOS-MBR
,他们的组合也是稳定的。
BIOS-GPT
和UEFI-MBR
这2种组合形式,他们只是为了兼容,并不提倡。
我们分别以BIOS-MBR
和UEFI-GPT
这2
种组合形式给出建议。 其他2
种组合形式就不予考虑了。
假设要分区的硬盘设备为/dev/sda
。
BIOS-MBR
组合形式的分区建议:分区 | 大小 | 用途 | 文件系统 | 挂载点 |
---|---|---|---|---|
/dev/sda1 | 512MB | boot partition | ext4 | /boot |
/dev/sda2 | 4GB | swap partition | none | none |
/dev/sda3 | 20GB | root partition | ext4 | / |
/dev/sda4 | 剩余 | data partition | ext4 | /home |
UEFI-GPT
组合形式的分区建议:分区 | 大小 | 用途 | 文件系统 | 挂载点 |
---|---|---|---|---|
/dev/sda1 | 512MB | EFI system partition, esp | FAT32/vfat | /boot |
/dev/sda2 | 4GB | swap partition | none | none |
/dev/sda3 | 20GB | root partition | ext4 | / |
/dev/sda4 | 剩余 | data partition | ext4 | /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
。
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
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
的磁盘如果本来它已经应用过文件系统了,就不需要再次应用了, 因为再次应用文件系统就会把它里面存储的数据清除掉。
mkswap /dev/sda2
swapon /dev/sda2
后面操作中的数据需要写到对应的磁盘分区中。所以,现在我们需要先把这些分区挂载到对应的目录上。
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
如果是通过Wi-Fi
上网,并且您连接的Wi-Fi热点
设置了密码,此时,您一定无法上网,您需要按照以下步骤进行设置:
1、使用ip命令查看有哪些网卡:
ip addr
通常无线网的网卡名称为wlan0
、wlp4s0
之类的。
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
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
注意:这里本应该验证此包的合法性、是否被修改过等。为了方便,我们就不验证了。
genfstab -U /mnt/root.x86_64/ >> /mnt/root.x86_64/etc/fstab
/etc/fstab
是系统启动后自动挂载的磁盘分区表(filesystem table
)。
选择国内的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
cp --dereference /etc/resolv.conf /mnt/root.x86_64/etc/
--dereference
的意思是:如果/etc/resolv.conf
是一个软连接, 将复制它的真实文件而不是软连接,不能用软连接的原因是:后面我们chroot
进/mnt/ArchLinux
之后, 如果是软连接,则会出现找不到该文件的问题。
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
热点设置有密码,前面您肯定已经配置过该文件,为了避免安装好系统后再配置一次,我们直接复制过去。
/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
chroot /mnt/root.x86_64 /bin/bash
keyring
:pacman-key --init
pacman-key --populate archlinux
pacman -Syyuu --noconfirm
pacman -S --noconfirm base base-devel man-db man-pages vim iw wpa_supplicant dhcpcd cronie mlocate ntp grub
echo "Asia/Shanghai" > /etc/timezone
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
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
安装Linux kernel
有2
种方式:
安装方式 | 可配置性 | 难度 | 推荐 |
---|---|---|---|
安装预先编译好的二进制包 | 无 | 无 | |
从源码自己配置、编译、安装 | 自主可控 | 大 |
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
方式二-完全手动编译安装
echo ArchLinux > /etc/hostname
cat >> /etc/hosts <<EOF
127.0.0.1 localhost ArchLinux
::1 localhost ArchLinux
EOF
passwd
useradd -m -G wheel -s /bin/bash fpliu
passwd fpliu
sed -i 's/\# \%wheel ALL=(ALL) ALL/\%wheel ALL=(ALL) ALL/g' /etc/sudoers
因为上面创建的fpliu
用户在wheel
组中,所以, 我们将原来/etc/sudoers
中的wheel
组的配置前面的注释放开。
ln -s /usr/bin/vim /usr/bin/vi
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
su fpliu -c 'yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save'
systemctl enable dhcpcd wpa_supplicant cronie ntpdate
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
exit
umount -R /mnt/root.x86_64
reboot
如果你同时又2
台电脑,那么通过SSH
连接上要安装系统的电脑进行操作要比直接在 要安装系统的电脑上操作要方便的多。
前提条件:
1、启动系统。
2、配置网络。
3、在要安装系统的电脑上设置root
账户密码:
passwd
4、在要安装系统的电脑上启动OpenSSH Server:
systemctl start sshd
5、在另外一台电脑上通过OpenSSH Client连接上要安装系统的电脑:
ssh root@192.168.1.108
6、后续操作都在这台电脑上操作即可。