环境
Lenovo G50-70 BCM43142 网卡,Win10 原版镜像。
主板调成 EFI 启动,BIOS A=SATA Controller Mode 设置为 AHCI。
Rufus 制作 Win10 启动盘,Rufus 制作 Arch 启动盘。
Win 10 安装
按左边电源边的小按钮,选择 Boot Menu,选择 EFI USB Device。
进入 Win10 安装界面,一路下一步,直到分区。
Shift+Fn+F10 调出命令行:
diskpart
启动分区管理工具list disk
列出磁盘Select disk n
选中磁盘(n是磁盘号,我这里是0)clean
清除磁盘数据convert gpt
磁盘转换为gpt格式exit
退出分区管理工具exit
退出命令行
在可视化分区管理处刷新,然后进行分区。
然后选中作为 C 盘下一步。
接下来傻瓜式下一步安装即可。
Arch 安装
更新
之前在 pacstrap 安装基础系统之前要手动添加源
vim /etc/pacman.d/mirrorlist
添加源
# 文件头加入阿里源
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch
但是在 2020.9 之后,引入了 reflector,这玩意联网之后就会按默认配置自动去更新 mirrolist,但是默认的配置在国内有些根本访问不稳,systemd 就有概率会在安装的中途报错,所以现在在联网之前,先编辑一下 reflector 的配置,后面也就省去手动加源了,而且这玩意有个 timer systemd... 报错报一串,安装好后也会搞事情
vim /etc/xdg/reflector/reflector.conf
--save /etc/pacman.d/mirrorlist
--country China
--protocol https
--latest 5
--sort rate
连接 WiFi
如果使用的是网线连接就跳过此步骤。
rfkill unblock all
ip link
查询无线网卡名称,比如这里是 wlan0ip link set wlan0 up
wpa_supplicant -B -i wlan0 -c <(wpa_passphrase ${SSID} ${PASSWORD})
连接 WiFi,${SSID}
${PASSWORD}
分别为 WiFi SSID 与密码
安装系统
ping -c 3 archlinux.org
验证网络是否连通timedatectl set-ntp true
更新时间lsblk
列出磁盘fdisk /dev/sda
对 /sda 进行分区,#
后面为相关命令的解释,这里没有分 EFI 分区,因为是双系统,和 Win 共用 /dev/sda2
# 交换分区
n
回车
回车
+4G
# 根目录
n
回车
回车
+60G
# /home 分区
n
回车
回车
回车
# 完成分区
w
PS: 如果是单系统就多分一个分区格式化为 mkfs.vfat -F32 /dev/sdax
- 格式化上面的分区
mkswap /dev/sda8
mkfs.ext4 /dev/sda9
mkfs.ext4 /dev/sda10
- 挂载分区
# 挂载根分区
mount /dev/sda9 /mnt
# 开启交换分区
swapon /dev/sda8
# 挂载 /home 分区
mkdir /mnt/home
mount /dev/sda10 /mnt/home
# 挂载 EFI 分区,这里用的是 Win 的
mkdir -p /mnt/boot/efi
mount /dev/sda2 /mnt/boot/efi
pacstrap /mnt base linux linux-firmware
安装基本系统genfstab -U /mnt >> /mnt/etc/fstab
生成 fstabarch-chroot /mnt
切换到新系统pacman -S vim
装 vimln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置时区- 删除 /etc/locale.gen 中需要使用的行前的注释符
#
,建议使用en_US.UTF-8 UTF-8
locale-gen
生成 locale 信息echo LANG=en_US.UTF-8 > /etc/locale.conf
创建 locale.confecho studio > /etc/hostname
修改主机名vim /etc/hosts
修改 /etc/hosts 如下
127.0.0.1 localhost
::1 localhost
127.0.1.1 studio.localdomain studio
passwd
设置 root 密码- 安装 grub 引导
pacman -S dosfstools grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck
grub-mkconfig -o /boot/grub/grub.cfg
vim /etc/pacman.conf
加入 cn 源
[archlinuxcn]
Server = https://mirrors.aliyun.com/archlinuxcn/$arch
pacman -Syy
更新源pacman -S linux-headers broadcom-wl-dkms rfkill dhcpcd
安装无线网卡驱动systemctl enable dhcpcd
开启 dhcpcduseradd -m -s /bin/bash seliote
创建一个普通用户passwd seliote
修改密码pacman -S xorg xorg-server xorg-xinit xf86-video-ati xfce4 xfce4-screensaver xdg-user-dirs sddm wqy-zenhei network-manager-applet
安装 X Window 及其相关的systemctl enable sddm
开启 sddmsystemctl enable NetworkManager
开启 NetworkManagervim /etc/xdg/user-dirs.defaults
把 xfce4 会生成的文件夹都改成小写命名,命名不一致太难受了exit
安装完成,退出 chrootumount -R /mnt
卸载挂载的分区poweroff
关机
其他配置
vim /boot/grub/grub.cfg
Grub 中添加 Windows 引导
# grub-probe --target=fs_uuid $esp/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi 获取 UUID
# grub-probe --target=hints_string $esp/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi 获取 hints_string
# 在行 ### END /etc/grub.d/10_linux ### 前加入,将其中 $hints_string 与 $UUID 替换为前文得到的
menuentry 'Windows 10' {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --set=root $hints_string $UUID
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
rmmod pcspkr
echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf
去除烦人的 beep 声vim /etc/asound.conf
去除静音
defaults.pcm.card 1
defaults.pam.device 0
defaults.ctl.card 1
pacman -S alsa-utils
安装声卡管理器alsamixer
按 F6 选择第二个声卡(第三行),按 m 挨个去除所有的静音pacman -S xfce4-netload-plugin xfce4-screenshooter
安装几个 xfce 插件,网速以及截图- Setting -> KeyBoard -> Application Shortcuts 设置几个快捷方式,
amixer set Master 100%-
静音键,amixer set Master 5%+
音量加,amixer set Master 5%-
音量减,xfce4-screenshooter -m -r -s /home/seliote/pictures/screenshooter/
截图键(记得mkdir pictures/screenshooter
),xflock4
是锁屏键 timedatectl set-local-rtc 1
解决双系统时钟错乱的问题,Win 的方式感觉更合理,所以这里修改了 Linux 的pacman -S openssh
安装 SSHvim /etc/ssh/sshd_config
查找ClientAliveInterval
,修改为ClientAliveInterval 10
,保持 SSH 心跳,避免断开- 安装 haveged 生成熵,并安装 keyring
pacman -S haveged
systemctl start haveged
systemctl enable haveged
rm -fr /etc/pacman.d/gnupg
pacman-key --init
pacman-key --populate archlinux
pacman -S archlinux-keyring
pacman -S archlinuxcn-keyring
# 如果 cn-keyring 签名还报失败就执行下面的,然后重装 cn 的
pacman-key --populate archlinuxcn
pacman -S sudo
安装 sudo,export EDITOR=vim
visudo
配置一下普通用户pacman -S fcitx-im fcitx-configtool
安装中文输入法,选择依赖的时候那几个 gtk 的和 qt 的都需要装,否则会没有输入框,安装完成后重新登录,右键右上角输入法标志,进入 configuration,左下角加号,取消勾选 Only Show Current Language,添加 Pinyin Chinese-China,默认的 English 需要留下,否则输入不了英文,再设置一下环境变量vim /etc/profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
vim ~/.bashrc
设置 bash
alias ll='ls -alh --color=auto'
alias grep='grep --color=auto'
PMT_COLOR="[$(tput bold)$(tput setab 0)$(tput setaf 2)]"
PMT_RESET="[$(tput sgr0)]"
export PS1="${PMT_COLOR}u A w >>>${PMT_RESET} "
vim ~/.vimrc
配置 vim
set mouse=v
set number
set ts=4
set expandtab
set autoindent
syntax on
set hlsearch
set nowrapscan
- 这里补一个控制台连接 WiFI 的步骤,如果没有 X Window 的话就用这个,
pacman -S dialog wpa_supplicant
rfkill unblock all
ip link
ip link set wlp2s0 down
wifi-menu
选择并配置,以后使用的话是ip link set wlp2s0 down
wifi-menu
,重新连接是rfkill unblock all
ip link set wlp2s0 up
wifi-menu
软件配置
- 安装 Chrome
sudo pacman -S google-chrome
- 安装 MarkDown、PDF、epub 工具
sudo pacman -S retext zathura zathura-pdf-mupdf
- 安装 JDK:
sudo pacman -S jdk-openjdk
,java -version
看一下,当然也可以装其他版本,jdk8-openjdk 这个包是 JDK 8,archlinux-java 后面可以切换,android-sdk 不支持 Java 8+ 的,慎重 - 安装 MariaDB
sudo pacman -S mariadb
,sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
执行自安装程序,sudo systemctl start mysqld
启动一把,sudo mysql_secure_installation
安全启动,配置一下即可 - 也可以用 PostgreSQL
sudo pacman -S postgresql
sudo -iu postgres
[postgres@studio ~]$ initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data
[postgres@studio ~]$ exit
sudo systemctl start postgresql
- 安装 Tomcat9
sudo pacman -S tomcat9
,Intellij IDEA 启动会报错,arch 官方提供的sudo gpasswd -a seliote tomcat9
并不起作用,还要改一下权限sudo chmod -R 655 /etc/tomcat9
- 安装 Intellij IDEA
sudo pacman -S intellij-idea-ultimate-edition intellij-idea-ultimate-edition-jre
intellij-idea-ultimate-edition-jre 要装,不然 JDK8 打不开 MarkDown,不是 8 或者 11,Intellij IDEA 都会打不开 - 安装 Android Studio
sudo pacman -S android-studio
sdk 进去之后最好让 AS 自己下,当然源里也是有的,一些其他问题的解决:
# 模拟器启动不了
sudo ln -sf /usr/lib/libstdc++.so.6 ~/Android/Sdk/emulator/lib64/libstdc++/libstdc++.so.6
# 真机调试,手机打开USB调试
sudo pacman -S android-tools android-udev
sudo usermod -a -G adbusers seliote
sudo gpasswd -a seliote adbusers
# 报错 Emulator: /home/seliote/Android/Sdk/emulator/qemu/linux-x86_64/qemu-system-x86_64: error while loading shared libraries: libpulse.so.0: cannot open shared object file: No such file or directory
sudo pacman -S libpulse
- 视频播放器
sudo pacman -S vlc
- 安装 TeamViewer
sudo pacman -S teamviewer
使用前要sudo systemctl start teamviewerd
- LibreOffice 太废了,MS Office 这玩意还是切系统搞吧
- Kafka Minio:
sudo pacman -Ss base-devel yaourt
yaourt -S kafka
sudo pacman -S minio
其他软件都是随手装了,没什么好记录的了
滚挂了修复
2019.01.02 系统滚挂了,wifi_menu
提示 no network found。距离上次安装正好差一个月一年,记录一下修复过程。
查看更新记录,寻找可能导致滚挂的包 $ sudo vim /var/log/pacman.log
,比如这里日志的 [2019-01-02 11:48] [ALPM] upgraded wpa_supplicant (1:2.6-12 -> 1:2.7-1)
如果之前没有删过缓存包的话 $ sudo pacman -U /var/cache/pacman/pkg/....
即可回滚,可惜我删了。
电脑插上网线或者手机共享一下网络
去 这里 找旧版的 tar.gz 并下载,解压 $ tar -zxvf packages-aaccde99f510add8851ca05febe9cca64406a27d.tar.gz
进入子目录 $ cd packages-aaccde99f510add8851ca05febe9cca64406a27d/repos/core-x86_64/
尝试打包 $ makepkg
,我这里报错 ==> ERROR: One or more PGP signatures could not be verified!
签名不对,那就别校验了,$ makepkg --skippgpcheck
安装打包后的软件 $ sudo pacman -U wpa_supplicant-1:2.6-12-x86_64.pkg.tar.xz
重启测试一下 WiFi 能不能用了,OK 后忽略这个软件包的升级,$ vim /etc/pacman.conf
添加或新增 IgnorePkg = wpa_supplicant
其他
做完 ARCH 镜像后 U 盘会出问题,Win 下cmd, diskpart, list disk, select disk n, clean, 然后打开计算机右键管理,磁盘管理,右键磁盘,新建简单卷,然后下一步就 OK
如果是单 linux 的话加个 vfat 分区来引导,mkfs.vfat -F32 /dev/sda1