Arch + Win10 EFI 引导重装记录

环境

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 查询无线网卡名称,比如这里是 wlan0
  • ip 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 生成 fstab
  • arch-chroot /mnt 切换到新系统
  • pacman -S vim 装 vim
  • ln -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.conf
  • echo 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 开启 dhcpcd
  • useradd -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 开启 sddm
  • systemctl enable NetworkManager 开启 NetworkManager
  • vim /etc/xdg/user-dirs.defaults 把 xfce4 会生成的文件夹都改成小写命名,命名不一致太难受了
  • exit 安装完成,退出 chroot
  • umount -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 挨个去除所有的静音
  • 蓝牙相关,安装协议栈与工具包,sudo pacman -S bluez bluez-utils blueman,查看一下蓝牙模块的状态 sudo modinfo btusb,启动一下 systemd sudo systemctl start bluetooth && sudo systemctl enable bluetooth,解除 rfkill 禁用 sudo rfkill unblock all,加一下权限组,方便连接到蓝牙范围 sudo usermod -a -G lp seliote,BCM43142 的蓝牙驱动还是有问题,可以通过 sudo dmesg | grep Bluetooth 看到报错
...
Bluetooth: hci0: BCM43142A0 'brcm/BCM43142A0-105b-e065.hcd'
Bluetooth: hci0: BCM43142A0 'brcm/BCM-105b-e065.hcd'
Bluetooth: hci0: command "0x1003" tx timeout

上文是相关的驱动程序相关的版本,尝试加载了两个版本的驱动都没有成功,去 GitHub 找到对应版本的驱动,下载后复制过去即可 sudo cp BCM43142A0-105b-e065.hcd /lib/firmware/brcm/,重启,右上角已经可以连接了

  • 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 安装 SSH
  • vim /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-openjdkjava -version 看一下,当然也可以装其他版本,jdk8-openjdk 这个包是 JDK 8,archlinux-java 后面可以切换,android-sdk 不支持 Java 8+ 的,慎重
  • 安装 MariaDB sudo pacman -S mariadbsudo 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

posted @ 2018-07-15 15:26  seliote  阅读(966)  评论(0编辑  收藏  举报