2002年由加拿大的Judd Vinet,Archlinux的创始人 怀着对Debian、Redhat的包管理器不满,于是创建了Archlinux!
ArchLinux是一个纯净版的系统,只有一个文字形式的系统,没有预装桌面界面!ArchLinux不适合Linux初学者,Ubuntu适合初学者学习。 ArchLinx 是一款功能强悍的系统,所有的配置都要自己去完成。Archlinux下可以装很多应用,除了Windows下的VC编程,Windows下的少数大型游戏不支持外,完全可以适合日常办公。
arch安装
BIOS设置
Security -> Secure Boot -> Secure Boot: Disabled
Startup -> EFI/Legacy Boot: UEFI Only
Config -> Display -> Total Graphics Memory: 512MB
验证启动模式
ls /sys/firmware/efi/efivars
如果命令没有错误地显示了目录,则系统以 UEFI 模式启动。 如果目录不存在,系统可能以 [BIOS]模式 (或 [CSM] 模式) 启动。如果系统未以您想要的模式引导启动,请参考您的主板手册。
连接到因特网
确保系统已经启用了 [网络接口],用 [ip-link(8)] 检查。
有线网络
# ip link
# dhcpcd
无线网WIFI
# 使用 iwctl 工具,列出网卡设备
[iwctl#] device list
# 扫描网络 wifi
[iwctl#] station <devicename> scan
# 显示扫描的结果
[iwctl#] station <devicename> get-networks
# 在提示符中输入
[iwctl#] station <devicename> connect <wifi-ssid>
# 连接wifi网络,如果wifi加密,会提示你输入密码
***
CTRL+C
用 [ping] 检查网络连接:ping archlinux.org -c 2
更新系统时间
使用 [timedatectl(1)]确保系统时间是准确的:# timedatectl set-ntp true
验证:# timedatectl status
硬盘分区
查看分区情况
磁盘若被系统识别到,就会被分配为一个[块设备],如 /dev/sda, /dev/nvme0n1 或 /dev/mmcblk0。可以使用 [lsblk] 或者 fdisk 查看:# fdisk -l
结果中以 rom,loop 或者 airoot 结束的可以被忽略。
建立分区
对于一个选定的设备,以下的分区是必须要有的
一个根分区(挂载在 根目录)/
如果需要创建多级存储例如 LVM、disk encryption 或 RAID,请在此时完成
fdisk /dev/the_disk_to_be_partitioned
(要被分区的磁盘):fdisk /dev/sda
以下是分成两个区,一个 300M EFI 和 476G LVM
fdisk /dev/sda
新建分区 /dev/sda1
Command (m for help): n
Partition number (1-4, default 1):
First sector (1677754368-2813066894, default 1677754368):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1677754368-2813066894, default 2813066894): +300M
新建分区 /dev/sda2
Command (m for help): n
Partition number (2-4, default 2):
First sector (1678368768-2813066894, default 1678368768):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1678368768-2813066894, default 2813066894): +476G
将 /dev/sda1 的分区类型改为 EFI System
Command (m for help): t
Partition number (1-4, default 1): 1
Partition type (type L to list all types): ef
Changed type of partition ‘Linux filesystem’ to ‘EFI System’.
保存
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
格式化分区
当分区建立好了,每个新建立的分区都需要使用适当的 文件系统 进行格式化。举个例子,要在根分区 /dev/*root_partition*
上创建一个 Ext4 文件系统,运行:mkfs.ext4 /dev/root_partition
(根分区):mkfs.ext4 /dev/sda2
如果有efi
分区,假如是在 sda1
上,那么需要:
# mkfs.fat -F32 /dev/sda1
LVM 卷创建与管理
建立物理卷PV,使硬盘支持 LVM
管理,将第二个分区设置成 物理卷PV
# pvcreate /dev/sda2
建立卷组VG,命名为 arch,并把建立的物理卷加进去
# vgcreate arch /dev/sda2
分卷,建立逻辑卷LV,
lvcreate -L 100G arch -n root
lvcreate -L 410G arch -n home
lvcreate -l +100%FREE arch -n swap
格式化,
mkfs.ext4 /dev/mapper/arch-root
mkfs.ext4 /dev/mapper/arch-home
mkswap /dev/mapper/arch-swap
如果创建了 交换分区 (例如 /dev/*sda3*
),请使用 mkswap(8) 将其初始化:
mkswap /dev/mapper/arch-swap
挂载 LVM 分区
挂载分区的时候,如果boot单独分区,要首先挂载root 即 / 分区,然后挂载boot 分区,最后再挂载其它分区,不然后续安装会出现问题,将根磁盘卷 挂载 到 /mnt
,然后使用 mkdir(1) 创建其他剩余的挂载点(比如 /mnt/efi
)并挂载其相应的磁盘卷。
mount /dev/mapper/arch-root /mnt
mkdir /mnt/boot /mnt/home
mount /dev/sda1 /mnt/boot
mount /dev/mapper/arch-home /mnt/home
注意事项
挂载分区的时候,如果boot单独分区,要首先挂载root 即 / 分区,然后挂载boot 分区,最后再挂载其它分区,不然后续安装会出现问题
软件源选择与更新
更改软件源 (可选)
文件 /etc/pacman.d/mirrorlist
定义了软件包会从哪个镜像源下载。在 LiveCD 启动的系统上,在连接到因特网后,reflector 会通过选择 20 个最新同步的 HTTPS 镜像并按下载速率对其进行排序来更新镜像列表。[2] 。 在列表中越前的镜像在下载软件包时有越高的优先权。您或许想检查一下文件,看看是否满意。如果不满意,可以相应的修改 /etc/pacman.d/mirrorlist
文件,并将地理位置最近的镜像源挪到文件的头部。
或者手动添加软件源:
vim /etc/pacman.d/mirrorlist
输入 插入以下内容:
## China
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/repo/os/arch
保存,退出后
更新缓存
pacman -Syy
正式安装
安装内核及硬件固件
使用 pacstrap 脚本,安装 base 软件包和 Linux 内核以及常规硬件的固件
AMD
pacstrap /mnt base linux linux-firmware base-devel lvm2 vim os-prober amd-ucode dhclient dialog dhcpcd openssh wget wireless-regdb wireless_tools wpa_supplicant efibootmgr networkmanager
Intel
pacstrap /mnt base linux linux-firmware base-devel lvm2 vim os-prober intel-ucode dhclient dialog dhcpcd openssh wget wireless-regdb wireless_tools wpa_supplicant efibootmgr networkmanager
提示:
挂载信息写入
使用 Fstab
将挂载信息写到本地, genfstab(8) 将自动检测挂载的文件系统和交换空间。
用以下命令生成 fstab 文件 (用 -U
或 -L
选项设置UUID 或卷标):
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
强烈建议在执行完以上命令后,后检查一下生成的 /mnt/etc/fstab
文件是否正确。
Chroot进入本地系统
Change root 到新安装的系统,
arch-chroot /mnt
设置时区:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
date
运行 hwclock(8) 以生成 /etc/adjtime
:
# hwclock --systohc
这个命令假定硬件时间已经被设置为 UTC 时间。详细信息请查看 System time#Time standard。
语言本地化
先安装文本编辑工具 vim
pacman -S vim
本地化的程序与库若要本地化文本,都依赖 Locale,后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准。
需在这两个文件设置:locale.gen
与 locale.conf
。
编辑/etc/locale.gen
然后移除需要的 地区 前的注释符号 #
。如 设置为 en_GB.UTF-8
接着执行 locale-gen
以生成 locale 信息:
# locale-gen
然后创建 locale.conf(5) 文件,并 编辑设定 LANG 变量,比如:
/etc/locale.conf
LANG=en_US.UTF-8 ? en_GB.UTF-8
另外对于中文用户:
- 用户可以设置自己的 locale,详情请参阅 Locale#Overriding system locale per user session 或 Locale (简体中文)##设置当前区域;
- 将系统 locale 设置为
en_US.UTF-8
,系统的 log 就会用英文显示,这样更容易判断和处理问题;
也可以设置为 en_GB.UTF-8
或 en_SG.UTF-8
,附带以下优点:
- 进入桌面环境后以 24 小时制显示时间;
- LibreOffice 等办公软件的纸张尺寸会默认为
A4
而非Letter(US)
; - 可尽量避免不必要且可能造成处理麻烦的英制单位。
编辑完两个文件之后:locale-gen
看到 Generation complete 即说明本地化生成完成。
lvm配置
在block 和 filesystems之间添加lvm2
vim /etc/mkinitcpio.conf
----------------------
HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)
然后应用此配置
mkinitcpio -p linux
网络配置
touch /etc/hostname
pacman -S NetworkManager
安装 dhcpcd:否则重启后无法连接到网络。
安装 iwd: 无线网
pacman -S dhcpcd
pacman -S iwd
Root 密码
passwd
安装引导程序
对于 grub
用下面的命令
pacman -S grub
grub-install /dev/sda1
若出现error:will not proceed with blocklists,添加–force参数就好了
grub-install –force /dev/sda
Installation finished. No error reported.安装完成 ,没有错误
对于grub2
,用下面的命令
sudo pacman -S grub efibootmgr
sudo mount /dev/sdxx /mnt # sdxx is your EFI partition.
sudo grub-install --target=x86_64-efi --efi-directory=/mnt --bootloader-id=grub --recheck
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo grub-mkconfig -o /mnt/EFI/grub/grub.cfg
* Note: If you got an error, try this before grub-install:
sudo mount /dev/sdxx /boot/efi/
sudo mount -t efivarfs efivarfs /sys/firmware/efi/efivars/
先
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
然后
grub-install --target=x86_64-efi --efi-directory=/boot --bootloder-id=ArchLinuxGrub
不管哪种方式安装的 grub
最后都需要
grub-mkconfig -o /boot/grub/grub.cfg
这样我们的系统就配置好了,此时重启。执行
exit
poweroff
参考来源:QIEDD
第一次启动 Arch Linux
正常启动 ——- 如果是虚拟机,先 [设置] -> [存储]-> 移除光盘
进入系统,输入 root(用户名)和密码(先前设置的)
联网
# 有线
systemctl enable dhcpcd
dhcpcd
ip link
ping baidu.com -c 2
# 无线
systemctl enable iwd
iwctl
ping qq.com -c 2
启用网络连接,一个基本的 Arch Linux 的安装至此结束。
考虑到图形界面网络管理使用 NetworkManager
因此建议使用下面的方法,
网络配置
pacman -S networkmanager # 网络管理器
systemctl enable NetworkManager # 将networkmanager写入开机启动
systemctl start NetworkManager
systemctl disable dhcpcd # NetworkManager可能与这个冲突,最好停止并禁用这个
systemctl stop dhcpcd
systemctl disable iwd
systemctl stop iwd
使用 networkmanager链接wifi热点
systemctl start NetworkManager
systemctl enable NetworkManager
查看设备状态
nmcli device
扫描wifi热点
nmcli d wifi list
连接无线热点
nmcli device wifi connect 'tplink-6688' password 'youpassword'
查看连接状态,显示所有的网络链接
nmcli c show
新建一个用户
root 用户的权限过高,造成对系统灾难性的损坏的风险因此较高,我们因此
useradd -m -G wheel username/liupei
passwd username/liupei
安装 sudo
不使用 root 时如何获得 root 权限呢?需要在命令前加上 sudo,而 sudo 也需要先安装:
pacman -S sudo
执行
ln -s /usr/bin/vim /usr/bin/vi
visudo
进入 Vim 编辑器,找到
# %wheel ALL=(ALL) ALL
把「#」去掉,保存退出。reboot 重启。用新用户登陆,进入系统
修改启动停留时间
切换至root用户:su -
编辑 /boot/grub/grub.cfg
配置文件
vim /boot/gub/grub.cfg
set_timeout=5 --> set_timeout=1
reboot
第一个选项是正常启动,也是默认启动项。第二个急救模式启动(系统出现问题不能正常启动时使用并修复系统)
使用(清华源)
修改源文件:sudo vim /etc/pacman.conf
然后在 pacman.conf
文件的最后增加以下两段代码:
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
更新源文件
sudo pacman -Syy
sudo pacman -S archlinuxcn-keyring
sudo pacman -Syy
如果出现错误无法安装,执行以下代码:
rm -rf /etc/pacman.d/gnupg
pacman-key --init
pacman-key --populate archlinux
pacman-key --populate archlinuxcn
sudo pacman -Syy
sudo pacman -S archlinuxcn-keyrin
参考文献: cnblog,archlinux.cn
安装完系统配置
换源
sudo pacman-mirrors -i -c China -m rank
更新系统
sudo pacman -Syu
安装输入法
sudo pacman -S fcitx5-m fcitx5-chinese-addons fcitx5-rime
配置输入法
vim .pam_environment
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
XMODIFIERS DEFAULT=@im=fcitx
SDL_IM_MODULE DEFAULT=fcitx
管理输入法:fcitx-configuretool
reference: sf博客
图形化界面
安装xorg服务
$ sudo pacman -S mesa lib32-mesa
# pacman -S xf86-video-intel # 英特尔集显(独显安装nvidia)官方不建议
pacman -S xf86-video-ati # AMD集成显卡
pacman -S xorg
pacman -S plasma
pacman -S kde-applications
pacman -S sddm
systemctl start sddm
启动闪屏问题
sudo vim /etc/default/grub
在 GRUB_COMLINE_LINUX_DEFAULT = "loglevel=3 quiet nomodeset"
然后更新一下命令
grub-mkconfig -o /boot/grub/grub.cfg
显卡驱动
所有 AMD 显卡建议使用开源驱动,英伟达显卡建议使用闭源驱动。
Intel 核芯显卡
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel
不建议安装 xf86-video-intel
,而应使用 Xorg 的 modesetting 驱动(也就是什么都不用装的意思)
注意,只有 Intel HD 4000 及以上的核显才支持 vulkan。
AMD 核芯显卡
sudo pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon
对于具有核芯显卡的 AMD 处理器,需要先确定核显架构(Architecture)是什么,再决定安装什么驱动。
推荐在 TECHPOWERUP 进行查询,信息非常全面。在确定了显卡架构后,再根据架构对照下表决定安装什么驱动。
NVIDIA 独立显卡
较新型号的独立显卡使用以下命令直接安装如下几个包即可
sudo pacman -S nvidia nvidia-settings lib32-nvidia-utils
闪屏问题
sudo mhwd -i pci video-nvidia
如果是 GeForce 630 以下到 GeForce 400 系列的老卡,使用以下命令安装 nvidia-390xx-dkmsaur 及其 32 位支持包:
yay -S nvidia-390xx-dkms nvidia-settings lib32-nvidia-390xx-utils
再老的显卡直接使用以下命令安装 开源驱动 即可:
sudo pacman -S mesa lib32-mesa xf86-video-nouveau
AMD 独立显卡
AMD 独立显卡的驱动安装步骤实际上和 AMD 核芯显卡是相同的,都需要先确定架构,然后选定正确的驱动安装即可。参考步骤 AMD 核芯显卡。
双显卡(核显 + 独显)
参考文献:iceklyn
sddm开机默认开启小键盘
从aur源安装numLockOnTty,并开机启动
yay -S systemd-numlockontty
systemctl enable numLockOnTty
编辑/etc/sddm.conf
[General]
Numlock=on
重启:reboot
KDE 美化
sudo pacman -S plank
XFCE4界面美化
sudo pacman -S xorg xfce4
参考文献: 知乎,Arch Installation,凌云
中文显示
vim /etc/locale.gen
取消如下注释
zh_CN.UTF-8
zh_CN.GB18030
执行:locale-gen
安装中文字体(文泉驿字体):pacman -S wqy-zenhei
中文输入法
ibus
中文输入法
sudo pacman -S ibus-rime ibus-libpinyin ibus-pinyin
vim .xprofile
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -d -x
参考文献:极致linux
fcitx5
中文输入法
sudo pacman -S fcitx5-im
sudo pacman -S fcitx5-chinese-addons fcitx5-rime
sudo pacman -S fcitx5-configtool
其中:
fcitx5-chinese-addons
包含了大量中文输入方式:拼音、双拼、五笔拼音、自然码、仓颉、冰蟾全息、二笔等- fcitx5-rime` 对经典的 Rime IME 输入法的包装,内置了繁体中文和简体中文的支持。
然后在环境变量配置文件/etc/environment
中添加如下内容:
# /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
然后配置自动启动,提供以下3种方法,第一个不行,试第2个,然后第3个:
- 如果,支持XDG桌面环境,例如
KDE,GNOME, Xfce
,默认重启
后即可 - 在
~/.config/autostart
目录下添加fcitx-autostart.deskto
p文件,可以从目录etc/xdg/autostart
中复制 - 对于
i3-wm
,可以在配置文件~/.config/i3/config
中添加如下代码:exec_always --no-startup-id fcitx5
参加来源:zhihu
克隆 oh-my-zsh
git clone http://github.com/robbyrussell/oh-my-zsh ~/.oh-my-zsh
切换配置文件:备份你已有的 .zshrc
文件,然后将 oh-my-zsh 自带的配置文件移动到这个地方。这两步操作可以一步完成,只需要你的 mv
命令支持 -b
这个选项。
mv -b ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
编辑配置文件:例如,你可以更改 .oh-my-zsh
目录的位置。在安装的时候,它默认是位于你的家目录。但是,根据 Free Desktop 所定义的现代 Linux 规范。这个目录应当放置于 ~/.local/share
。你可以在配置文件 .zshrc 中进行修改。如下所示:
# Path to your oh-my-zsh installation.
export ZSH=$HOME/.local/share/oh-my-zsh
然后将 .oh-my-zsh 目录移动到你新配置的目录下:
mv ~/.oh-my-zsh $HOME/.local/share/oh-my-zsh
重新启动 Zsh
source ~/.zshrc
更换你的主题
可以通过列出 .oh-my-zsh
目录下的所有文件来查看所有安装的主题:
peter@c510 ~ ls .local/share/oh-my-zsh/themes/
3den.zsh-theme kennethreitz.zsh-theme
adben.zsh-theme kiwi.zsh-theme
af-magic.zsh-theme kolo.zsh-theme
想在切换主题之前查看一下它的样子,你可以查看 Oh My Zsh 的 wiki 页面。要查看更多主题,可以查看 外部主题 wiki 页面。大部分的主题是非常易于安装和使用的,仅仅需要改变 .zshrc
文件中的配置选项然后重新载入配置文件
#ZSH_THEME="agnoster"
ZSH_THEME="dieter"
参考文献:给 Zsh 添加主题和插件
更改tty字体和大小
临时设置的方法: setfont /usr/share/kbd/consolefonts/latarcyrheb-sun32.psfu.gz
永久设置的方法:echo setfont /usr/share/kbd/consolefonts/latarcyrheb-sun32.psfu.gz >>.zshrc
aur
https://zhuanlan.zhihu.com/p/661351588manjaro
manjaro:sudo pacman -S yay
archlinux
git clone https://aur.archlinux.org/yay.git
cd yay/
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
makepkg -si
yay --version
安装后,你可以使用 yay
命令来安装软件包:
yay -S package_name
参考文献:linuxcn
仓库更新签名报
sudo pacman-key --init && sudo pacman-key --populate && sudo pacman -Syu
参考文献:csdn
pacman命令
自动补全
sudo pacman -S bash-completion
更新系统
pacman 可以用一个命令就可以升级整个系统。花费的时间取决于系统有多老。这个命令会同步非本地(local)软件仓库并升级系统的软件包
pacman -Syu # 升级系统
pacman -Sy # 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)
pacman -Su # 升级所有已安装的软件包
如果升级时,网络比较慢,觉得既浪费时间又浪费硬盘,实在不想升级那么多东西,可以逐个软件包升级。用下面命令可以升级核心包:
pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl
安装软件
pacman -S name1 name2 # 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。
pacman -S --needed name1 name2 # 安装软件,但不重新安装已经是最新的软件
pacman -Sy name # 安装软件前,先从远程仓库下载软件包数据库(数据库即所有软件列表)
pacman -Sv name # 在显示一些操作信息后执行安装
pacman -Sw name # 只下载软件包,不安装
pacman -U name.pkg.tar.gz # 安装本地软件包
pacman -U http://www.example.com/repo/example.pkg.tar.xz # 安装一个远程包(不在 pacman 配置的源里面)
卸载软件
pacman -R 软件名 # 只删除包,保留其全部已经安装的依赖关系
pacman -Rv 软件名 # 删除软件,并显示详细的信息
pacman -Rs 软件名 # 删除软件,同时删除本机上只有该软件依赖的软件
pacman -Ru 软件名 # 删除软件,同时删除不再被任何软件所需要的依赖
pacman -Rsc 软件名 # 删除软件,并删除所有依赖这个软件的程序,慎用
搜索软件
# 在仓库中搜索含关键字的软件包(本地已安装的会标记)
pacman -Ss 关键字
pacman -Sl <repo>:
显示软件仓库中所有软件的列表
可以省略,通常这样用:`pacman -Sl | 关键字`
pacman -Qqs 关键字 # 搜索已安装的软件包
pacman -Qu # 列出所有可升级的软件包
pacman -Qt # 列出不被任何软件要求的软件包
参数加q可以简洁方式显示结果,比如pacman -Ssq gcc会比pacman -Ss gcc显示的好看一些。
pacman -Sl | gcc
跟 pacman -Ssq gcc
很接近,但是会少一些和gcc有关但软件名不包含gcc的包
查询软件信息
pacman -Q pname # 查看软件包是否已安装,已安装则显示软件包名称和版本
pacman -Qi pname # 查看某个软件包信息,显示较为详细的信息,包括描述、构架、依赖、大小等等
pacman -Ql pname # 列出软件包内所有文件,包括软件安装的每个文件、文件夹的名称和路径
软件包组
pacman -Sg # 列出软件仓库上所有的软件包组
pacman -Qg # 列出本地已经安装的软件包组和子包
pacman -Sg # 软件包组: 查看某软件包组所包含的所有软件包
pacman -Qg 软件包组 和 pacman -Sg 软件包组完全一样
很多人建议通过安装软件组来安装工具链,这样比较浪费空间。实际上如果把gcc, qt, clang等安装上,msys2就要占掉超过10G的硬盘空间,所以个人很少直接安装软件组。例如:
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-x86_64-qt5
pacman -S base-devel
清理缓存
pacman -Sc # 清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录
pacman -Scc # 清理所有的缓存文件