Archlinux安装配置以及遇到的问题
一、准备
1.下载镜像
到这里下载最新的iso镜像文件,使用poweriso或者dd刻录到U盘。可以用lsblk
看一下U盘的设备名,把sdx
改成对应的。刻录之前确保U盘没有挂载,要是Ubuntu插上会自动挂载,用umount /dev/sdx
取消挂载就好。
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync
安装完成之后,想要清除U盘里的镜像需要把重建分区信息并且格式化,先用
// 清除iso的filesystem
# wipefs --all /dev/sdx
//进去分区工具,用d命令删除,用n新建一个分区,新建的时候按回车下一步选默认就好,用w写入并退出, 后面分区的部分有介绍其他命令
# gdisk /dev/sdx
# mkfs.vfat /dev/sdx
## 2.从U盘启动
启动后选择从U盘启动,可能需要到BIOS里关闭Secure Boot
确认启动方式是否为efi
# ls /sys/firmwre/efi/efivars
二、安装
1.连接网络(wlan)
如果是有线网的话,连接之后打开dhcp应该就可以了
# systemctl start dhcpd
接口激活: ip
- 使用
rfkill list
查看wlan是否被锁,如果被锁使用rfkill unblock
解锁。 - 使用
ip link
查看wlan的接口名称,类似wlp9s0,下面用<wlan>表示 - 激活wlan接口,使用
ip link set <wlan> up
激活接口,激活后使用ip link
可以看到wlan接口的状态显示为类似<BROADCAST,MULTICASR,UP,LOWER_UP>(包含UP说明接口打开)
无线连接: iw
- 使用
iw dev <wlan> scan | less
可以查看扫描到的接入点 - 使用
iw <wlan> connect
连接 参考wiki
设接入点SSID为<SSID>
无加密:
# iw dev <wlan> connect <SSID>
WEP加密
使用十六进制或 ASCII 密码(格式是自动识别出来的,因为 WEP 密码长度是固定的):
# iw dev <wlan> connect <SSID> key 0:<KEY>
使用十六进制或 ASCII 密码,第三个是默认 (从0计数,共四个)
# iw dev wlan0 connect your_essid key d:2:your_key
WPA/WPA2加密
WPA/WPA2
# wpa_supplicant -i <wlan> -c <(wpa_passphrase <SSID> <KEY>)
获取ip: dhcp
# dhcpcd <wlan>
2.分区: gdisk, mkfs
建立分区
使用gdisk /dev/sdx
可以选择指定硬盘进行分区,下面是gdisk中常用的命令:
- ? 打印可用的命令
- p 打印分区表
- o 新建GPT分区表
- n 新建分区
- d 删除分区
- q 不更改分区表,直接退出
- w 将更改实际写到硬盘上
一般至少需要新建/所在的分区(类型代码8300),还可以将home或者var目录挂载到单独的分区。如果需要还可以建立swap分区(类型代码8200),如果是空白的硬盘,还需要建立EFI分区(类型代码ef00)
格式化分区
# mkfs.vfat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
// swap分区可以不用了, 想要swap可以用[swap文件](https://wiki.archlinux.org/index.php/Swap#Swap_file)
# mkswap /dev/sda3
# swapon /dev/sda3
挂载分区: mount
# mount /dev/sda2 /mnt
# mkdir -p /mnt/home /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
3.安装基本系统
选择软件源
编辑/etc/pacman.d/mirrorlist
,添加使用的源。如
Server=https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
然后刷新
# pacman -Sy
基本系统
base-devel
也可以不选
# pacstrap /mnt base base-devel
生成fstab
# genfstab -U /mnt >> /mnt/etc/fstab
生成完了之后最好用cat
查看一下
4.配置
chroot到新系统
# arch-chroot /mnt /bin/bash
语言地区
编辑/etc/locale.gen
,去掉一下几行的注释
en_US.UTF-8 UTF-8
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
zh_CN GB2312
然后运行
# locale-gen
最后编辑/etc/locale.conf
LANG=en.UTF-8
终端字体(可选)
编辑 /etc/vconsole.conf
:
KEYMAP=us
FONT=Lat2-Terminus16
时区
将 /etc/localtime
软链接到 /usr/share/zoneinfo/Zone/SubZone
。其中 Zone
和 Subzone
替换为所在时区,例如:
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
主机名(可选)
# echo myhostname > /etc/hostname
设置 Root 密码、添加用户
除了设置 Root 密码外,添加一个管理员组的帐户做平时使用:
# passwd
# useradd -G wheel -d /home/user -m user
# passwd user
安装和配置 Bootloader
// 想检测别的系统可以再装上os-prober
# pacman -S grub efibootmgr
# grub-install --target=x86_64-efi --bootloader-id=Arch --recheck
# grub-mkconfig -o /boot/grub/grub.cfg
X窗口管理器和一些驱动
X窗口管理器
# pacman -S xorg-server xorg-xinit
通用显卡驱动
# pacman -S xf86-video-vesa
有独立的显卡(NVIDIA)的话需要注意一下,下面装桌面环境的时候,最好把nvidia独立显卡驱动装上,之前遇到到不装驱动,登录之后很快就卡住的情况,应该跟nouveau没关系,因为在grub的命令里面加了nouveau.blacklist=1
把nouveau禁用了。把NVIDIA驱动装上之后就没有出现进了桌面很快就freeze的情况。
声卡驱动
# pacman -S alsa-utils
输入设备驱动
装一下输入设备驱动libinput
# pacman -S xf86-input-libinput
//最好把配置工具xinput也装一下
# pacman -S xorg-xinput
带synaptics触摸板的可以安装synaptics驱动, elan的触摸板最好还是不要装了,遇到过tap to click 打不开的情况:
# pacman -S xf86-input-synaptics
虚拟机
如果是在 VMware 中安装,安装一些专门用于虚拟机的驱动程序(这些我没有试,把Arch装虚拟机里感觉并不是正确的打开方式):
# pacman -S xf86-input-vmmouse xf86-video-vmware svga-dri
安装 VMware Tools,在 VMware 中选择“安装 VMware Tools”,然后:
# pacman -S linux-headers
# for x in {0..6}; do mkdir -pv /etc/init.d/rc$x.d; done
# mount /dev/cdrom /mnt
# cd /root
# tar zxf /mnt/VMwareTools*.tar.gz
# cd vmware-tools-distrib
# ./vmware-install.pl
安装字体
安装一些常用的中英文字体:
# pacman -S ttf-dejavu wqy-zenhei wqy-microhei
连接网络
gnome自带了networkmanager,如果安装deepin可能需要单独安装下,不然开机之后连不了网。
# pacman -S networkmanager
# systemctl disable dhcpcd.service//dhcpcd和NetworkManager冲突
# systemctl enable NetworkManager.service
安装桌面环境(deepin)
装之前先把NVIDIA显卡装上
# pacman -S nvidia opencl-nvidia
也可以不选extra
# pacman -S deepin deepin-extra
配置lightdm登录管理器
# vi /etc/lightdm/lightdm.conf
找到
/etc/lightdm/lightdm.conf
[Seat:*]
...
#greeter-session=example-gtk-gnome
去掉注释,并改为:
greeter-session=lightdm-deepin-greeter
启动lightdm服务
# systemctl enable lightdm.servicce
重启即可
三、SSD优化
开启TRIM
TRIM的介绍参考Archwiki-TRIM的介绍,这里使用修改/etc/fstab
的方法启用TRIM。
UUID=xxx / ext4 rw,discard,noatime,nodiratime 0 1
- discard参数启动TRIM可以提升性能和使用持久性。
- noatime和nodiratime告诉文件系统不要记录文件和目录的最后访问时间
减少SWAP读写频率
减少对SWAP的操作
$ sudo vim /etc/sysctl.d/99-sysctl.conf
vm.swappiness = 1
vm.vfs_cache_pressure = 50
重启后生效
更换低延迟的IO-Scheduler
默认的IO调度器CFQ(Copletely Fair Queuing)是针对HDD的优化,对多个读操作进行分组队列。但是SSD的读取效率非常高,完全不必要分组排队,使用一个队列就可以了。建议更换为:
- NOOP(当系统只有SSD的情况下非常建议)
- Deadline模式
编辑文件/etc/default/grub
,在GRUB_CMDLINE_LINUX_DEFAULT=
参数里面加入elevator=noop
把一些经常写的目录挂载到内存
更改/etc/fstab
,在最后加入
tmpfs /tmp tmpfs defaults,noatime,nodiratime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
如果需要保留日志就不要把/var/log
挂载到硬盘
四 常用软件
安装一些常用的软件
- Anki
- BoostNote
- Chrome
- Crossover (wechat office2007 thunder-speed)
- deepin-baidu-pan
- deepin.com.qq.office
- Foxit Reader
- k-vim
- GoldenDict
- Oh my zsh
- RedNotebook
- Netease Cloud Music
- Nutstore
- Skype
- Stacer
- TeamViewer
- TexStudio
- Visual Studio Code
- VLC
- Vmware Workstation
- Wireshark
- WPS
- Zotero
五、存在的问题
装了之后现在还是有些问题,记录一下,如果找到解决办法也记录下来方便以后查看。这些我自己机器(技嘉AERO 15)上遇到的问题,别的电脑可能就没有了,如果有的话也可以尝试一下提到的解决办法,欢迎交流。
先说一下已经解决的
蓝牙不识别
# pacman -S install bluez bluez-utils
# systemctl enable bluetooth.service
Deepin的grub2-daemon的问题
如果自己更改/etc/default/grub
的话,会被Deepin的grub2-daemon覆盖掉,具体是下面几个文件
/usr/share/dbus-1/system-services/com.deepin.daemon.Grub2.service
/usr/share/dbus-1/system.d/com.deepin.daemon.Grub2.conf
/usr/share/polkit-1/actions/com.deepin.daemon.Grub2.policy
/usr/lib/deepin-daemon/grub2
可以运行下面这个文件更新grub来防止被覆盖
//disable_daemon_grub2.sh
#!/bin/sh
set -x
sudo update-grub2
scriptMD5sum=$(md5sum /boot/grub/grub.cfg|awk '{print $1}')
logfile=/var/cache/deepin/grub2.log
sudo sed -i "s#scriptMD5sum=.*#scriptMD5sum=$scriptMD5sum#" $logfile
HDMI 接口的外接显示器检测不到
参考hdmi 检测不到,现在有了一个能work的解决办法。新建/usr/share/X11/xorg.conf.d/20-intel.conf
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
修改/etc/bumblebee/xorg.conf.nvidia
Section "ServerLayout"
Identifier "Layout0"
Option "AutoAddDevices" "true"
Option "AutoAddGPU" "false"
EndSection
Section "Device"
Identifier "DiscreteNvidia"
Driver "nvidia"
VendorName "NVIDIA Corporation"
Option "ProbeAllGpus" "false"
Option "NoLogo" "true"
Option "UseEDID" "false"
Option "AllowEmptyInitialConfiguration"
# Option "UseDisplayDevice" "none"
EndSection
Section "Screen"
Identifier "Screen0"
Device "DiscreteNvidia"
EndSection
修改/etc/default/grub
里的参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.blacklist=1 i915.modeset=1 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""
更新grub之后重启,运行sudo intel-virtual-output -f
没法用tee /proc/acpi/bbswitch <<< ON
打开独立显卡
Refused to change power state, currently in D3
在tlp的配置文件/etc/default/tlp
中的RUNTIME_PM_BLACKLIST
里面加入独立显卡的pci地址01:00.0
(用lspci
命令可以查看),关闭无线网卡的电源管理
修改/etc/default/grub
里的参数
//加入acpi_osi=! acpi_osi=\"Windows 2009\"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.blacklist=1 i915.modeset=1 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""
无线网卡的问题
无线网卡suspend之后再resume会出现不能扫描出网络的问题,查看dmesg可以看到错误信息
Aug 30 09:15:40 AERO15 kernel: iwlwifi 0000:03:00.0: Could not load the [0] uCode section
Aug 30 09:15:40 AERO15 kernel: iwlwifi 0000:03:00.0: Failed to run INIT ucode: -5
Aug 30 09:15:40 AERO15 kernel: iwlwifi 0000:03:00.0: Failed to start INIT ucode: -5
Aug 30 09:15:40 AERO15 kernel: iwlwifi 0000:03:00.0: Failed to start RT ucode: -5
尝试关闭Wake On Lan(参加后面的参考),问题没解决
在tlp的配置文件/etc/default/tlp
中的RUNTIME_PM_BLACKLIST
里面加入无线网卡的pci地址03:00.0
(用lspci
命令可以查看),RUNTIME_PM_DRIVER_BLACKLIST
里面加入iwlwifi
,关闭无线网卡的电源管理
登录界面的tap to click
没有打开
使用xf86-input-libinput
驱动Elan的触摸板,不管是使用lightdm还是gdm,在登录界面都不能用轻触触摸板产生点击,而必须按压触摸板,原因是tab to click
默认没有打开。登录之后使用设置可以配置打开,但是并不影响登录界面的设置。
解决办法如下,编辑/etc/X11/xorg.conf.d/40-touchpad.conf
Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "VertEdgeScroll" "on"
Option "VertTwoFingerScroll" "on"
Option "HorizEdgeScroll" "on"
Option "HorizTwoFingerScroll" "on"
Option "CircularScrolling" "on"
Option "CircScrollTrigger" "2"
Option "EmulateTwoFingerMinZ" "40"
Option "EmulateTwoFingerMinW" "8"
Option "CoastingSpeed" "0"
Option "FingerLow" "30"
Option "FingerHigh" "50"
Option "MaxTapTime" "125"
EndSection
没解决的
- 蓝牙发送文件会失败
- 无线网卡有时会用着用着不能扫描网络了,看dmesg有一大堆错误,最先出现的是这两句
kernel: iwlwifi 0000:03:00.0: Error sending STATISTICS_CMD: time out after 2000ms.
kernel: iwlwifi 0000:03:00.0: Current CMD queue read_ptr 16 write_ptr 17
用tlp关闭关闭无线网卡的电源管理之后也出现过,/etc/NetworkManager/conf.d/
新建一个文件default-wifi-powersave.conf
[connection]
wifi.powersave = 2
现在不确定是不是解决了
参考:
- Arch Linux 安装指引
- Arch Linux 安装 Deepin 桌面环境
- Arch Linux wiki - Wireless network configuration
- nouveau的问题
- Wake On Lan
- iwlwifi bug
- hdmi 检测不到
更改日志:
- 2018.01.07 创建
- 2018.08.30 增加
五、存在的问题
,更改输入设备驱动一部分 - 2018.08.31 增加HDMI的问题
- 2018.09.24 增加登录界面启用
tab to click
的部分 补齐软件和ssd优化部分