archlinux
###############
制作启动u盘
===========
下载\ `archlinux iso `__
下载\ `ventoy `__
刻录ventoy后,将ventoy分区格式化为ntfs。
直接将archlinux iso文件拷贝到ventoy分区。
还可以放入 `clonezilla
iso `__,
`gparted iso `__, `winpe
iso `__ 等其他iso。
dd
--
linux 环境直接刻录u盘:
.. code-block::
dd bs=4M if=archlinux.iso of=/dev/sdx status=progress && sync
windows
-------
windows环境直接刻录u盘:
.. code-block::
下载LinuxLive USB Creator:http://www.linuxliveusb.com/
初始安装
========
`How to Install Arch Linux `__
`Arch Linux and Windows 10 (UEFI + Encrypted) Install
Guide `__
u盘启动
-------
进入BIOS,从U盘启动,进入archlinux live
设置arch源
----------
编辑/etc/pacman.d/mirrorlist,选择合适的server
例如
http://mirrors.163.com/archlinux/
硬盘分区
--------
假设系统硬盘为/dev/sda
全新分区
~~~~~~~~
fdisk /dev/sda
将磁盘旧的msdos分区表切换为gpt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sgdisk -g /dev/sda
新建系统分区
~~~~~~~~~~~~
mkfs -t ext4 -b 4096 -E stride=128,stripe-width=128 /dev/sda1
调整系统分区大小
~~~~~~~~~~~~~~~~
.. code-block::
e2fsck -f /dev/sda1
resize2fs /dev/sda1
新建efi分区
~~~~~~~~~~~
磁盘新建一个efi分区(假设为 /dev/sda5),类型为vfat,标识为 ``boot, esp`` ,大小例如1GB
/etc/fstab 示例
~~~~~~~~~~~~~~~
.. code-block::
/dev/sda1 / ext4 rw,relatime,stripe=128 0 1
/dev/sda5 /boot vfat defaults 0 2
连接无线网絡
------------
``wifi-menu``
``iwd``
``iwctl --passphrase station connect ``
安装系统
--------
.. code-block::
mount /dev/sda1 /mnt
mount /dev/sda5 /mnt/boot
pacstrap /mnt base base-devel dialog vim iwd
pacstrap /mnt linux linux-headers linux-firmware
pacstrap /mnt glibc lib32-glibc
arch-chroot /mnt
编辑/etc/pacman.d/mirrorlist,设置arch源,同上节
.. code-block::
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
mkinitcpio -p linux
pacman -S netctl net-tools wpa_actiond wireless_tools wpa_supplicant ifplugd dialog dhclient dhcpcd
exit
reboot
系统更新
--------
重启之后,执行 ``wifi-menu`` 连接到无线网络
.. code-block::
pacman -Syu
数据包更新失败
--------------
.. code-block::
sudo pacman -S archlinux-keyring
sudo pacman-key –refresh-keys
sudo pacman-key –populate archlinux
sudo pacman -Scc
sudo pacman -Syu
pacman/yaourt调用aria2多线程下载文件
------------------------------------
假设同时开8个连接
.. code-block::
pacman -S aria2
在/etc/pacman.conf中指定
.. code-block::
XferCommand = /usr/bin/aria2c -c -o %o %u
在/etc/makepkg.conf中指定DLAGENTS
.. code-block::
http::/usr/bin/aria2c -c -o %o %u
https::/usr/bin/aria2c -c -o %o %u
ftp::/usr/bin/aria2c -c -o %o %u
时间
----
设置rtc避免windows/archlinux重启后时间乱跳
.. code-block::
pacman -S ntp ntpdate asia.pool.ntp.org
timedatectl set-local-rtc 1
timedatectl status
UEFI 引导
=========
配置 uefi Systemd-boot
----------------------
`用Systemd-boot取代GRUB作為Linux的bootloader `__
安装
~~~~
.. code-block::
pacman -S efibootmgr
安装/修复 EFI引导
~~~~~~~~~~~~~~~~~
进入archlinux live环境
.. code-block::
mount /dev/sda1 /mnt
mount /dev/sda5 /mnt/boot
bootctl install --path=/mnt/boot
设置archlinux的EFI引导
----------------------
blkid 查看 archlinux 根分区的PARTUUID。
编辑 /boot/loader/entries/arch.conf
.. code-block::
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=xxxxxxxxxx rw quiet splash
添加windows的EFI引导
--------------------
把windows系统分区下的EFI/Microsoft目录直接拷贝到/boot/EFI/目录下。
设置默认引导
------------
编辑 /boot/loader/loader.conf
.. code-block::
default @saved
timeout 3
console-mode max
boot目录示例
------------
.. code-block::
$ tree /boot -L 3
/boot
├── EFI
│ ├── Microsoft
│ │ ├── Boot
│ │ └── Recovery
│ └── systemd
│ └── systemd-bootx64.efi
├── initramfs-linux-fallback.img
├── initramfs-linux.img
├── loader
│ ├── entries
│ │ └── arch.conf
│ ├── entries.srel
│ ├── loader.conf
│ └── random-seed
└── vmlinuz-linux
调整efi boot项
--------------
设置boot优先顺序,例如先1再0:efibootmgr -o 1,0
删除某个boot项,例如3: efibootmgr -b 3 -B
图形界面
========
安装X
-----
.. code-block::
pacman -S xorg xorg-xinit consolekit
安装XFCE
~~~~~~~~
.. code-block::
pacman -S xfce4 xfce4-goodies xfce4-notifyd elementary-xfce-icons
进入X的配置,不然关机键老是灰的:编辑~/.xinitrc
.. code-block::
exec ck-launch-session dbus-launch startxfce4
硬件驱动
========
声卡
----
- `ArchWiki:设置ALSA `__
- `archlinux音量太小的问题解决 `__
.. code-block::
pacman -Sy pavucontrol pulseaudio pulseaudio-alsa
pacman -S alsa-lib alsa-utils alsa-oss sof-firmware
gpasswd -a USERNAME wheel
gpasswd -a USERNAME audio
alsaconf
alsamixer
alsactl store
编辑 ``/etc/rc.conf`` 文件,添加 ``alsa`` 到DAEMONS行。
编辑\ ``/etc/modprobe.d/alsa-base``\ 文件,添加以下两行:
.. code-block::
options snd-usb-audio index=0 options snd-hda-intel
index=1
热插拔(xfce4)
-------------
.. code-block::
pacman -S ntfs-3g thunar-volman udisks2
pacman -S gvfs gvfs-afc gvfs-gphoto2 gvfs-mtp
配置 /etc/fstab,手动挂载磁盘
.. code-block::
/dev/sdb1 /mnt/usb ntfs-3g noauto,users,permissions 0 0
挂载示例:
.. code-block::
udisksctl mount -b /dev/sdc1
显卡
----
.. code-block::
sudo pacman -S nvidia-dkms nvidia-utils lib32-nvidia-utils nvidia-prime
触摸屏
------
.. code-block::
sudo pacman -S xf86-input-wacom
关闭触摸板
----------
.. code-block::
sudo pacman -S synaptics
sudo synclient TouchpadOff=1
输入法
======
.. code-block::
pacman -S ibus-rime
在\ ``$HOME/.bashrc``\ 中添加:
.. code-block::
export LANG=zh_CN.UTF-8
export LC_CTYPE=zh_CN.UTF-8
export XIM_PROGRAM=ibus
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XIM=ibus
在\ ``$HOME/.xinitrc``\ 中添加:
.. code-block::
ibus-daemon -drx
郑码
----
.. code-block::
git clone https://github.com/rime/plum
cd plum
bash rime-install lotem/rime-zhengma
编辑 ``~/.config/ibus/rime/default.custom.yaml``\ :
.. code-block::
patch:
schema_list:
- schema: zhengma
- schema: terra_pinyin
中文环境
========
- ``vim /etc/locale.gen``\ ,指定zh_CN.UTF-8
- ``vim /etc/local.conf``
.. code-block::
LANG=zh_CN.UTF-8
LC_MESSAGES=zh_CN.UTF-8
- 执行locale-gen
- vim /etc/rc.conf
.. code-block::
LOCALE=zh_CN.UTF-8
locale-gen时找不到character map file
------------------------------------
``pacman -Syu``\ 升级的时候出的问题
执行locale-gen提示:\ ``character map file "en_US" not found``
结果locale就变成”C”
``pacman -S glibc``\ 重装一遍,还是出错,不过提示空间不足
``pacman -Scc`` 清理空间
``pacman -S glibc -f``
网络
====
根据MAC地址固定网卡名称
-----------------------
编辑文件/etc/udev/rules.d/10-network.rules
.. code-block::
SUBSYSTEM==“net”,
ATTR{address}==“00:26:2d:f6:ad:43”, NAME=“eth0” SUBSYSTEM==“net”,
ATTR{address}==“70:f1:a1:28:5a:ad”, NAME=“wlan0”
无线(netctl)
------------
- 安装: ``pacman -S net-tools wireless_tools wpa_supplicant netctl``
- 配置: 参考/etc/netctl/examples/
- 新建一个/etc/netctl/athome配置(wpa)
``wpa_passphrase athome athomepasswd``\ 查看psk,假设psk为\ ``xxxxxxxxxxxxx``
.. code-block::
CONNECTION=‘wireless’ DESCRIPTION=‘athome’
INTERFACE=‘wlan0’ SECURITY=‘wpa’ ESSID=‘athome’ IP=‘dhcp’
KEY="xxxxxxxxxxxxx
- 新建一个/etc/netctl/atwork配置(wep)
.. code-block::
CONNECTION=‘wireless’ DESCRIPTION=‘atwork’
INTERFACE=‘wlan0’ SECURITY=‘wep’ ESSID=atwork IP=‘dhcp’
KEY=“s:myatworkpasswd”
- 开机启动
.. code-block::
netctl enable athome
- 移除开机启动
.. code-block::
ls /etc/systemd/system/multi-user.target.wants/
netctl enable athome
- 手工启动
.. code-block::
netctl start athome
无线(wpa_supplicant)
--------------------
安装
.. code-block::
pacman -S net-tools wireless_tools wpa_supplicant
假设配置ESSID为mywireless,密码为mypasswd的无线
.. code-block::
wpa_passphrase mywireless mypasswd >>
/etc/wpa_supplicant/wpa_supplicant.conf
手动修改wpa_supplicant.conf
.. code-block::
update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel ap_scan=1
fast_reauth=1
network={ ssid=“mywireless”
#proto=WPA proto=RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP
#psk=“mypasswd”
psk=09896d6dc939e1d6b279c10ee3d4d1c8c75970ce345c6552b7ee47d892f0740e }
手动连接:假设无线网卡为wlan0
.. code-block::
WLAN=wlan0 ESSID=mywireless PASSWD=mypasswd
rm /run/dhcpcd-:math:`WLAN.pid
rm /var/run/wpa_supplicant/`\ WLAN
ifconfig $WLAN up
wpa_supplicant -dd -B -Dwext -i $WLAN -c /etc/wpa_supplicant.conf
ifconfig $WLAN up iwconfig $WLAN essid :math:`ESSID key "s:`\ PASSWD”
dhcpcd $WLAN
vpn
---
- 参考:\ `archlinux pptp
vpn拨号连接 `__
- 没看到arch下有/etc/ppp/ip-up.d目录,用以下脚本来启动vpn,我没有把它加为开机启动项,嗯。
.. code-block::
#!/bin/zsh
#取网关地址 gateway=\ ``route|grep default|grep eth0|awk '{print $2;}'``
vpn_gateway=“192.168.6.253”
echo “拨号…” sudo poff -a sleep 2 sudo pon lab sleep 3
echo “修改路由…” #科大的地址不从vpn走 sudo route add -net 202.38.0.0/16
gw $gateway eth0 sudo route add -net 210.45.0.0/16 gw $gateway eth0 sudo
route add -net 211.86.0.0/16 gw $gateway eth0
#默认从vpn走 sudo route del default sudo route add default gw
$vpn_gateway dev ppp0
#看路由 sudo route -n
netctl提示wpa无线连接失败,要看 journal -xn等等
-----------------------------------------------
.. code-block::
netctl start somewireless
netctl 提示wpa无线连接失败,要看journal -xn等等
可以先禁用对应的网卡,再重新start,例如:
.. code-block::
ip link set wlan0 down netctl start somewireless {%
endhighlight %}
无线速度慢 wireless slow
------------------------
参考\ `Slow Wireless Intel 6235 (iwlwifi
module) `__
.. code-block::
echo options iwlwifi 11n_disable=1 \| sudo tee
/etc/modprobe.d/51-disable-6235-11n.conf
禁用 wifi 键盘灯 LED 闪烁
-------------------------
见:\ `wireless led
blink `__
.. code-block::
# echo ‘options iwlwifi led_mode=1’ >>
/etc/modprobe.d/wlan.conf # modprobe -r iwlwifi && modprobe iwlwifi {%
endhighlight %} 或者 .. code-block::
# echo ‘w
/sys/class/leds/phy0-led/trigger - - - - phy0radio’ >
/etc/tmpfiles.d/phy0-led.conf # systemd-tmpfiles –create phy0-led.conf
常用软件
========
.. code-block::
pacman -S rsync curl lftp wget axel pacman -S
wqy-bitmapfont wqy-zenhei ttf-monaco pacman -S smplayer ffmpeg
flashplayer pacman -S libreoffice-zh-CN libreoffice-impress
libreoffice-writer libreoffice-calc pacman -S zip unzip unrar p7zip
thunar-archive-plugin xarchiver arj cpio lzop pacman -S firefox
firefox-i18n-zh-cn freshplayerplugin pepper-flash chromium pacman -S
dnsutils traceroute wireshark-gtk
yay
---
.. code-block::
cd /tmp
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si
安装deb包
---------
.. code-block::
yay -S debtap
sudo debtap -u
debtap xxx.deb
sudo pacman -U xxx.zst
Web: NGINX+PHP
--------------
.. code-block::
pacman -S nginx spawn-fcgi php-cgi {% endhighlight
%}
- 以http(用户):http(组)启动fastcgi :
.. code-block::
spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u http -g
http -f /usr/bin/php-cgi
- 配置/etc/nginx/conf/nginx.conf
.. code-block::
location / { root /var/www; index index.php
index.html index.htm; }
location ~ .php$ { root /var/www; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME
:math:`document_root`\ fastcgi_script_name; include fastcgi_params; } {%
endhighlight %}
- 启动nginx: /etc/rc.d/nginx start
music
-----
`cue_splitting `__
.. code-block::
pacman -S cuetools mp3info wavpack flac mac shntool
bchunk
firefox 安装 flash 插件
-----------------------
- 在 adobe 网站下载 flash player
- 将其中的libflashplayer.so 复制到 ~/.mozilla/plugins/目录下
- 执行 ldd ~/.mozilla/plugins/libflashplayer.so
virtualbox
----------
参考: `Install VirtualBox on Arch
Linux `__
.. code-block::
bios -> cpu 设置 -> 打开 amd-v
pacman -S virtualbox 选择 virtualbox-host-modules-arch
reboot
modprobe vboxdrv
yay -S virtualbox-ext-oracle
usermod -G vboxusers -a [username]
java
----
查看支持的java版本:
.. code-block::
archlinux-java status
切换java的版本:
.. code-block::
archlinux-java set
steam
-----
install
~~~~~~~
`How to Play Games on Arch Linux Using Steam: A Complete
Guide `__
在 /etc/pacman.conf 开启 multilib
.. code-block::
pacman -S steam
overlay
~~~~~~~
`SteamDeck上SteamOS+Windows双系统共用原神游戏文件的方法 `__
双系统环境,linux下复用windows已下已安装的游戏文件,避免重复下载,同时避免修改原windows下的游戏文件。
windows下steamapps路径已挂载为 ``/mnt/d/game/Steam/steamapps``
linux下steamapps路径为 ``/home/xxx/.local/share/Steam/steamapps``
linux下steamapps的overlay upperdir路径为
``/home/xxx/game/steamapps_upper``
linux下steamapps的overlay workdir路径为
``/home/xxx/game/steamapps_work``
在/etc/fstab中添加配置:
.. code-block::
overlay /home/xxx/.local/share/Steam/steamapps overlay defaults,nofail,index=off,lowerdir=/mnt/d/game/Steam/steamapps,upperdir=/home/xxx/game/steamapps_upper,workdir=/home/xxx/game/steamapps_work 0 2
挂载目录
.. code-block::
sudo mount /home/xxx/.local/share/Steam/steamapps
play
~~~~
启动steam,在设置项的兼容性中选择proton版本,一般可默认为proton
experimental。
直接游玩相关游戏。
witcher 3
~~~~~~~~~
`steam
witcher3 `__
Witcher 3需要特殊配置proton版本选8.0左右,右键属性中设置启动选项:
.. code-block::
WINEDLLOVERRIDES="winmm,version=n,b" %command% --launcher-skip
效果一般,容易僵住
也可以尝试使用第三方的GE-Proton:
.. code-block::
yay -S protonup-qt
系统备份
--------
使用
`clonezilla `__
备份/恢复 磁盘或分区
故障处理
========
KERNEL PANIC 恢复
-----------------
- 系统升级失败,重启提示kernel panic,switch_root : fail to …
- 从live cd启动,将原来系统的根分区挂载到/mnt下,再用旧版glibc恢复
.. code-block::
mount /dev/sda1 /mnt
pacman -U glibc-2.16.0-1-x86_64.pkg.tar.xz -r /mnt
/bin/plymouth: No such file or directory
----------------------------------------
archlinux , thinkpad x61t,开机出错
journalctl -xn显示 /bin/plymouth: No such file or directory
删掉 /etc/fstab 中不存在的介质
闪屏
----
thinkpad x12 detachable, intel cpu, 闪屏
`Screen_flickering `__
arch.conf开机引导的options项中添加\ ``i915.enable_psr=0``
no sound card
-------------
thinkpad x12 detachable, intel tiger cpu, 没有声音
.. code-block::
lspci -knn | grep -A2 audio
arch.conf开机引导的options项中添加\ ``snd_hda_intel.dmic_detect=0``
pacman segment fault
--------------------
将 /etc/pacman.conf 中的 XferCommand 注释掉
yay 提示 libalpm.so.13 库文件丢失\`
-----------------------------------
.. code-block::
sudo ln -sf /usr/lib/libalpm.so.14 /usr/lib/libalpm.so.13
nvidia闪屏
-----------
.. code-block::
xfconf-query -c xfwm4 -p /general/vblank_mode
xfconf-query -c xfwm4 -p /general/vblank_mode -s off