zoukankan      html  css  js  c++  java
  • 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 挨个去除所有的静音
    • 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

  • 相关阅读:
    HDU 5640 King's Cake
    HDU 5615 Jam's math problem
    HDU 5610 Baby Ming and Weight lifting
    WHU1604 Play Apple 简单博弈
    HDU 1551 Cable master 二分
    CodeForces659C Tanya and Toys map
    Codeforces 960E 树dp
    gym 101485E 二分匹配
    Codeforces 961E 树状数组,思维
    Codeforces Round #473 (Div. 2) D 数学,贪心 F 线性基,模板
  • 原文地址:https://www.cnblogs.com/seliote/p/9313690.html
Copyright © 2011-2022 走看看