Skip to content

ArchLinux Installation Guide

一. 安装ArchLinux

1. 下载ArchLinux 镜像

点击此处下载ArchLinux镜像,下载最新的ArchLinux 镜像即可

2. 制作系统盘

  • windows下使用rufus软件制作启动盘
  • linux下,使用dd命令制作启动盘
#格式化u盘,如若没有mkfs命令,则安装**dosfstools**∑
sudo mkfs.vfat /dev/sdb -I

启动盘制作好后,修改电脑boot sequence,设置从u盘启动

3. 连接网络

如果是电脑插了网线,且路由器DHCP开启,则可以跳过连接网络这一步。不确定自己有网可以通过执行ping [baidu.com](http://baidu.com) 来判断是否有网络

使用iwc连接wifi

1
2
3
4
5
iwctl          #打开联wifi工具
device list       #显示wifi网卡
station 网卡 scan     #扫描wifi
station 网卡 get-networks    #显示wifi列表
station 网卡 connect wifi名    #连wifi

4. 分区

分区建议如下,请根据实际情况进行分区。目前只分了boot和根目录

boot 系统引导分区;最好和根目录分开,如果要把该系统当主系统则建议 1G 以上
swap 交换分区;如果内存大 >=32G 可以不要,否则swap大小=内存大小
/ 系统分区;建议100G以上

查看磁盘设备路径 lsblk

mount list

给sda硬盘分区 cfdisk /dev/sdx sdx是你的硬盘路径,例如我的硬盘路径是/dev/nvme1n1

分完区后需要把刚才的分区格式化

1
2
3
4
mkfs.ext4 /dev/sdx          #把该分区格式化为ext4格式,一般用于格式化根目录和home等
mkfs.fat -F32  /dev/        #格式化boot分区
mkswap  /dev/               #格式化swap分区
swapon /dev/               #启用swap分区

5. 挂载系统目录

1
2
3
mount /dev/nvme1n1p7 /mnt      #挂载根目录
mkdir /mnt/nvme1n1p6               #创建boot文件夹
mount /dev/boot分区 /mnt/boot    #挂载boot分区

6.修改ustc源

1
2
3
vim /etc/pacman.d/mirrorlist
#在前面添加
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

mirrorlist

7. 安装系统

pacstrap /mnt base linux linux-devel linux-firmware vim iwd dhcpcd sudo networkmanager

8. 使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件

genfstab -U /mnt >> /mnt/etc/fstab
  • -U 以UUID生成 推荐
  • -L 以卷标生成

fstab

切换进新系统 arch-chroot /mnt

9. 修改主机名

1
2
3
4
5
6
7
vim /etc/hostname                    #在里面填写主机名

vim /etc/hosts
#写入:
127.0.0.1   localhost
::1         localhost
127.0.1.1   主机名.localdomain    主机名

10. 修改时区,同步时间

1
2
3
4
5
#修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#同步硬件时间
hwclock --systohc

11. 创建用户

1
2
3
4
5
passwd root                #设置root用户设置密码
groupadd mo                #添加用户组
useradd -mG mo moloom      #添加用户

sudo usermod -g mo moloom   #修改用户主要组为 mo
  • m 创建用户的同时创建用户家目录
  • G 选项后指定附加组
  • a 添加到xx组
  • r 不创建home目录

给新建用户添加加入sudo权限 EDITOR=vim visudo

找到%wheel ALL=(ALL) ALL 把前面的注释去掉并修改成 %mo ALL=(ALL) ALL

  • %mo —— 用户名或用户组,此处则代表是 mo 组,% 是用户组的前缀
  • ALL= —— 主机名,此处则代表在所有主机上都生效(如果把同样的 sudoers 文件下发到了多个主机上)
  • (ALL:ALL) —— (任意用户:任意用户组),此处则代表可以成为任意目标用户/用户组
  • 最后的 ALL —— 代表可以执行任意命令

Untitled

12. 设置语言

vim /etc/locale.gen 找到en_US.UTF-8和zh_CN.UTF-8,把前面的注释去掉

#切换语言
locale-gen
#把语言设置写入到配置文件中,后面进=正常进系统后,把如下改成zh_CN.UTF-8
echo LANG=en_US.UTF-8 >> /etc/locale.conf

#若中文显示不完全,设置左边中文,右边英文,需修改~/.config/plasma-localerc,把Formats下的zh_CN 改成 zh_CN.UTF-8,注销重启

# 安装zsh之后再执行下面步骤!!!

#修改zsh终端的输出info为英文
vim ~/.zshrc
#我这里是用的zsh,如果是bash则修改.bashrc;在前面添加下面这两行
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

13. 添加ArchLinuxCN源

vim /etc/pacman.conf 在文件最后面添加如下,添加一个就行,推荐ustc源

1
2
3
4
5
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch # 清华大学开源镜像站
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch # 哈尔滨工业大学开源镜像站
Server = https://repo.huaweicloud.com/archlinuxcn/$arch # 华为开源镜像站

pacman.conf

找到 Color ,把前面的注释取消掉,这样pacman输出时会有颜色高亮


1
2
3
4
5
6
pacman -Sy                       #更新数据库源
pacman -S archlinuxcn-keyring    #安装archlinuxcn秘钥
pacman-keyring --init            #初始化秘钥
pacman-keyring -- populate archlinuxcn  #同步秘钥
#安装yay包管理工具
pacman -S yay

14. 安装fcitx5或搜狗输入法

#安装字体,后面用苹方字体了,可以不用装!
sudo pacman -S noto-fonts noto-fonts-extra noto-fonts-emoji noto-fonts-cjk ttf-dejavu adobe-source-han-sans-cn-fonts
#安装sogou输入法,已不推荐。kde6推荐用下面的 fcitx5
sudo pacman -S fcitx fcitx-im kcm-fcitx fcitx-configtool fcitx-sogoupinyin

#fcitx5i配置
sudo vim ~/.xprofile
export XMODIFIERS=@im=fcitx
#export GTK_IM_MODULE=fcitx
#export QT_IM_MODULE=fcitx

#fcitx 5 
sudo pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-qt fcitx5-gtk fcitx5-configtool

#fcitx4 配置
sudo vim /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
INPUT_METHOD=fcitx
GLFW_IM_MODULE=ibus

#安装皮肤,安装完后,在系统设置->输入法->配置附加组件->经典用户界面,把主题改为 “微风”
sudo pacman -S fcitx5-breeze 

15. 安装KDE图形化界面、驱动

sudo pacman -Se plasma kde-accessibility kde-graphics kde-system kde-utilities ffmpegthumbs noto-fonts
yay -Rsn discover flatpak-kcm plasma-sdk yakuake netctl akonadi mariadb ristretto          #卸载多余软件

#安装cpu和显卡驱动
pacman -S intel-ucode             #安装Intel cpu编码 

#Intel核显驱动
pacman -S mesa  vulkan-intel        #Intel核心显卡驱动,用Intel核显就装,否则不用装
yay -S intel-gpu-tools              #安装intel核显工具包,intel_gpu_top命令可以查看核显状态
yay -S intel-media-driver libva-utils       #看视频的硬件加速器

#NVIDIA显卡驱动
sudo pacman -S nvidia-dkms nvidia-settings nvidia-utils     #nvidia显卡驱动,内核是普通版本就装这个
yay -S nvidia-lts nvidia-settings nvidia-utils opencl-nvidia        #NVIDIA显卡驱动,内核是 LTS 版本就装这个
sudo pacman -S  cuda cudnn    # Nvidia 计算加速库,可选

#编辑/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFAULT=""添加如下参数
nouveau.modeset=0 ibt=off
#编辑/etc/mkinitcpio.conf,找到MODULES,添加如下,然后运行grub-mkconfig,重新生成
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
#把kms 从 /etc/mkinitcpio.conf 里的HOOKS 数组中移除,
#并执行以下命令重新生成 initramfs。 这能防止 initramfs 包含 nouveau 模块,以确保内核在早启动阶段不会加载它。
sudo mkinitcpio -P

从核显切换到n卡,执行上面的n卡操作,安装驱动并配置后,在bios中切换启动输出为PCIE1,
不行的话,再执行sudo nvidia-xconfig 重新生成xorg配置文件重启试试,

#自启动sddm桌面环境
sudo systemctl enable sddm
#自启动网络、蓝牙
sudo systemctl enable NetworkManager bluetooth

#不确定kde-accessibility kde-graphics kde-system kde-utilities中是否有konsole,先安装一手,预防尴尬局面
yay -S konsole

ArchLinux对KDE的打包很差劲,像dolphin(文件管理器)、konsole(终端模拟器)、kate(文本编辑器)等关键组件都不在plasma包组中,而discover(运用商店)、flatpak-kcm(运用商店flatpak集成)、plasma-sdk(plasma开发工具)等无关紧要的东西却在plasma包组中。 kde-applications包组里有其他所有的KDE运用程序,但非常不主张装置这个包组,由于里面的东西太杂了,包括好多游戏、专业软件,以及两个阅读器。能够装置细分类别的包组,推荐kde-accessibility、kde-graphics、kde-system、kde-utilities,以及其他几个包:ffmpegthumbs、noto-fonts。

16. 安装grub引导

ArchLinux grub引导

重启电脑,进入BIOS,把启动项设置为ArchLinux

二. 配置系统及开发环境

开机进入桌面后,设置里面修改语言为中文,然后重启电脑

1. 配置苹方字体

苹方字体是苹果推出的字体 San Francisco ,该字体包从macOS中提取

#从自己云服务器拉取字体包
scp -P 7777 moloom@moloom.com:~/Resources/SanFrancisco.tar.gz ./
#解压缩
tar zxvf SanFrancisco.tar.gz
#复制配置文件到 /usr/share/fontconfig/conf.avail
sudo cp SanFrancisco/64-language-selector-prefer.conf /usr/share/fontconfig/conf.avail
#映射到 /usr/share/fontconfig/conf.default 下
sudo ln -s /usr/share/fontconfig/conf.avail/64-language-selector-prefer.conf /usr/share/fontconfig/conf.default/64-language-selector-prefer.conf
#复制字体到字体路径
cp -r SanFrancisco/PingFang SanFrancisco/SF-Mono SanFrancisco/SF-Pro ~/.local/share/fonts/SanFrancisco
#刷新字体缓存
sudo fc-cache -fv

去系统设置中设置字体

字体设置

2. 安装oh-my-zsh

#先安装zsh
yay -S zsh

#安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
#若访问不了,则可以执行以下语句试下,下载完后记得删掉!!!
sudo sh -c 'echo "185.199.108.133 raw.githubusercontent.com" >> /etc/hosts'

#更改默认终端
sudo vim /etc/passwd    ##找到当前用户名的那一行,把/bin/bash 修改成/bin/zsh

#安装 zsh 高亮插件
git clone https://gitee.com/hello-luiswu/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
#安装 zsh 命令补全插件
git clone https://gitee.com/hello-luiswu/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
#安装sudo插件,按两下ESC即可在命令前面添加 sudo
#autojump j 关键字 切换目录
yay -S zsh-sudo autojump

#启用插件,在.zshrc添加
sed -i '/^plugins=/c\plugins=(\n\tgit\n\tsudo\n\tnode\n\tpython\n\tautojump\n\thistory\n\tcommand-not-found\n\tzsh-autosuggestions \n\tzsh-syntax-highlighting\n)' ~/.zshrc

#配置alias
alias datee="date '+%Y-%m-%d %H:%M:%S:%3N'"
#向云服务器同步Documents文件
alias rspush="rsync --exclude-from='/home/moloom/Documents/rsync_exclude' -avr -e 'ssh -p 7777' /home/moloom/Documents  moloom@moloom.com:~/"
#从云服务器拉取文件到Documents
alias rspull="rsync -avr -e 'ssh -p 7777' moloom@moloom.com:~/Documents /home/moloom"
#alias neofetch="neofetch|lolcat"

2. 正确上网

clash for archlinux

3. 安装 aria2

安装aria2

1
2
3
yay -S aria2
#命令下载种子
aria2c "种子"

配置aria2,目录在 ~/.aria2/aria2.conf

1
2
3
4
5
6
7
8
#创建临时文件夹,等下任务完成可以删
md ~/1
#获取配置文件
git clone https://github.com/P3TERX/aria2.conf
#把下载下来的配置包移动到 ~/.aria2 目录下
mv -r ~/1 ~/.aria2

#在配置文件aria2.conf中修改自己的路径,rpc-secret

aria2加速路径,复制节点到bt-tracker选项下

创建守护进程 sudo vim /usr/lib/systemd/system/aria2c.service

[sudo] password for moloom: 
[Unit]
Description=Aria2c download manager
After=network.target

[Service]
User=moloom
Type=forking
ExecStart=/usr/bin/aria2c --conf-path=/home/moloom/.aria2/aria2.conf -D --enable-rpc

[Install]
WantedBy=multi-user.target

启动守护进程

sudo systemctl start aria2c.service

安装aria2 ui工具,报错的话注意看一下,如果是node.js版本过低的话,就yay -Ss nodejd-lts查查新版本node的包名,然后再安装就行。

yay -S ariang-native-electron-git

打开工具,点开AriaNG设置,在RPC那项中修改RPC地址为 127.0.0.1 ,否则连不上aria2。

4. 安装kvm虚拟机

4.1 安装 kvm 和 qemu

检测宿主机cpu是否支持虚拟化,如果flags里有vmx 或者svm就说明支持VT

grep -E "(vmx|svm)" --color=always /proc/cpuinfo

查看内核模块是否装载

lsmod | grep kvm
lsmod | grep virtio

手动加载内核模块

sudo modprobe virtio
sudo modprobe kvm

当前用户加入组kvm

sudo usermod -a -G kvm username /*username改为你的用户名*/

安装kvm相关软件

1
2
3
4
5
#安装qemu以及图形化客户端
sudo pacman -S qemu qemu-full
sudo pacman -S libvirt virt-manager
#安装网络相关软件
sudo pacman -S ebtables dnsmasq bridge-utils openbsd-netcat

设置授权 sudo vim /etc/polkit-1/rules.d/50-libvirt.rules 内容如下

1
2
3
4
5
6
7
/* Allow users in kvm group to manage the libvirt daemon without authentication */
polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage" &&
        subject.isInGroup("kvm")) {
            return polkit.Result.YES;
    }
});

加入 kvm 组

sudo usermod -a -G kvm moloom

启动虚拟机服务

1
2
3
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo systemctl start virtlogd

删除默认虚拟网络

1
2
3
4
5
#删除网络
sudo virsh net-destroy default

#彻底删除默认网络
sudo virsh net-undefine default

4.2 配置宿主机桥接网络

创建 bridge 虚拟设备

1
2
3
4
5
sudo vim /etc/systemd/network/30-MyBridge.netdev

[NetDev]
Name=br0
Kind=bridge

绑定 bridge 到网口,(用网线端口,wifi还没试过)

1
2
3
4
5
6
7
8
sudo vim /etc/systemd/network/30-bind.network

#我电脑网卡是enp6s0,ip a s 命令看
[Match]
Name=en*

[Network]
Bridge=br0

建立 bridge 网络

sudo vim /etc/systemd/network/30-mybridge.network

[Match]
Name=br0

#自动获取ip地址。值可以为 boolean,ipv4,ipv6
[Network]
DHCP=true    

#配置静态ip地址,和上面 dhcp 二选一即可
[Network]
DNS=192.168.0.1
Address=192.168.0.100/24
Gateway=192.168.0.1

启动新网络

#先关闭 dhcpcd 服务,arch一般都是用dhcpcd服务获取ip地址
sudo systemctl stop dhcpcd.service
#取消 dhcpcd 开机自启
sudo systemctl disable dhcpcd.service

#重新启动 systemd.network 服务
sudo systemctl restart systemd-networkd.service
#加入开机自启套餐
sudo systemctl enable systemd-networkd.service

#测试宿主机网络联通情况

授权给配置文件相应的文件,防止虚拟机访问网桥失败

sudo chmod u+s /usr/lib/qemu/qemu-bridge-helper

#修改权限
sudo chmod 666 /etc/qemu/bridge.conf

#添加 br0 虚拟 bridge设备,否则虚拟机识别不到
sudo vim /etc/qemu/bridge.conf

allow br0

#设置宿主机端口转发
sudo vim /etc/sysctl.d/30-ipforward.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv6.conf.all.forwarding = 1
#使配置文件生效
sudo sysctl -p /etc/sysctl.d/30-ipforward.conf

4.3 配置虚拟机网络

ubuntu23版本,DHCP自动获取

#使用 netplan 配置dhcp网络
#编辑文件,添加以下配置,enp1s0是网卡名称,实际根据 ip a s命令中的修改
sudo vim /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp1s0:
            dhcp4: true
    version: 2

#使修改的网络配置生效
sudo netplan apply

ubuntu23版本,配置静态ip,也是修改 /etc/netplan/50-cloud-init.yaml 文件

network:
    ethernets:
        enp1s0:                    ## network card name
            dhcp4: false
            addresses:
              - 192.168.0.177/24   ## set static IP
            routes:
              - to: default
                via: 192.168.0.1  ## gateway
            nameservers:   #dns服务器
              addresses: [192.168.0.1,192.168.1.1]
    version: 2

4.4 修改hugepage,提高虚拟机性能

cat /proc/meminfo 查看系统内存信息。

  • HugePages_Total:Hugepage总数;
  • HugePages_Free:Hugepage可用数量;
  • Hugepagesize:Hugepage一页的大小;

修改 Hugepagesize 的大小。

1
2
3
4
5
6
7
#编辑grub启动配置
sudo vim /etc/default/grub
#找到 GRUB_CMDLINE_LINUX ,添加如下参数
default_hugepagesz=1G

#修改grub配置文件后要重新生成grub
sudo grub-mkconfig -o /boot/grub/grub.cfg

分配 hugepage 个数。

1
2
3
sudo vim /etc/sysctl.d/40-hugepage.conf
#分配4个hugepage,占用内存=Hugepagesize * vm.nr_hugepages
vm.nr_hugepages=4

挂载 hugetlbfs ,大页分配以后要挂载 hugetlbfs 才可以使用。

1
2
3
4
5
#修改 fstab 文件,该文件开机自动挂载
sudo vim /etc/fstab

#挂载大内存页,虚拟机加速用
hugetlbfs       /dev/hugepages  hugetlbfs       mode=01770,gid=kvm        0 0

重启电脑。

KVM虚拟机的xml配置文件默认位于: /etc/libvirt/qemu/虚拟机名.xml。

也可以用 sudo virsh edit 虚拟机名 命令修改虚拟机xml文件,不过virsh默认使用 vi 编辑文件,如果没安装 vi ,建立 vi 软连接到 vim sudo ln -svf /usr/bin/vim /usr/bin/vi

修改虚拟机配置文件。

1
2
3
4
5
6
7
8
<domain>
    ....
//添加如下三行即可,它会按照设定的内存大小去占用 hugepage     <memoryBacking>
      <hugepages/>
    </memoryBacking>
    ......
</domain>

4.5 隐藏虚拟化

让虚拟机系统觉得是在实机上运行。 sudo virsh edit win10 修改虚拟机xml配置,在各个对应地方添加如下配置。

<!--linux系统不需要这个-->
<os>
  <smbios mode='host'/>
  ...
</os>
...
<features>
  <hyperv>
    ...
    <vendor_id state='on' value='123456789ab'/>
  </hyperv>
  <kvm>
    <hidden state='on'/>
    <hint-dedicated state='on'/>
  </kvm>
  ...
</features>
...
<cpu mode='host-passthrough'>
  ...
  <feature policy='disable' name='hypervisor'/>
</cpu>

4.6 qemu启动命令

qemu-system-x86_64 -name ubuntu23.10 \
-hda /run/media/mo/Installation/virtual_of_arch/ubuntu23.10 \
-m 1024 -mem-path /dev/hugepages \
-enable-kvm \
-cpu host \
-smp 2 \
-netdev bridge,br=br0,id=br0 \
-device virtio-net-pci,netdev=br0 \
-daemonize           #使虚拟机在后台运行

-display curses    #输出重定向到当前终端
-nographic         #不启动图形化界面,VGA 卡,只是关闭了 SDL 输出。
-vga type          #可用的选项为 std,qxl,vmware,virtio,cirrus 或 none
-device virtio-vga-gl   #启用3D加速,并用 -display sdl,gl=on 或 -display gtk,gl=on 在显示设备上启用 opengl 上下文,这两个选项分别适用于 sdl 输出和 gtk 输出。
#如果配置成功,在虚拟机里面输入 dmesg | grep drm ,会提示如下
[drm] pci: virtio-vga detected
[drm] virgl 3d acceleration enabled
#显卡加速设置详情看wiki:https://wiki.archlinuxcn.org/wiki/QEMU#SPICE

4.7 virsh管理虚拟机

最好是通过 virt-manager 图形化工具创建虚拟机,在用 virsh 命令管理虚拟机。

#检查虚拟机使用的磁盘文件
sudo virsh dumpxml vm-name 
#关闭虚拟机
sudo virsh shutdown vm-name
#如果shutdown命令无法关闭虚拟机,使用destroy命令强制关机
sudo virsh destroy vm-name
#查看虚拟机是否做过快照
sudo virsh snapshot-list --domain vm-name
#删除快照
sudo virsh snapshot-delete --domain vm-name --snapshotname 3sep2016u1
#删除虚拟机。它会清除虚拟机的配置,但不会删除虚拟机的镜像文件
sudo virsh undefine vm-name

5. 安装VMware

安装LTS内核,如果已经是LTS则不用安装

1
2
3
4
5
6
7
sudo pacman -S linux-lts linux-lts-headers
#移除最新版
sudo pacman -Rsn linux
#重新生成引导项
sudo grub-mkconfig -o /boot/grub/grub.cfg
#重启
reboot

安装 vmware-workstation,

#安装vm
yay -S vmware-workstation

#如果配置了上面的桥接就把vm网络关闭,如果没有则开启
#查看安装时的log
sudo vmware-modconfig --console --install-all
#关闭vm网络
sudo systemctl stopt vmware-networks.service
#关闭vm网络开机自启动
sudo systemctl disable vmware-networks.service

网络启动报错

sudo systemctl status vmware-networks.service
#查看vm网络状态,如下所示
Loaded: loaded (/usr/lib/systemd/system/vmware-networks.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2022-06-28 06:57:25 CEST; 31s ago
Process: 508 ExecStartPre=/sbin/modprobe vmnet (code=killed, signal=SEGV)
Process: 556 ExecStart=/usr/bin/vmware-networks --start (code=exited, status=1/FAILURE)
CPU: 60ms

Jun 28 06:57:25 x1gen10manjaro vmware-networks[556]: Failed to start DHCP service on vmnet1
Jun 28 06:57:25 x1gen10manjaro vmware-networks[556]: Failed to start NAT service on vmnet8
Jun 28 06:57:25 x1gen10manjaro vmware-networks[556]: Failed to enable hostonly virtual adapter on vmnet8
Jun 28 06:57:25 x1gen10manjaro vmware-networks[556]: Failed to start DHCP service on vmnet8
Jun 28 06:57:25 x1gen10manjaro vmware-networks[556]: Failed to start some/all services
Jun 28 06:57:25 x1gen10manjaro vmware-networks[556]: Started Bridge networking on vmnet0
Jun 28 06:57:25 x1gen10manjaro systemd[1]: vmware-networks.service: Control process exited, code=exited, status=1/FAILURE
Jun 28 06:57:25 x1gen10manjaro vmnetBridge[583]: Bridge process exiting.
Jun 28 06:57:25 x1gen10manjaro systemd[1]: vmware-networks.service: Failed with result 'exit-code'.
Jun 28 06:57:25 x1gen10manjaro systemd[1]: Failed to start VMware Networks.

#解决方法

#添加内核启动参数
sudo vim /etc/default/grub
#找到 GRUB_CMDLINE_LINUX_DEFAULT ,在双引号里面添加 ibt=off 
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 intel-iommu=on ibt=off  quiet"
#重启

虚拟机里面如果安装 VMware Tools 选项是灰色的,就在虚拟机配置里面添加一个CD/DVD,如下图所示,就可以正常安装vm tools

VM setting

在VM虚拟机中拷贝大型文件时,vm会把文件先拷贝到 ~/.cache/vmware/ 目录下。

共享文件夹配置

vm中开启了共享文件夹,如果虚拟机系统是 linux ,则用以下命令挂载

1
2
3
# shared-folder 是共享的文件夹名称
# /mnt/files    是挂载的目的地
sudo vmhgfs-fuse .host:/shared-folder /mnt/files -o allow_other -o uid=1000

6. 显卡直通

已安装成功的内核版本 6.1.54-1-lts ,vm版本 17.0.1-1 ;显卡直通教程点此处

显卡直通教程:https://ivonblog.com/posts/archlinux-gpu-passthrough/https://qqq.ninja/blog/post/vfio-on-arch/

进BIOS,开启VT-d虚拟化,进入系统,

#加载VMware内核模块 
sudo modprobe -a vmw_vmci vmmon 

#添加内核启动参数,开启YT-d虚拟化
sudo vim /etc/default/grub
#在 GRUB_CMDLINE_LINUX 中添加 intel-iommu=on      修复或导致黑屏可视添加 iommu=pt 试试
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 intel-iommu=on ibt=off  quiet"
#重新生成启动项,然后重启
sudo grub-mkconfig -o /boot/grub/grub.cfg

#重启后,看看启动日志检查一下IOMMU是否已启用
sudo dmesg | grep -e DMAR -e IOMMU

检查IOMMU组是否有效,执行以下脚本,获取结果

1
2
3
4
5
6
7
8
#!/bin/bash
shopt -s nullglob
for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do
    echo "IOMMU Group ${g##*/}:"
    for d in $g/devices/*; do
        echo -e "\t$(lspci -nns ${d##*/})"
    done;
done;

下图是以上脚本的执行结果,找到以VGA开头的,看看是不是自己的显卡型号

show support of GPU

添加VFIO到内核模块, sudo vim /etc/modprobe.d/vfio.conf ,在里面添加如下内容

1
2
3
4
5
6
7
8
#ids=后面是刚才查看的显卡的那些id,如上图绿框所示,如有多个值之间用,隔开
options vfio-pci ids=8086:a780
#options vfio-pci disable_idle_d3=1
#options vfio-pci disable_vga=1

#如果显卡group中有多个设备,有几个就在 ids 参数上添加几个。
#同理,kvm中添加PCI设备时,也要把显卡同一个组的多添加进去,
#例如nvidia显卡,group中有两个设备,一个是显卡,另一个设备则跟音频有关,这个音频输出到显示器

加载vfio,arch wiki文档链接,本方法适用intel核显,如果是NVIDIA或AMD显卡请看官方文档

#安装工具
yay -S mkinitcpio
#修改配置文件
sudo vim /etc/mkinitcpio.conf

#找到MODULES,在括号里面添加
vfio_pci vfio vfio_iommu_type1
#找到HOOKS,看括号里面是否有modconf,没有就添加

#添加到内核,ps:先按下一步安装LTS内核!!!
mkinitcpio -p linux-lts
#重新生成启动项
sudo grub-mkconfig -o /boot/grub/grub.cfg
#重启

7. 安装ssh

#安装ssh
yay -S openssh
#编辑配置文件
sudo vim /etc/ssh/sshd_config

#找到 Port ,修改端口号为 7777
Port 7777
#设置root账号不能密码登录
PermitRootLogin prohibit-password
#设置最大连接数
MaxSessions 10
#取消如下注释
AuthorizedKeysFile      .ssh/authorized_keys

#ssh命令
ssh -p 7777 10.243.138.26

8. 部署ftp

1
2
3
4
#安装vsftpd
sudo apt install vsftpd
#修改配置文件
sudo vim /etc/vsftpd.conf

9. 系统必备安装包

yay -S dosfstools                   #mkfs.fat工具
yay -S hdparm        #机械硬盘工具
yay -S unzip-natspec      #平替unzip软件,建议先卸载一下unzip。不需要指定字符集编码即可解决 Linux 下解压 zip 出现乱码的情况(无论是简体中文、繁体中文、日文)
yay -S zerotier-one      #组网工具,用法看 archwiki
ufw     #防火墙
7-zip   #7z 压缩包工具
fio     #测试硬盘io速度
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --size 20GB --bs=4m --iodepth=1 --readwrite=write
net-tools       # netstat 命令

yay -S remmina freerdp   #remmina远程工具,freerdp提供mstsc连接支持

#安装包:
tree ptree lolcat sl cowsay figlet downgrade 
grub efibootmgr  google-chrome firefox dolphin ranger ntfs-3g bluez bluez-utils docker docker-compose yt-dlp neofetch highlight lsof
figlet #字体变大工具,和cowsya类似

#配置chrome,如果是在wayland,必须配置
vim .config/chrome-flags.conf 
#--start-maximized
#--incognito
#强制加速
--enable-features=VaapiVideoDecodeLinuxGL
#启动原生wayland
--ozone-platform-hint=auto
#防止无法启用输入法
#--gtk-version=4
--enable-wayland-ime


#需要开机自启的软件: dhcpcd iwd sddm  bluetooth docker 

不进行更新程序名单
IgnorePkg = video-downloader visual-studio-code-bin intellij-idea-ultimate-edition-jre intellij-idea-ultimate-edition datagrip-jre datagrip clion-lldb clion-jre clion-gdb clion-cmake clion yt-dlp jdk-openjdk jre-openjdk jre-openjdk-headless vmware-workstation ariang-native-electron-git typora google-chrome

------------------------------------------------------------
yay -S nmap            #好用的端口扫描,安装了nmap也顺带安装了ncat
sudo pacman -S netdiscover              #内网服务扫描,命令如下
sudo netdiscover -i wlp4s0 -r 10.101.153.0/24

10. 配置快捷键

10.1 colorpicker 拾色器

colorpicker是arch自带的一个小插件,不是单独的软件,启动命令是 /usr/bin/plasmawindowed org.kde.plasma.colorpicker

快捷键设置

配置timeshift

打开 timeshift 图形化界面,点设定,配置如下图一样的规则,一定要包括 用户目录的隐藏文件!!!用户所有的配置都在里面。

timeshift 筛选文件夹

点击 “创建” 即会创建快照,还可以更改计划,最好每周有两三个快照。

三. 配置开发环境

1. JDK

1.1 安装 JDK

1
2
3
4
#安装最新版jdk,目前是jdk22,如果是按如上教材执行到这,那么你电脑此时应该把 jdk-openjdk 更新屏蔽了
yay -S jdk-openjdk
#安装jdk8
yay -S jdk8-openjdk

1.2 切换 JDK

archlinux 自带一个 archlinux-java 命令来切换jdk版本,命令很简单。

1
2
3
4
5
6
7
8
# 列出系统中已安装的 jdk
archlinux-java status
# 获取默认的 jdk
archlinux-java get
# 设置默认 jdk
sudo archlinux-java set java-22-openjdk
# 取消 jdk 设置
sudo archlinux-java unset java-22-openjdk

2. 安装idea、datagrip、clion

目前这三个软件的版本都是2022.2.4

IDEA地址 datagrip地址 CLion地址

以CLion为例:进入软件包详情界面;点击右边的查看更改;

clion包信息

找到2022.2.4版本;点击进去后来到如下界面;点击download后面的链接下载

包提交信息

解压下载的压缩包,并在解压后的目录内执行以下命令安装:

makepkg -s
sudo pacman -U *.pkg.tar.zst

特定版本禁止更新:vim /etc/pacman.conf 在 IgnorePkg = 中添加对应的包名,用空格分隔多个包名。

IgnorePkg = video-downloader visual-studio-code-bin intellij-idea-ultimate-edition-jre intellij-idea-ultimate-edition datagrip-jre datagrip clion-lldb clion-jre clion-gdb clion-cmake clion yt-dlp jdk-openjdk jre-openjdk jre-openjdk-headless vmware-workstation ariang-native-electron-git typora google-chrome

破解软件

Jetbrain激活教程

3. 安装 Visual Stdio Code

# 安装 vsc
yay -S visual-studio-code-bin
# 插件
remote-ssh
remote Explorer
Auto Close Tag
Dev Containers
Docker
Docker compose
Markdown All In One
Prettier
Symbol Masks
Vue Language Features
nginx configuration

3. 安装maven

maven包解压到 /opt 下,修改 conf 文件夹下的setting.xml,配置文件如下

Maven setting文件

配置环境变量

sudo vim /etc/profile

# 在最后追加这两行
export MAVEN_HOME=/opt/maven/apache-maven-3.6.0
export PATH=$MAVEN_HOME/bin:$PATH

# 重新加载配置文件
source /etc/profile

#IDEA中需要设置自己安装的maven

4. 初始化Git

git config --global user.name "name"         #引号里面输入你的名字
git config --global user.email "email"      #输入邮箱,邮箱要对应你github绑定的邮箱,否则提交时不会算到contribution里面
git config --global core.autocrlf false    #消除由于Windows和Linux平台中换行符的差异导致的问题
git config --global core.quotepath off     #消除由于路径或者是文件名包含中文导致的乱码问题
git config --global gui.encoding utf-8    #消除gui界面中文乱码问题(如果全程使用命令行的话不用担心这个问题)
ssh-keygen -t rsa -C "youremail"          #配置ssh的密钥,输完之后一路回车
eval `ssh-agent`               #启用ssh-agent
ssh-add ~/.ssh/id_rsa          #添加密钥
ssh-add -l                    #将它添加到已知的key列表中
cat ~/.ssh/id_rsa.pub          #把这个公钥添加到自己的Github账户上去

github token

1
2
3
4
#moloom-arch-laptop
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
#moloom-arch-desktop        NO Expiration
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

5. springboot项目添加log4j2日志插件

SpringBoot 引入log4j2

6. 安装 docker

7. 安装 Kubernetes

7.1 确保关闭 swap

1
2
3
4
5
6
# 查看 swap分区是否存在
cat /etc/fstab
free -h

# 关闭 swap,把下面路径的文件删除掉 swap 那行
/etc/fstab

7.2 加载需要的模块

sudo modprobe overlay
sudo modprobe br_netfilter
#查看模块是否被加载
sudo lsmod |grep br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF

#让配置生效
sudo sysctl -p

7.3 配置 ipvs 功能

yay -S ipset ipvsadm

#开机加载模块
sudo tee /etc/modules-load.d/modules.conf << EOF
br_netfilter
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF

7.4 安装 k8s 组件

1
2
3
4
5
sudo pacman -S kubelet kubeadm kubectl
sudo systemctl enable kubelet --now

# 指定要安装的版本
sudo downgrade kubelet kubectl kubeadm

7.5 加入集群

#  在已有集群控制平面上执行如下命令,它的结果作为 join命令的 token 值
kubeadm token create
# 这个 key 用于在其他 Control-Plane 之间安全地复制 CA 证书,它的结果作为 join命令的 certificate-key 值
sudo kubeadm init phase upload-certs --upload-certs
# 获取 CA 证书
kubeadm token create --print-join-command

# 加入集群,token的值是
sudo kubeadm join 192.168.1.180:6443 \
  --token su732g.nbax7zii7mty3k7x \
  --discovery-token-ca-cert-hash sha256:a1b597d058dd513fa4048e9e5f77f4a19a6479c7b63bffd917275686a3412547 \
  --control-plane --certificate-key 48cff6730c6e66e5547ad6ae0fc4a138153a2cd6758db4ae0a8eb28220385837 \
  --cri-socket=unix:///var/run/cri-dockerd.sock