在 Windows 里的虚拟机装了 archlinux,到了实验室开始正式使用实体机上的 archlinux,使用 i3 作为窗口管理器,遇到了很多坑。

与 Windows 共存

MBR

首先进入 GRUB 页面(即启动项选择页面按 c),执行

grub> ls -l # Get Windows boot 分区
grub> set root (hd0,msdos1) # For example
grub> chainloader +1 # Pass control to Windows boot loader
grub> boot

知道了 Windows 的启动分区以后就可以修改 GRUB 启动设置了。

# /boot/grub/grub.cfg

### BEGIN /etc/grub.d/30...###
menuentry 'Windows' {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,msdos1)'
    chainloader +1
}
### END ....  ###

UEFI

相比于 MBR,UEFI 整整难上了一个等级。也遇到了不少的坑。我的安装方式是直接空白磁盘安装 Win10 解决 UEFI 分区等问题,然后再安装 archlinux 做 grub 多重启动。

注意必须在 BIOS 里把 Secure Boot 给关掉!

安装时候选择 UEFI *** 的选项。不然会出现UEFI varible not found问题。

arch-chroot /mnt /bin/bash
mkdir /boot/efi
# EFI 分区在 /dev/sda2
mount /dev/sda2 /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --boot-directory=/boot/efi/EFI --recheck
cp /boot/efi/EFI/arch_grub/grubx64.efi /boot/efi/shellx64.efi
grub-mkconfig -o <boot-directory>/grub/grub.cfg
# Windows
grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# Output: 1ce5-7f28
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
# Output: --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1
# Add this code to /boot/efi/EFI/grub/grub.cfg
# menuentry "Microsoft Windows x86_64 UEFI-GPT" {
#    insmod part_gpt
#    insmod fat
#    insmod search_fs_uuid
#    insmod chain
#    search --fs-uuid --no-floppy --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
#    chainloader /efi/Microsoft/Boot/bootmgfw.efi
# }

网络

使用wifi-menu连接无线网络。连接以后会自动产生配置文件。

systemctl enable netctl-auto@<interface>.service

配置自动联网。

配置螺母楼 ipv6

#!/bin/bash
REMOTE_IP6="2402:f000:1:1501:200:5efe"
REMOTE_IP4="166.111.21.1"

IFACE4=`ip route show|grep default|sed -e 's/^default.*dev \([^ ]\+\).*$/\1/'`
IP4=`ip addr show dev $IFACE4 | grep -m 1 'inet\ ' | sed -e 's/^.*inet \([^ \\]\+\)\/.*$/\1/'`

sudo ip tunnel del sit1  # 删除已经创建的设备,若没有则忽略
sudo ip tunnel add sit1 mode sit remote $REMOTE_IP4 local $IP4
sudo ip link set dev sit1 up
sudo ip -6 addr add $REMOTE_IP6:$IP4/64 dev sit1
sudo ip -6 route add default via $REMOTE_IP6:$REMOTE_IP4 dev sit1

可能的网络问题

  • router 设置问题:没有 router 或者 router 不对导致 ipv6 速度非常慢
  • 没有获取到 ip
  • DNS 配置问题

窗口管理器

使用 i3 作为窗口管理器。

多显示器

sudo pacman -S arandr 使用 arandr 图形化配置显示器相对位置。

安装

yaourt -S i3-gaps i3lock i3status compton dmenu feh py3status xterm xorg xorg-xinit

其中 i3-gaps 是 i3 窗口管理器,i3lock 是锁屏工具,compton 用于窗口透明化、窗口动画等,feh 设置桌面背景,py3status 设置状态栏显示,xterm 为 Xorg 桌面终端模拟。

# font
yaourt -S wqy-microhei wqy-microhei-lite wqy-zenhei ttf-arphic-ukai ttf-arphic-uming adobe-source-han-sans-cn-fonts ttf-vista-fonts noto-fonts-emoji nodejs-emojione emojione-color-font ttf-google-fonts-git

配置

一共需要配置.xinitrc.config/i3/config.i3status.conf.zprofile.Xresources.compton.conf等文件

# .xinitrc
# 打开 xorg 自动运行 i3
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US
export LC_CTYPE=en_US.UTF-8

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

exec i3
# .zprofile
# shell 登录后自动运行 X
if [ -z "$TMUX" ] && [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then
  exec startx
fi
# .config/i3/config
# ...
# Last
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
#=============== 状态栏 ===============
bindsym $mod+m bar mode toggle
bar {
    i3bar_command i3bar -t
#    status_command i3status
    status_command py3status
    position bottom
    modifier Shift
    separator_symbol " | "

    colors {
        background #000000CC
        #statusline #000000FF
        separator #B8F788
        focused_workspace  #B8F788 #000000AA
        active_workspace   #FFFFFF #FFFFFFAA
        inactive_workspace #AAAAAA #000000AA #AAAAAA
        urgent_workspace   #E57B85 #000000AA
    }
}

#=============== 系统命令 ===============
set $mode_system  注销 (O) 关机 (S) 重启 (R) 取消 (Esc)
bindsym $mod+shift+q mode "$mode_system"
mode "$mode_system" {
    bindsym o exec i3-msg exit
    bindsym s exec systemctl poweroff
    bindsym r exec systemctl reboot
    bindsym Escape mode "default"
}
# Set lock png
bindsym Mod1+Shift+l exec --no-startup-id i3lock -i '/home/mickir/.lock.png'
# Set background jpg
exec_always --no-startup-id feh --bg-fill /home/mickir/.lock.jpg
exec i3-config-wizard
exec --no-startup-id compton -b
# Start fcitx
exec fcitx

输入法

安装

yaourt -S fcitx fcitx-configtool fcitx-im fcitx-cloudpinyin fcitx-sogoupinyin

问题

如果遇到输入栏黑色框是 compton 没开,阴影透明框是 compton 配置加的可以去掉,自行 google。

其他

文件管理器

yaourt -S thunar
# shell 的文件管理
yaourt -S ranger

浏览器

yaourt -S google-chrome

PDF 阅读

yaourt -S zathura zathura-pdf-poppler

声音

yaourt -S pamixer alsa-utils alsa-plugins

使用 alsamixer 配置声音

Ref