[启动]
主板关闭安全启动
推荐Windows下用ISO2USB写入iso到U盘,格式化为FAT32,arch直接解压缩iso文件某些主板可能无法启动,注意ISO2USB的U盘的卷标必须保留,否则无法启动
用UEFI方式启动USB Live,选择第一项进入Live系统
更新系统时间
# timedatectl set-ntp true
[分区] (具体怎么分区,请根据各自需求,以下提供一个实例) 不分交换分区,之后用交换文件替代
方案:SSD sda,sda1 esp fat32,sda2 root ext4;HDD sdb,sdb1 home ext4; GPT分区表
# lsblk #查看分区挂载情况 (不确定分区情况的时候可以随时用此命令查看)
以下用parted工具分区,也可用其它分区工具,如cfdisk,cgdisk,等,parted的好处是同时支持gpt和mbr,分区容量可以精确的用MiB的数值来划分,同时会自动4k对齐,更多资料参考官方Wiki
# parted /dev/sda
(parted) mklabel gpt #建立gpt分区表,出现交互时输入"Yes",如果是MBR分区表gpt替换为msdos
(parted) mkpart esp fat32 1MiB 513MiB #建立esp分区,UEFI必须,MBR不必划分,大小为512MiB
(parted) mkpart root ext4 513MiB 100% #建立根分区,大小为剩余所有空间
(parted) set 1 boot on #设置第一个分区即sda1为可启动
(parted) quit #退出
# parted /dev/sdb
(parted) mklabel gpt #建立gpt分区表
(parted) mkpart home ext4 1MiB 100% #建立home分区,大小为所有空间
(parted)quit #退出
# lsblk #再次查看分区挂载情况
[格式化] UEFI启动分区必须为fat32,其它分区选择ext4
# mkfs.fat -F 32 /dev/sda1 && mkfs.ext4 /dev/sda2 && mkfs.ext4 /dev/sdb1
[挂载] 注意建立目录和挂载的顺序,一定要先挂载根分区,然后再创建其它需要挂载的目录
# mount /dev/sda2 /mnt #挂载根分区到sda2
# mkdir /mnt/esp #建立esp分区挂载目录
# mkdir /mnt/home #建立home分区挂载目录
# mount /dev/sda1 /mnt/esp #挂载esp分区到sda1
# mount /dev/sdb1 /mnt/home #挂载home分区到sdb1
[安装] 善用TAB补全
# nano /etc/pacman.d/mirrorlist #配置源,这个配置会自动复制到安装好的系统中
使用键盘快捷键Alt+6可以复制行当前的一整行,Ctrl+U粘贴,Ctrl+V下翻页,Ctrl+Y上翻页
复制需要的源到最上面的注释下边,如163源
# pacstrap /mnt base base-devel #安装基本系统
[配置]
# genfstab -U -p /mnt > /mnt/etc/fstab #生成fstab
# cp /mnt/etc/fstab /mnt/etc/fstab.bak #备份fstab,建议勤备份配置文件,有益无害
# nano /mnt/etc/fstab #编辑fstab
sda2是根分区,并且是SSD,为了开启trim功能,需要在<options>下加入参数discard,和之前的参数一样,逗号隔开
# arch-chroot /mnt #chroot到目标系统
<本地化设置>
# nano /etc/locale.gen #编辑locale.gen文件
en_US.UTF-8 UTF-8 #去掉注释
zh_CN.UTF-8 UTF-8 #去掉注释
# locale-gen #生成指定的本地化文件
# echo LANG=en_US.UTF-8 > /etc/locale.conf #提交本地化选项,这里不建议使用中文,中文环境可以在之后的桌面环境中选择
<字体调整>
# echo FONT=Lat2-Terminus16 > /etc/vconsole.conf
# cp /etc/pacman.conf /etc/pacman.conf.bak 每次修改文件前都建议先备份
# nano /etc/pacman.conf #启用pacman彩色显示
去掉Color前面的注释
<时区>
# tzselect #查看可用的时区配置
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置当前时区为Shanghai
# hwclock --systohc --utc #设置硬件时钟为UTC
<减小内核文件体积(可选)>
# cp /etc/mkinitcpio.conf /etc/mkinitcpio.conf.bak #备份mkinitcpio.conf文件
# nano /etc/mkinitcpio.conf #编辑
默认使用gzip压缩,去掉xz前面的注释,使用xz压缩内核,减小内核文件体积
# mkinitcpio -p linux
<root密码>
# passwd
<主机名>
# echo myhostname > /etc/hostname #myhostname替换为需要的名字,区分大小写
# cp /etc/hosts /etc/hosts.bak #备份host文件
# nano /etc/hosts #编辑/etc/hosts 添加同样的主机名
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost myhostname
::1 localhost.localdomain localhost myhostname
<网络>
启用有线网卡DHCP
# systemctl enable dhcpcd
<启动> 可选择systemd-boot或GRUB两种启动模式
1> 使用systemd-boot方式
复制内核文件到esp分区
# cp /boot/vmlinuz-linux /esp
# cp /boot/initramfs-linux.img /esp
# cp /boot/initramfs-linux-fallback.img /esp
安装并更新efi启动文件
# bootctl --path=/esp install
# bootctl --path=/esp update
编辑启动文件
# nano /esp/loader/loader.conf
default arch-*
timeout 3
editor 0
# nano /esp/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw
注:可以切换到tty2,使用blkid -s PARTUUID -o value /dev/sdxY找到某个分区的PARTUUID, 'x' 和 'Y' 分别是根分区的磁盘和分区编号,如sda2,记录下来,输入到上面的文件中
自动更新esp内核文件(建议在安装完桌面环境之后再进行配置)
# gedit /etc/systemd/system/efistub-update.path
----------分隔线----------
[Unit]
Description=Copy EFISTUB Kernel to UEFISYS Partition
[Path]
PathChanged=/boot/initramfs-linux-fallback.img
[Install]
WantedBy=multi-user.target
WantedBy=system-update.target
----------分隔线----------
gedit /etc/systemd/system/efistub-update.service
[Unit]
Description=Copy EFISTUB Kernel to UEFISYS Partition
[Service]
Type=oneshot
ExecStart=/usr/bin/cp -f /boot/vmlinuz-linux /esp/vmlinuz-linux
ExecStart=/usr/bin/cp -f /boot/initramfs-linux.img /esp/initramfs-linux.img
ExecStart=/usr/bin/cp -f /boot/initramfs-linux-fallback.img /esp/initramfs-linux-fallback.img
----------分隔线----------
# systemctl enable efistub-update.path
2> 使用GRUB
# pacman -S grub efibootmgr
# grub-install --target=x86_64-efi --efi-directory=/esp --bootloader-id=grub
# grub-mkconfig -o /boot/grub/grub.cfg
关于启动管理器的配置,建议参阅官方Wiki
# exit #退出chroot环境
# umount -R /mnt #卸载所有已挂载的分区
# reboot #重启
==基础系统安装完成==
启动进入基本系统之后用root登录
# timedatectl set-ntp true #启用ntp自动更新时间
# pacman -Syu
添加用户
# useradd -m myname
# passwd myname #设置密码
配置sudo
# EDITOR=nano visudo
用户名添加到root ALL那一行下,格式和root的一样
桌面环境配置
# pacman -S mesa #安装显卡3D加速驱动,可选包:mesa-demos mesa-vdpau vulkan-intel vulkan-radeon
# pacman -S xf86-video-*** #安装显卡2D加速驱动 amdgpu,ati,intel,nouveau,nv 建议参考官方Wiki确定需要装的包,全部都装也没影响
# pacman -S gnome #安装GNOME的基本环境,其它桌面自行参考
# pacman -S gedit file-roller gnome-tweak-tool p7zip #安装文本编辑器,归档管理器,优化工具,7zip解压缩支持
# pacman -S wqy-zenhei wyq-microhei wyq-bitmapfont noto-fonts-cjk #安装字体
# pacman -S ibus-rime #安装ibus小狼毫输入法
# systemctl enable gdm #GDM启用
# systemctl enable NetworkManager #网络启用
# reboot #重启
[其它]
SSD IO调度优化,使用noop,或deadline而不是默认的cfq
$ cat /sys/block/sdX/queue/scheduler # 查看当前的调度器,X是应用变更的设备
# gedit /etc/udev/rules.d/60-schedulers.rules
# set noop scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="noop"
建立交换文件
这里放在HDD分区,可以考虑放在SSD分区,这里放在home分区,大小为2GB,并设为隐藏文件
# fallocate -l 2048M /home/.swapfile #建立
# chmod 600 /home/.swapfile #设置权限
# mkswap /home/.swapfile #生成
# swapon /home/.swapfile #启用
设置开机启自动启用swapfile文件,编辑fstab,加入以下内容
/home/.swapfile none swap defaults 0 0
设置swap优先级
# gedit /etc/sysctl.d/90-swappiness.conf
vm.swappiness=1~100 #系统默认是60
GNOME推荐插件
Arch Linux Updates Indicator Arch更新提示器
Dash to Dock 智能Dock栏
Dynamic Panel Transparency 顶栏沉浸(最大化黑色,窗口透明)
Freon 硬件温度请安装lm_sensors
Frippery Move Clock 移动时间位置
Minimize All 所有窗口最小化
NetSpeed 实时网速
OpenWeather 天气
ShutdownTimer 定时关机
Volume Mixer 音频程序单独音量管理
字体渲染优化配置文件
$ gedit ~/.fonts.conf
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="pattern">
<edit mode="assign" name="dpi">
<double>96</double>
</edit>
</match>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<!-- The ?lcddefault? filter will work for most users.
Other filters are available that can be used in
special situations: ?lcdlight?; a lighter filter
ideal for fonts that look too bold or fuzzy,
?lcdlegacy?, the original Cairo filter; and
?lcdnone? to disable it entirely. -->
<const>lcddefault</const>
</edit>
</match>
<dir>~/.fonts</dir>
</fontconfig>