archlinux

制作启动u盘

下载archlinux iso

下载ventoy

刻录ventoy后,将ventoy分区格式化为ntfs。

直接将archlinux iso文件拷贝到ventoy分区。

还可以放入 clonezilla iso, gparted iso, winpe iso 等其他iso。

dd

linux 环境直接刻录u盘:

dd bs=4M if=archlinux.iso of=/dev/sdx status=progress && sync

windows

windows环境直接刻录u盘:

下载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

调整系统分区大小

e2fsck -f /dev/sda1
resize2fs /dev/sda1

新建efi分区

磁盘新建一个efi分区(假设为 /dev/sda5),类型为vfat,标识为 boot, esp ,大小例如1GB

/etc/fstab 示例

/dev/sda1           /   ext4        rw,relatime,stripe=128  0 1
/dev/sda5       /boot           vfat        defaults 0 2

连接无线网絡

wifi-menu

iwd

iwctl --passphrase <passphrase> station <device> connect <SSID>

安装系统

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源,同上节

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 连接到无线网络

pacman -Syu

数据包更新失败

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个连接

pacman -S aria2

在/etc/pacman.conf中指定

XferCommand = /usr/bin/aria2c -c -o %o %u

在/etc/makepkg.conf中指定DLAGENTS

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重启后时间乱跳

pacman -S ntp ntpdate asia.pool.ntp.org
timedatectl set-local-rtc 1
timedatectl status

UEFI 引导

配置 uefi Systemd-boot

用Systemd-boot取代GRUB作為Linux的bootloader

安装

pacman -S efibootmgr

安装/修复 EFI引导

进入archlinux live环境

mount /dev/sda1 /mnt
mount /dev/sda5 /mnt/boot
bootctl install --path=/mnt/boot

设置archlinux的EFI引导

blkid 查看 archlinux 根分区的PARTUUID。

编辑 /boot/loader/entries/arch.conf

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

default @saved
timeout 3
console-mode max

boot目录示例

$ 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

pacman -S xorg xorg-xinit consolekit

安装XFCE

pacman -S xfce4 xfce4-goodies xfce4-notifyd elementary-xfce-icons

进入X的配置,不然关机键老是灰的:编辑~/.xinitrc

exec ck-launch-session dbus-launch startxfce4

硬件驱动

声卡

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文件,添加以下两行:

index=1

热插拔(xfce4)

pacman -S ntfs-3g thunar-volman udisks2
pacman -S gvfs gvfs-afc gvfs-gphoto2 gvfs-mtp

配置 /etc/fstab,手动挂载磁盘

/dev/sdb1 /mnt/usb ntfs-3g noauto,users,permissions 0 0

挂载示例:

udisksctl mount -b /dev/sdc1

显卡

sudo pacman -S nvidia-dkms  nvidia-utils  lib32-nvidia-utils nvidia-prime

触摸屏

sudo pacman -S xf86-input-wacom

关闭触摸板

sudo pacman -S synaptics
sudo synclient TouchpadOff=1

输入法

pacman -S ibus-rime

$HOME/.bashrc中添加:

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中添加:

ibus-daemon -drx

郑码

git clone https://github.com/rime/plum
cd plum
bash rime-install lotem/rime-zhengma

编辑 ~/.config/ibus/rime/default.custom.yaml

patch:
  schema_list:
    - schema: zhengma
    - schema: terra_pinyin

中文环境

  • vim /etc/locale.gen,指定zh_CN.UTF-8

  • vim /etc/local.conf

LANG=zh_CN.UTF-8
LC_MESSAGES=zh_CN.UTF-8
  • 执行locale-gen

  • vim /etc/rc.conf

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

无线(netctl)

  • 安装: pacman -S net-tools wireless_tools wpa_supplicant netctl

  • 配置: 参考/etc/netctl/examples/

  • 新建一个/etc/netctl/athome配置(wpa)

wpa_passphrase athome athomepasswd查看psk,假设psk为xxxxxxxxxxxxx

INTERFACE=‘wlan0’ SECURITY=‘wpa’ ESSID=‘athome’ IP=‘dhcp’ KEY=”xxxxxxxxxxxxx

  • 新建一个/etc/netctl/atwork配置(wep)

INTERFACE=‘wlan0’ SECURITY=‘wep’ ESSID=atwork IP=‘dhcp’ KEY=“s:myatworkpasswd”

  • 开机启动

  • 移除开机启动

netctl enable athome

  • 手工启动

无线(wpa_supplicant)

安装

假设配置ESSID为mywireless,密码为mypasswd的无线

/etc/wpa_supplicant/wpa_supplicant.conf

手动修改wpa_supplicant.conf


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

rm /run/dhcpcd-\(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 \(ESSID key "s:\)PASSWD” dhcpcd $WLAN

vpn

  • 参考:archlinux pptp vpn拨号连接

  • 没看到arch下有/etc/ppp/ip-up.d目录,用以下脚本来启动vpn,我没有把它加为开机启动项,嗯。


#取网关地址 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等等

netctl 提示wpa无线连接失败,要看journal -xn等等

可以先禁用对应的网卡,再重新start,例如:

endhighlight %}

无线速度慢 wireless slow

参考Slow Wireless Intel 6235 (iwlwifi module)

/etc/modprobe.d/51-disable-6235-11n.conf

禁用 wifi 键盘灯 LED 闪烁

见:wireless led blink

/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

常用软件

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

cd /tmp
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si

安装deb包

yay -S debtap
sudo debtap -u
debtap xxx.deb
sudo pacman -U xxx.zst

Web: NGINX+PHP

%}

  • 以http(用户):http(组)启动fastcgi :

http -f /usr/bin/php-cgi

  • 配置/etc/nginx/conf/nginx.conf

index.html index.htm; }

location ~ .php$ { root /var/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME \(document_root\)fastcgi_script_name; include fastcgi_params; } {% endhighlight %}

  • 启动nginx: /etc/rc.d/nginx start

music

cue_splitting

bchunk

firefox 安装 flash 插件

  • 在 adobe 网站下载 flash player

  • 将其中的libflashplayer.so 复制到 ~/.mozilla/plugins/目录下

  • 执行 ldd ~/.mozilla/plugins/libflashplayer.so

virtualbox

参考: Install VirtualBox on Arch Linux

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版本:

archlinux-java status

切换java的版本:

archlinux-java set <JAVA_ENV_NAME>

steam

install

How to Play Games on Arch Linux Using Steam: A Complete Guide

在 /etc/pacman.conf 开启 multilib

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中添加配置:

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

挂载目录

sudo mount /home/xxx/.local/share/Steam/steamapps

play

启动steam,在设置项的兼容性中选择proton版本,一般可默认为proton experimental。

直接游玩相关游戏。

witcher 3

steam witcher3

Witcher 3需要特殊配置proton版本选8.0左右,右键属性中设置启动选项:

WINEDLLOVERRIDES="winmm,version=n,b" %command% --launcher-skip

效果一般,容易僵住

也可以尝试使用第三方的GE-Proton:

yay -S protonup-qt

系统备份

使用 clonezilla 备份/恢复 磁盘或分区

故障处理

KERNEL PANIC 恢复

  • 系统升级失败,重启提示kernel panic,switch_root : fail to …

  • 从live cd启动,将原来系统的根分区挂载到/mnt下,再用旧版glibc恢复

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, 没有声音

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 库文件丢失`

sudo ln -sf /usr/lib/libalpm.so.14 /usr/lib/libalpm.so.13

nvidia闪屏

xfconf-query -c xfwm4 -p /general/vblank_mode

xfconf-query -c xfwm4 -p /general/vblank_mode -s off