From bfa4d940333a067e5c15c62d05c093b7b77ecc6f Mon Sep 17 00:00:00 2001 From: zlicdt Date: Sat, 7 Sep 2024 18:16:49 +0800 Subject: [PATCH] Site updated: 2024-09-07 18:16:48 --- 2024/01/19/gpg-tourial/index.html | 4 +- 2024/08/12/why-choose-mac/index.html | 4 +- 2024/08/21/git-guide/index.html | 6 + .../08}/archlinux-installation/index.html | 107 +++++++++++------- archives/2024/{06 => 09}/index.html | 6 +- archives/2024/index.html | 12 +- archives/index.html | 12 +- categories/Software/index.html | 4 +- categories/index.html | 2 +- index.html | 84 +++++++------- local-search.xml | 42 +++---- sitemap.txt | 2 +- sitemap.xml | 38 +++---- tags/Linux/index.html | 4 +- 14 files changed, 176 insertions(+), 151 deletions(-) rename 2024/{06/01 => 09/08}/archlinux-installation/index.html (69%) rename archives/2024/{06 => 09}/index.html (98%) diff --git a/2024/01/19/gpg-tourial/index.html b/2024/01/19/gpg-tourial/index.html index b626ecc..0a15307 100644 --- a/2024/01/19/gpg-tourial/index.html +++ b/2024/01/19/gpg-tourial/index.html @@ -428,9 +428,9 @@

- + - Arch Linux 安装教程 + 为什么选择 Mac 上一篇 diff --git a/2024/08/12/why-choose-mac/index.html b/2024/08/12/why-choose-mac/index.html index 4e8bd91..eed609d 100644 --- a/2024/08/12/why-choose-mac/index.html +++ b/2024/08/12/why-choose-mac/index.html @@ -417,8 +417,8 @@

总习

- - Arch Linux 安装教程 + + GPG 入门教程 下一篇 diff --git a/2024/08/21/git-guide/index.html b/2024/08/21/git-guide/index.html index b010ea6..25e6fc8 100644 --- a/2024/08/21/git-guide/index.html +++ b/2024/08/21/git-guide/index.html @@ -452,6 +452,12 @@

+ + + Arch Linux 安装教程 + 上一篇 + +

diff --git a/2024/06/01/archlinux-installation/index.html b/2024/09/08/archlinux-installation/index.html similarity index 69% rename from 2024/06/01/archlinux-installation/index.html rename to 2024/09/08/archlinux-installation/index.html index 898a5a4..66f3f64 100644 --- a/2024/06/01/archlinux-installation/index.html +++ b/2024/09/08/archlinux-installation/index.html @@ -22,7 +22,7 @@ - + @@ -30,8 +30,8 @@ - - + + @@ -228,8 +228,8 @@ @@ -240,7 +240,7 @@ @@ -251,7 +251,7 @@ - 21 分钟 + 28 分钟 @@ -295,26 +295,38 @@

Arch Linux 安装教程

此文章适用于现代(2010年及以后)的x86_64机器

-

用了这么长时间Arch,总该写一篇安装教程了。
截至教程发布日,Arch Linux Live CD的最新版本是2024年5月的,经测试没有问题。

-

支持的硬件

·x86_64架构的CPU,建议为2008年以后的CPU
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动11月的Live CD)
·可用的网络连接
·20GB可用的硬盘空间

+

截至教程发布日,Arch Linux Live CD的最新版本是2024年9月的,测试无误。

+

支持的硬件

·x86_64架构的CPU,建议为2008年以后的CPU,比如 Intel Core i系列之后的以及AMD FX
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动如今的Live CD)
·可用的网络连接
·20GB可用的硬盘空间

具体步骤

制作安装介质

  1. 到镜像站去下载最新的Arch Linux Live CD iso ->
    https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
  2. 使用工具将其写入到USB驱动器或者刻录光盘(不建议)
    推荐写入工具balenaEtcher
  3. 重启后按主板厂商的指引设置USB启动或选择USB启动(若失败请先关闭安全启动[^1])
  4. 从USB驱动器引导后就进入了Live CD环境
+

定义环境变量(可选)

很多命令都需要更改为你自己的设置。
因此为了方便(可以直接复制我的),我们在此处先定义一些环境变量。

+

这些环境变量的定义需要你在等号=后面输入要输入的信息。

+

首先,是你要连接的 WIFI 名字,也就是 SSID:

+
1
export SSID=
+

然后是它的密码:

+
1
export WIFI_PASSWORD=
+

新建的用户名字:

+
1
export NEW_USERNAME=

Live CD设置

    -
  1. 连接网络 ->
    WIFI:
    1
    2
    3
    4
    iwctl station wlan0 scan
    iwctl station wlan0 get-networks
    iwctl station wlan0 connect $SSID --passphrase $PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
    ip addr
    +
  2. 连接网络 ->
    WIFI:
    1
    2
    3
    4
    iwctl station wlan0 scan
    iwctl station wlan0 get-networks
    iwctl station wlan0 connect $SSID --passphrase $WIFI_PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
    ip addr
    如果直接插网线的话上面的步骤可以跳过

    如果没有wlan0的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(

    ip addr返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。
    可选:停止reflector服务,防止/etc/pacman.d/mirrorlist被写入其他地区镜像 ->
    1
    systemctl stop reflector.service
  3. -
  4. 配置镜像
    由于结界,我们无法直接从结界外部的镜像站获取软件包。在Live CD内也无法使用魔法绕过结界,所以步前辈们的足迹,使用他们搭建好的国内镜像站(注意:这一步须在reflector.service停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist会被它重写) ->
    1
    vim /etc/pacman.d/mirrorlist
    +
  5. 配置镜像
    国内网络环境懂得都懂,用镜像(注意:这一步须在reflector.service停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist会被它重写) ->
    1
    vim /etc/pacman.d/mirrorlist
    • 在文件开头按i进入insert模式,添加Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
    • esc退出insert模式,输入:wq保存并退出vim
  6. +
  7. (可选)ssh 远程连接
    远程访问,可以直接复制命令。
    1
    ip a
    + 看 wlan0(如果是 WIFI 连接)下面的信息,这里会显示联网后本机在局域网内被分配的ip地址。记下它。
    然后我们设置这台机器 root 用户的密码:
    1
    passwd
    + 这里随便设一个,只要你能记住。
    我这里假设这台机器的ip是 192.168.101.12,于是在另一台在同一个局域网的机器上,执行
    1
    ssh root@192.168.101.12
    + 然后按提示,输入yes,再输入刚才设置的密码,就可以连接了。

磁盘相关

  1. 磁盘分区 ->
  2. 创建swapfile ->
    -

    这里swap创建为8G,可根据需要改变count=后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。

    +

    swap的用途是在内存不足时,将硬盘的一部分作为内存的扩展空间使用。这里swap创建为8G,可根据需要改变count=后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。

    1
    2
    3
    4
    dd if=/dev/zero of=/mnt/swapfile bs=1M count=8192
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile

安装系统

  1. 安装软件包 ->
    首先初始化keyring!!
    1
    pacman -Sy archlinux-keyring
    -

    使用KDE Plasma作桌面环境的系统

    pacstrap安装必要的包
    1
    pacstrap /mnt base linux linux-firmware linux-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim plasma konsole dolphin noto-fonts-cjk noto-fonts noto-fonts-emoji noto-fonts-extra fcitx5-chinese-addons chromium fastfetch htop
    -

    使用GNOME作桌面环境的系统

    1
    pacstrap /mnt base linux linux-firmware linux-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim gnome noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ibus ibus-libpinyin chromium fastfetch htop
    -

    使用命令行界面的系统(Headless)

    这是我的习惯 ->
    1
    pacstrap /mnt base linux linux-firmware linux-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim fastfetch htop
    +

    使用KDE Plasma作桌面环境的系统

    pacstrap安装必要的包
    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim plasma konsole dolphin noto-fonts-cjk noto-fonts noto-fonts-emoji noto-fonts-extra fcitx5-chinese-addons chromium fastfetch htop
    +

    使用GNOME作桌面环境的系统

    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim gnome noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ibus ibus-libpinyin chromium fastfetch htop
    +

    使用命令行界面的系统(Headless)

    这是我的习惯 ->
    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim fastfetch htop tmux

  2. 生成fstab ->
    1
    genfstab -U /mnt >> /mnt/etc/fstab
  3. chroot到新系统 ->
    1
    arch-chroot /mnt

初步配置系统

  1. 时间设置 ->
    1
    2
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    hwclock --systohc
  2. -
  3. 用户设置 ->
    1
    2
    3
    echo 主机名 > /etc/hostname
    useradd -m 用户名 -G wheel
    passwd 用户名
    +
  4. 用户设置 ->
    1
    2
    3
    echo archlinux > /etc/hostname
    useradd -m $NEW_USERNAME -G wheel
    passwd $NEW_USERNAME

    useradd用于添加账户,passwd用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。

  5. 编辑sudoers ->
    1
    visudo
    - 将文件中的# %wheel ALL=(ALL:ALL) ALL(大概率在第108行)的注释取消,使得wheel组里的用户可以使用sudo
  6. + 将文件中的# %wheel ALL=(ALL:ALL) ALL(大概率在第114行,使用vim:114跳转)的注释取消,使得wheel组里的用户可以使用sudo
  7. 配置zsh ->

    zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。
    如果不喜欢zsh,或者考虑兼容性,请跳过这一步。

    -
    1
    2
    3
    4
    5
    su 用户名
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git ~/.oh-my-zsh
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    chsh -s /bin/zsh
    exit
  8. +
    1
    2
    3
    4
    5
    su $NEW_USERNAME
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git ~/.oh-my-zsh
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    chsh -s /bin/zsh
    exit
    + 这里使用了清华大学的 git 镜像,如果网络条件允许可以换成https://github.com/ohmyzsh/ohmyzsh
  9. 本地化 ->
    1
    2
    3
    echo "LANG=\"en_US.UTF-8\"" >> /etc/locale.conf
    sed -i "s@#zh_CN.UTF-8 UTF-8@zh_CN.UTF-8 UTF-8@g" /etc/locale.gen
    sed -i "s@#en_US.UTF-8 UTF-8@en_US.UTF-8 UTF-8@g" /etc/locale.gen
    - 去掉#zh_CN.UTF-8 UTF-8#en_US.UTF-8 UTF-8的注释符号“#
    最后运行 ->
    1
    locale-gen
  10. + 此处命令意为去掉#zh_CN.UTF-8 UTF-8#en_US.UTF-8 UTF-8的注释符号“#
    最后运行 ->
    1
    locale-gen
  11. 服务设置 ->
    1
    2
    3
    4
    systemctl enable NetworkManager
    systemctl enable sshd
    systemctl enable sddm # KDE
    systemctl enable gdm # GNOME
  12. 引导设置 ->
    gurb已支持引导Windows。
    可以让grub找到Windows。
    1
    sudo pacman -Sy ntfs-3g fuse os-prober
    对于UEFI引导的安装方式
    1
    2
    3
    grub-install --target=x86_64-efi --efi-directory=/boot/efi
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg

    对于BIOS引导的安装方式
    1
    2
    3
    grub-install /dev/nvme0n1
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg
  13. @@ -394,7 +407,7 @@

    1
    sudo vim /etc/pacman.conf
    加入以下文本 ->
    1
    2
    [archlinuxcn]
    Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
    然后获取keyring ->
    -

    近期这一步会出现问题,因为archlinuxcn 社区源的 keyring 包 archlinuxcn-keyring 由 farseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自12月初 archlinux-keyring 中删除了一个退任的 master key (https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/issues/246) 导致 farseerfc 的 key 的信任数不足,由 GnuPG 的 web of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。(转自Arch Linux CN Telegram Messages Channel)

    +

    (2024.9.7测试问题已解决)近期这一步会出现问题,因为archlinuxcn 社区源的 keyring 包 archlinuxcn-keyring 由 farseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自12月初 archlinux-keyring 中删除了一个退任的 master key (https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/issues/246) 导致 farseerfc 的 key 的信任数不足,由 GnuPG 的 web of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。(转自Arch Linux CN Telegram Messages Channel)

    如果你在新系统中尝试安装archlinuxcn-keyring包时遇到如下报错:
    1
    error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust
    请使用以下命令在本地信任 farseerfc 的 key 。此 key 已随archlinux-keyring安装在系统中,只是缺乏信任:
    1
    sudo pacman-key --lsign-key "farseerfc@archlinux.org"
    @@ -405,27 +418,39 @@

    显卡驱动

    如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了
    而N卡,需要进行以下步骤

    -

    查看显卡型号

    1
    lspci -k | grep -A 2 -E "(VGA|3D)"
    +

    查看显卡型号

    1
    lspci -k | grep -A 2 -E "(VGA|3D)"

    GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核)

    Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包)

    更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau

    -

    安装驱动

    1
    sudo pacman -S nvidia nvidia-settings
    +

    安装驱动

    1
    sudo pacman -S nvidia-open-dkms nvidia-settings

    后续

    安装 NVIDIA 官方的驱动之后,需要编辑/etc/mkinitcpio.conf,在 HOOKS 一行删除kms并保存
    然后执行

    -
    1
    mkinitcpio -P
    +
    1
    mkinitcpio -P

    重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。

    到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~

    常用软件

      -
    1. telegram
      1
      sudo pacman -S telegram-desktop
    2. -
    3. Visual Studio Code
      1
      paru -S visual-studio-code-bin
    4. -
    5. Wine
      先启动 /etc/pacman.conf 中的 multilib 源,其中包含32位软件
    6. -
    -
    1
    2
    3
    4
    sudo pacman -S lib32-mesa # 普通御三家卡
    sudo pacman -S lib32-nvidia-utils # 绿厂闭源驱动,效果好,需要现代N卡
    sudo pacman -S lib32-amdgpu-pro-oglp # 专业A卡
    sudo pacman -S wine wine-gecko wine-mono lib32-alsa-lib lib32-alsa-plugins
    -
      -
    1. Chrome / Edge
      1
      2
      paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
      paru -S google-chrome
    2. -
    3. 网易云替代品
      Go 写的 musicfox,TUI 版网易云
      1
      paru -S go-musicfox-git
    4. -
    5. Steam
      1
      2
      sudo pacman -S steam
      sudo paru -S proton
      -现在都能玩黄油了惹
    6. +
    7. telegram
      1
      sudo pacman -S telegram-desktop
    8. +
    9. Visual Studio Code(Official version)
      1
      paru -S visual-studio-code-bin
    10. +
    11. Wine
      先启动 /etc/pacman.conf 中的 multilib 源,其中包含32位软件
      不要直接复制这些命令,要先看好你的显卡是哪家的
      1
      2
      3
      4
      sudo pacman -S lib32-mesa # 普通御三家卡
      sudo pacman -S lib32-nvidia-utils # 绿厂闭源驱动,效果好,需要现代N卡
      sudo pacman -S lib32-amdgpu-pro-oglp # 专业A卡
      sudo pacman -S wine wine-gecko wine-mono lib32-alsa-lib lib32-alsa-plugins
    12. +
    13. Chrome / Edge
      1
      2
      paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
      paru -S google-chrome
    14. +
    15. 网易云音乐替代品
      Go 写的 musicfox,TUI 版网易云
      1
      paru -S go-musicfox-git
    16. +
    17. Steam
      1
      2
      sudo pacman -S steam
      paru -S proton
    18. +
    19. Clash Verge Reversion
      这是一个 Clash Verge 的修复版本,解决了原版无法更新订阅的问题
      1
      paru -S clash-verge-rev
    +

    美化

    Shell

    相信你已经不可拒绝的安装了 Oh My Zsh,然而默认的主题过于简陋,你想把它变得花哨。
    在没有装任何附加主题以及插件的 Oh My Zsh 中,我常用的是叫做ys的主题。
    执行omz theme set ys即可。

    +

    如果你想更进一步,我推荐 Powerlevel10k。
    它的 Github 仓库链接是https://github.com/romkatv/powerlevel10k
    就把它的文件 clone 到 ohmyzsh 的目录里吧~

    +
    1
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
    +

    如果你是国内的网络环境,请执行

    +
    1
    git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
    +

    这一步我没有尝试过使用命令,所以在这里编辑.zshrc
    设置ZSH_THEME="powerlevel10k/powerlevel10k",你很快就会注意到它。

    +

    在这里如果你直接source .zshrc加载了配置文件开始 p10k 的配置,第二个锁的图标就不能正常显示了。
    所以要安装「高级」的字体,也就是打了补丁的 Nerd Fonts。这是一个系列,加入了很多图标。
    我喜欢 Meslo Font,你也可以换成别的,比如 ttf-jetbrains-mono-nerd

    +
    1
    paru -S ttf-meslo-nerd
    +

    然后source .zshrc就可。

    +

    字体配置

    一天你打开浏览器,看到了抽象的日本字体,比如的字形过窄,的点变成了竖插在上面……
    这是不可接受的。
    于是你执行vim ~/.fonts.conf
    把以下内容写了进去:

    +
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
    <alias>
    <family>sans-serif</family>
    <prefer>
    <family>Noto Sans CJK SC</family>
    <family>Noto Sans CJK TC</family>
    <family>Noto Sans CJK JP</family>
    </prefer>
    </alias>
    <alias>
    <family>monospace</family>
    <prefer>
    <family>Noto Sans Mono CJK SC</family>
    <family>Noto Sans Mono CJK TC</family>
    <family>Noto Sans Mono CJK JP</family>
    </prefer>
    </alias>
    </fontconfig>
    +

    fc-cache -fv
    问题就聪明的解决了。

    +

    Vim

    Vim 是一个文本编辑器,我们已经安装好了。
    它有强大的客制化能力,你甚至可以把它变成IDE。但是在这里我只浅浅写一下美化。。
    比如我的Twinkle vim config

    +
    1
    2
    3
    git clone https://github.com/zlicdt/twinkle-vim-config.git
    cd twinkle-vim-config
    ./install.sh
    +

    如果网络条件差也是没有办法((
    请注意一下「常用软件」部分的第7号,这是一个奇妙小工具。

    @@ -472,7 +497,7 @@

    Arch Linux 安装教程
    -
    https://zlicdt.github.io/2024/06/01/archlinux-installation/
    +
    https://zlicdt.github.io/2024/09/08/archlinux-installation/
    @@ -516,18 +541,12 @@

    - - - 为什么选择 Mac - 上一篇 - -

- - GPG 入门教程 + + Git 初步教程 下一篇 @@ -550,7 +569,7 @@

- + @@ -237,8 +237,8 @@

2024

-
- + +
Arch Linux 安装教程
diff --git a/archives/2024/index.html b/archives/2024/index.html index 2fe3c86..9f514f1 100644 --- a/archives/2024/index.html +++ b/archives/2024/index.html @@ -237,6 +237,12 @@

2024

+ + +
Arch Linux 安装教程
+
+ +
Git 初步教程
@@ -249,12 +255,6 @@
- - -
Arch Linux 安装教程
-
- -
GPG 入门教程
diff --git a/archives/index.html b/archives/index.html index 53b9423..11a0e5e 100644 --- a/archives/index.html +++ b/archives/index.html @@ -237,6 +237,12 @@

2024

+
+ +
Arch Linux 安装教程
+
+ +
Git 初步教程
@@ -249,12 +255,6 @@
- - -
Arch Linux 安装教程
-
- -
GPG 入门教程
diff --git a/categories/Software/index.html b/categories/Software/index.html index e6c2ab4..79a2888 100644 --- a/categories/Software/index.html +++ b/categories/Software/index.html @@ -237,8 +237,8 @@

2024

-
- + +
Arch Linux 安装教程
diff --git a/categories/index.html b/categories/index.html index 3654395..f463068 100644 --- a/categories/index.html +++ b/categories/index.html @@ -264,7 +264,7 @@ - Arch Linux 安装教程 diff --git a/index.html b/index.html index ac35078..461f886 100644 --- a/index.html +++ b/index.html @@ -239,15 +239,15 @@

- - Git 初步教程 + + Arch Linux 安装教程

- +
- 时光机,启动! + 此文章适用于现代(2010年及以后)的x86_64机器
@@ -255,17 +255,38 @@

+ + @@ -279,15 +300,15 @@

- - 为什么选择 Mac + + Git 初步教程

- +
- 优势、以及购买型号推荐 + 时光机,启动!
@@ -295,8 +316,8 @@

@@ -305,7 +326,7 @@

@@ -319,15 +340,15 @@

- - Arch Linux 安装教程 + + 为什么选择 Mac

- +
- 此文章适用于现代(2010年及以后)的x86_64机器 + 优势、以及购买型号推荐
@@ -335,38 +356,17 @@

- - diff --git a/local-search.xml b/local-search.xml index 3ed7069..6dd3525 100644 --- a/local-search.xml +++ b/local-search.xml @@ -4,17 +4,23 @@ - Git 初步教程 - - /2024/08/21/git-guide/ + Arch Linux 安装教程 + + /2024/09/08/archlinux-installation/ - 时光机,启动!

版本控制系统(VCS)概述

一个小情景

设想一下,如果你写了一个程序,它会有一个甚至多个源代码文件:

在这之后,你把它发布了(比如交作业)。
但是老师看完后,发现缺了功能,让你再进行修改;
你改完,又将它交上去了,但是老的功能又出了bug。
你很无奈,准备把它改回去,再在其基础上进行修改。

这时候,你发现自己的第一版源代码被覆盖掉了!!
然后你忘记了原来是怎样写的,遂PDF并重写。。

你发现,如果在第一版文件写成后将其存档,记为一个版本,这样就不会发生这种事了。
你可以在第二版被驳回后,返回到第一版并继续修改。
当然Git的功能远不止这些。

VCS概念

有时候,一个程序同时存有两个以上的版本有其必要性,例如:发布版本中程序错误已经被修正,但没有加入新功能;而开发版本则有新的功能正在开发、也有新的错误待解决,于是便需要同时维护两个不同的版本。

此外,为了找出只存在于某一特定版本中的程序错误、或找出程序错误出现的版本,开发人员也必须通过比对不同版本的源代码以找出问题的位置。

我们可以使用版本控制器来:

  • 对一个目录中的内容创建不同版本
  • 创建不同的时间线(分支)
  • 切换到任意版本/分支
  • 比较各个版本中文件的差异

Git

我们要讲的Git,就是软件版本控制器中最著名的一个,也是应用最广的一个。
它由Linus Torvalds(Linux kernel项目创始人、主力开发者)使用C语言写成。
它负责管理了从Linux kernel v2.6至今的代码。
它是分布式的,意味着我们可以从其他机器获取更新版本的代码以及把我们的代码传输至其他机器上。

安装

首先要知道你使用的是什么平台。
各个平台的安装方式都是不同的。

Linux

  1. Debian/Ubuntu:
    1
    2
    3
    sudo apt update
    sudo apt install git
    # 然后看提示,按Y键、回车
  2. RHEL/Rocky Linux/Alma Linux/CentOS/Fedora
    1
    2
    3
    4
    5
    sudo dnf up
    sudo dnf in git
    # 如果无法正常运行,可能是版本太老,请使用以下命令
    sudo yum update
    sudo yum install git
  3. Arch Linux/Manjaro
    1
    2
    3
    sudo pacman -Sy
    sudo pacman -S git
    # 回车
  4. openSUSE/SLE
    1
    2
    sudo zypper up
    sudo zypper in git
  5. Gentoo Linux
    1
    sudo emerge -a dev-vcs/git

之后执行git --version
如果有以下输出,安装就完成了:

macOS

当然这需要新的macOS版本;
如果你还在用Catalina,请务必更新。

1
xcode-select --install

这样,执行:git --version

就对了。

Windows

  1. 如果是Windows 11并且使用了魔法,那么你大概是可以使用winget的。这是很方便的。
    Win + R输入powershell

    1
    winget install --id Git.Git -e --source winget

    即可。

  2. 如果不幸的事,你不喜欢更新,在使用老掉牙的1803版Windows 10,或者不能使用魔法:
    https://git-scm.com/download/win 下载适应你OS的版本。

    一般人下载第二个就可,之后一路无脑Next。

使用

初始化

你新建了一个文件夹,你将在里面放置你要管理的文件(或者已经放置了)
如何让Git管理它呢?使用下面命令即可让Git接管它。

1
git init


现在,目录下多了一个.git文件夹,它就是负责存放Git的配置文件以及相关版本数据的。

添加文件到仓库

我们现在添加一个文件test进去,它的内容是:

1
2
3
This is a test file.
Now, its version is:
1

记住现在它的版本是1。
如果你在使用一些“花里胡哨”的shell插件,比如omz,你会发现:

Git发现有一个文件被更改了。
这时候它还没有把这个文件记录在案,我们需要这样把一个文件加入仓库

1
git add test

test文件就被加入仓库了。
如果那你想把目录下的全部文件加入仓库,执行:

1
git add .

这样全部文件都会加进来。

提交

好的,你的这份作业已经写好,正准备交给老师。
现在我们需要把这堆文件记录成一个版本,也就是提交动作。

1
git commit -m "Version 1!加入test文件"

后面的-m参数是必加不可的,它是用来描述这个版本大概是做了什么的。
这两个引号,必须是英文的。
当然随便写命令也可以执行成功,但是不建议这么做。
因为到后面你可能看不懂这个版本是干什么的。

这样这个版本就被存储了下来。

修改与回档(版本回退)

不幸,老师不认可你这份作业。你需要改进它,于是你修改test文件:

1
sed -i '' 's/1/2/g' test

这个属于sed替换文本,看不懂无视就好。

现在test文件已经是第二版了!

现在我们可以看到,我们的文件内容中的“1”变成了“2”,同时Git也发现了这个文件更改。
好了,我们再重复上一步提交。

1
2
git add .
git commit -m "Version 2!修改test文件"

老师看了一下,原来他的不认可是来自于一个拼写错误:it’s => its,并非不满意那个版本号。
看来并不需要修改版本号,只需要修改拼写错误就行。

有同学会觉得这是小题大做了,我只修改个版本号为什么要用Git回退,直接改一下不就行了么?

我这里只是在演示功能。如果你写一些大的工程,很多地方的语句&调用函数等可能经过比较大程度的修改甚至覆盖。
这样做可以完全回到原来的状态。

Git用HEAD表示当前的版本。前一个版本就是HEAD^,前两个版本就是HEAD^^。
往前100个版本可以写100个^,但是这肯定是不易数的,所以可以写成HEAD~100。

我们往前退一个版本,而且要回到前一个版本的已提交状态,所以我们:

1
git reset --hard HEAD^

现在查看下test文件的内容:

--hard参数会回退到上个版本的已提交状态,--soft会回退到上个版本的未提交状态,--mixed会回退到上个版本已添加但未提交的状态。

然后你修改文件再提交:

1
2
3
sed -i '' "s/its/it's/g" test
git add .
git commit -m "Commit 2: fix spell issue."

你可能觉得写HEAD^的方法过于笨拙,当然还有一种方法可以解决:

1
git log


当然在这里,你的commit id和我的不会一样。
之后,如果你想回到哪个版本,就:

1
git reset --hard 版本commit id

这里的commit id不需要写全,当然写一两个字母也不行。主要是让Git分辨出来特定版本,又不与别的版本混淆就行。
比如前6个字符大概就可。

远程仓库

你可能听说过一些平台,比如 Github, Gitlab等,这些都是Git远程仓库平台。
那么,如何使用这些远程仓库呢?

Clone(克隆)

没错,命令就是git clone
后面接链接与本地目标目录。
比如,从Github克隆Linux内核的仓库到当前用户主目录下:

1
git clone https://github.com/torvalds/linux.git ~/linux

这后面名字可以自己起,但是建议维持原名,最多只在其基础上加点东西。
现在,远程的目录就被1:1复刻到你这里来了。

Pull(拉取)

过了一段时间,Linux内核源码的仓库更新了,而你的仓库还是旧版本,这时候该如何同步?
切换到仓库目录下,运行:

1
git pull

这样仓库就会更新了。

Push(推送)

显然,Linux内核源码仓库是很严格的,只有官方人员才能提交代码。
所以,我们自己创建一个Github仓库用于演示:

创建之后,是这样的:

你看它下面都写出来了,如何给本地仓库设置远程:

1
2
3
git remote add origin https://github.com/zlicdt/Test.git
git branch -M main
git push -u origin main

这样,远程仓库这辈子就有了。

(请忽略我用老邮箱进行提交导致的头像变动

另请注意

Github应该是在很久以前(似乎是2020-2021年间)禁止了只使用用户名+邮箱进行的提交。
我们可能遇到相关提示,并且有一大堆很麻烦的操作。
表面上是为了安全,实际上却是安全了,但更多的是推自家的github-cli,它可以概括为让你在CLI登录Github账号,从而正常进行推送。
建议都装一个。

更新中,敬请期待……

]]>
+ 此文章适用于现代(2010年及以后)的x86_64机器

截至教程发布日,Arch Linux Live CD的最新版本是2024年9月的,测试无误。

支持的硬件

·x86_64架构的CPU,建议为2008年以后的CPU,比如 Intel Core i系列之后的以及AMD FX
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动如今的Live CD)
·可用的网络连接
·20GB可用的硬盘空间

具体步骤

制作安装介质

  1. 到镜像站去下载最新的Arch Linux Live CD iso ->
    https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
  2. 使用工具将其写入到USB驱动器或者刻录光盘(不建议)
    推荐写入工具balenaEtcher
  3. 重启后按主板厂商的指引设置USB启动或选择USB启动(若失败请先关闭安全启动[^1])
  4. 从USB驱动器引导后就进入了Live CD环境

定义环境变量(可选)

很多命令都需要更改为你自己的设置。
因此为了方便(可以直接复制我的),我们在此处先定义一些环境变量。

这些环境变量的定义需要你在等号=后面输入要输入的信息。

首先,是你要连接的 WIFI 名字,也就是 SSID:

1
export SSID=

然后是它的密码:

1
export WIFI_PASSWORD=

新建的用户名字:

1
export NEW_USERNAME=

Live CD设置

  1. 连接网络 ->
    WIFI:
    1
    2
    3
    4
    iwctl station wlan0 scan
    iwctl station wlan0 get-networks
    iwctl station wlan0 connect $SSID --passphrase $WIFI_PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
    ip addr
    如果直接插网线的话上面的步骤可以跳过

    如果没有wlan0的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(

    ip addr返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。
    可选:停止reflector服务,防止/etc/pacman.d/mirrorlist被写入其他地区镜像 ->
    1
    systemctl stop reflector.service
  2. 配置镜像
    国内网络环境懂得都懂,用镜像(注意:这一步须在reflector.service停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist会被它重写) ->
    1
    vim /etc/pacman.d/mirrorlist
    • 在文件开头按i进入insert模式,添加Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
    • esc退出insert模式,输入:wq保存并退出vim
  3. (可选)ssh 远程连接
    远程访问,可以直接复制命令。
    1
    ip a
    看 wlan0(如果是 WIFI 连接)下面的信息,这里会显示联网后本机在局域网内被分配的ip地址。记下它。
    然后我们设置这台机器 root 用户的密码:
    1
    passwd
    这里随便设一个,只要你能记住。
    我这里假设这台机器的ip是 192.168.101.12,于是在另一台在同一个局域网的机器上,执行
    1
    ssh root@192.168.101.12
    然后按提示,输入yes,再输入刚才设置的密码,就可以连接了。

磁盘相关

  1. 磁盘分区 ->

    这一步需要按照情况自行更改,操作不当会导致数据丢失。一定要理解下面info中的内容。

    我这台机器有一个NVME接口的固态硬盘,它的编号是nvme0n1。在有多个NVME接口的主板上,如果你插了多块硬盘,它将会有nvme1n1nvme2n1等编号,一定要清楚自己要操作的是哪块硬盘。连在SATA与USB接口上的硬盘会显示sdasdb等,sda可能是U盘也可能是内置硬盘,请先lsblk进行辨认。这条命令的意义是对nvme0n1进行操作,请根据自身需要更改。

    1
    cfdisk /dev/nvme0n1

    如果先前有Windows安装的话,请注意不要把Windows分区直接缩小大小,会让Windows坏掉。应先使用其他工具完成分区大小调整再进行后续步骤。

    • 使用GPT分区表(这是UEFI引导的必须条件)
    • 推荐分区方案 ->
      • EFI分区:不小于4MB,类型:EFI System
      • 主分区:不小于10GB,类型:Linux filesystem
        (建议在分区内部建立一个swapfile来承担swap的任务)
    • 结束后,选Write再输入yes来写入分区表,再选Quit退出
  2. 建立文件系统 ->
    主分区使用ext4文件系统

    如果先前安装了Windows或者其他操作系统,不要执行第一条,会导致Windows引导损坏。

    这条命令也需要自行修改,意为在nvme0n1的第一分区创建vfat文件系统,在nvme0n1的第二分区创建ext4文件系统。

    1
    2
    mkfs.vfat /dev/nvme0n1p1
    mkfs.ext4 /dev/nvme0n1p2

    如果之前nvme0n1p2建立过其他文件系统,这里需要按y确认。

  3. 挂载分区 ->

    改,勿照抄。/nvme0n1p2挂载到/mnt,再把nvme0n1p1这个EFI分区挂到/mnt/boot/efi下。

    1
    2
    3
    mount /dev/nvme0n1p2 /mnt
    mkdir -p /mnt/boot/efi
    mount /dev/nvme0n1p1 /mnt/boot/efi
  4. 创建swapfile ->

    swap的用途是在内存不足时,将硬盘的一部分作为内存的扩展空间使用。这里swap创建为8G,可根据需要改变count=后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。

    1
    2
    3
    4
    dd if=/dev/zero of=/mnt/swapfile bs=1M count=8192
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile

安装系统

  1. 安装软件包 ->
    首先初始化keyring!!
    1
    pacman -Sy archlinux-keyring

    使用KDE Plasma作桌面环境的系统

    pacstrap安装必要的包
    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim plasma konsole dolphin noto-fonts-cjk noto-fonts noto-fonts-emoji noto-fonts-extra fcitx5-chinese-addons chromium fastfetch htop

    使用GNOME作桌面环境的系统

    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim gnome noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ibus ibus-libpinyin chromium fastfetch htop

    使用命令行界面的系统(Headless)

    这是我的习惯 ->
    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim fastfetch htop tmux

  2. 生成fstab ->
    1
    genfstab -U /mnt >> /mnt/etc/fstab
  3. chroot到新系统 ->
    1
    arch-chroot /mnt

初步配置系统

  1. 时间设置 ->
    1
    2
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    hwclock --systohc
  2. 用户设置 ->
    1
    2
    3
    echo archlinux > /etc/hostname
    useradd -m $NEW_USERNAME -G wheel
    passwd $NEW_USERNAME

    useradd用于添加账户,passwd用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。

  3. 编辑sudoers ->
    1
    visudo
    将文件中的# %wheel ALL=(ALL:ALL) ALL(大概率在第114行,使用vim:114跳转)的注释取消,使得wheel组里的用户可以使用sudo
  4. 配置zsh ->

    zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。
    如果不喜欢zsh,或者考虑兼容性,请跳过这一步。

    1
    2
    3
    4
    5
    su $NEW_USERNAME
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git ~/.oh-my-zsh
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    chsh -s /bin/zsh
    exit
    这里使用了清华大学的 git 镜像,如果网络条件允许可以换成https://github.com/ohmyzsh/ohmyzsh
  5. 本地化 ->
    1
    2
    3
    echo "LANG=\"en_US.UTF-8\"" >> /etc/locale.conf
    sed -i "s@#zh_CN.UTF-8 UTF-8@zh_CN.UTF-8 UTF-8@g" /etc/locale.gen
    sed -i "s@#en_US.UTF-8 UTF-8@en_US.UTF-8 UTF-8@g" /etc/locale.gen
    此处命令意为去掉#zh_CN.UTF-8 UTF-8#en_US.UTF-8 UTF-8的注释符号“#
    最后运行 ->
    1
    locale-gen
  6. 服务设置 ->
    1
    2
    3
    4
    systemctl enable NetworkManager
    systemctl enable sshd
    systemctl enable sddm # KDE
    systemctl enable gdm # GNOME
  7. 引导设置 ->
    gurb已支持引导Windows。
    可以让grub找到Windows。
    1
    sudo pacman -Sy ntfs-3g fuse os-prober
    对于UEFI引导的安装方式
    1
    2
    3
    grub-install --target=x86_64-efi --efi-directory=/boot/efi
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg

    对于BIOS引导的安装方式
    1
    2
    3
    grub-install /dev/nvme0n1
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg
  8. 退出chroot环境并重启 ->
    1
    2
    exit
    reboot
    至此Arch Linux的安装就完成了
    接下来是配置部分

进一步配置系统

如果是KDE的话,重启系统后,大概就是这样的 ->

  1. 输入法配置
    如果直接右键-配置是会显示这个的 ->

    这会进入文本配置,显然我们是不懂的(
    所以要安装fcitx5-configtool ->
    1
    sudo pacman -S fcitx5-configtool
    然后再右键-配置就可以看到 ->

    然而现在按Ctrl+Tab是不能切换到拼音输入法的,我们需要把Fcitx5设为默认输入法并自动启动 ->
    1
    sudo vim /etc/environment
    把下面的东西加进去 ->
    1
    2
    3
    4
    5
    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
    XMODIFIERS=@im=fcitx
    SDL_IM_MODULE=fcitx
    GLFW_IM_MODULE=ibus
    重新登录就可以正常使用喵~
    更多用法请参阅Arch Wiki
  2. 软件源
    众所周知,官方源对于灰色地带/非自由软件是不收录的。
    所以我们通常用第三方源+AUR来进行补充。
    官方源是不带任何AUR工具的,所以我们先装archlinuxcn源 ->
    1
    sudo vim /etc/pacman.conf
    加入以下文本 ->
    1
    2
    [archlinuxcn]
    Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
    然后获取keyring ->

    (2024.9.7测试问题已解决)近期这一步会出现问题,因为archlinuxcn 社区源的 keyring 包 archlinuxcn-keyring 由 farseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自12月初 archlinux-keyring 中删除了一个退任的 master key (https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/issues/246) 导致 farseerfc 的 key 的信任数不足,由 GnuPG 的 web of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。(转自Arch Linux CN Telegram Messages Channel)

    如果你在新系统中尝试安装archlinuxcn-keyring包时遇到如下报错:
    1
    error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust
    请使用以下命令在本地信任 farseerfc 的 key 。此 key 已随archlinux-keyring安装在系统中,只是缺乏信任:
    1
    sudo pacman-key --lsign-key "farseerfc@archlinux.org"
    然后
    1
    sudo pacman -Sy archlinuxcn-keyring
    就可以使用archlinuxcn源了!
    由于要使用AUR,所以我们先装一个AUR工具:
    1
    sudo pacman -S paru
    详细的用法和pacman一样。
  3. 引导Windows
    在安装系统时,os-prober往往不能正常检测到Windows,需要我们再运行
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    重启即可看到Windows Boot Manager

显卡驱动

如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了
而N卡,需要进行以下步骤

查看显卡型号

1
lspci -k | grep -A 2 -E "(VGA|3D)"

GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核)

Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包)

更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau

安装驱动

1
sudo pacman -S nvidia-open-dkms nvidia-settings

后续

安装 NVIDIA 官方的驱动之后,需要编辑/etc/mkinitcpio.conf,在 HOOKS 一行删除kms并保存
然后执行

1
mkinitcpio -P

重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。

到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~

常用软件

  1. telegram
    1
    sudo pacman -S telegram-desktop
  2. Visual Studio Code(Official version)
    1
    paru -S visual-studio-code-bin
  3. Wine
    先启动 /etc/pacman.conf 中的 multilib 源,其中包含32位软件
    不要直接复制这些命令,要先看好你的显卡是哪家的
    1
    2
    3
    4
    sudo pacman -S lib32-mesa # 普通御三家卡
    sudo pacman -S lib32-nvidia-utils # 绿厂闭源驱动,效果好,需要现代N卡
    sudo pacman -S lib32-amdgpu-pro-oglp # 专业A卡
    sudo pacman -S wine wine-gecko wine-mono lib32-alsa-lib lib32-alsa-plugins
  4. Chrome / Edge
    1
    2
    paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
    paru -S google-chrome
  5. 网易云音乐替代品
    Go 写的 musicfox,TUI 版网易云
    1
    paru -S go-musicfox-git
  6. Steam
    1
    2
    sudo pacman -S steam
    paru -S proton
  7. Clash Verge Reversion
    这是一个 Clash Verge 的修复版本,解决了原版无法更新订阅的问题
    1
    paru -S clash-verge-rev

美化

Shell

相信你已经不可拒绝的安装了 Oh My Zsh,然而默认的主题过于简陋,你想把它变得花哨。
在没有装任何附加主题以及插件的 Oh My Zsh 中,我常用的是叫做ys的主题。
执行omz theme set ys即可。

如果你想更进一步,我推荐 Powerlevel10k。
它的 Github 仓库链接是https://github.com/romkatv/powerlevel10k
就把它的文件 clone 到 ohmyzsh 的目录里吧~

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

如果你是国内的网络环境,请执行

1
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

这一步我没有尝试过使用命令,所以在这里编辑.zshrc
设置ZSH_THEME="powerlevel10k/powerlevel10k",你很快就会注意到它。

在这里如果你直接source .zshrc加载了配置文件开始 p10k 的配置,第二个锁的图标就不能正常显示了。
所以要安装「高级」的字体,也就是打了补丁的 Nerd Fonts。这是一个系列,加入了很多图标。
我喜欢 Meslo Font,你也可以换成别的,比如 ttf-jetbrains-mono-nerd

1
paru -S ttf-meslo-nerd

然后source .zshrc就可。

字体配置

一天你打开浏览器,看到了抽象的日本字体,比如的字形过窄,的点变成了竖插在上面……
这是不可接受的。
于是你执行vim ~/.fonts.conf
把以下内容写了进去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK JP</family>
</prefer>
</alias>
</fontconfig>

fc-cache -fv
问题就聪明的解决了。

Vim

Vim 是一个文本编辑器,我们已经安装好了。
它有强大的客制化能力,你甚至可以把它变成IDE。但是在这里我只浅浅写一下美化。。
比如我的Twinkle vim config

1
2
3
git clone https://github.com/zlicdt/twinkle-vim-config.git
cd twinkle-vim-config
./install.sh

如果网络条件差也是没有办法((
请注意一下「常用软件」部分的第7号,这是一个奇妙小工具。

]]>
+ + + Software + + + - git + Linux @@ -23,17 +29,17 @@ - 为什么选择 Mac - - /2024/08/12/why-choose-mac/ + Git 初步教程 + + /2024/08/21/git-guide/ - 优势、以及购买型号推荐

先前提要

在2020年前,Mac一直是属于价格高,核心硬件配置低的代表。只有屏幕和机身是不能骂的。
因为早在2012年,MacBook Pro就已经开始使用1440p(也就是我们常说的2K,2560x1440)的分辨率了。
显示色域也是早早达到了100% sRGB的标准。
同样的,机身使用当时极度少有的CNC加工铝合金,是成本最高的一档。

然而核心硬件的素质很是低下,经常采用低压15w平台的双核Intel Core i5/i7,性能在当时面对采用H35标压的友商,差距是不能接受的。
内存全部为板载,更换需要把内存颗粒吹下来再焊上更大容量的颗粒。
只有到后期,高端的15寸MacBook Pro才会搭载Intel H45和AMD Radeon移动端独显,然而最高级的型号也只是RX 5600M(是HBM显存!!)

直到Apple Silicon发布了,M1惊艳全场,但仍有很多兼容性问题。
需要通过Rosetta 2转译运行。
但是运行原生二进制时,在当年的笔记本市场是大杀四方了。
大约是5800H~11800H的水准。
说剪视频很强,其实很多插件不能用,而且也只是在导出方面有专用单元罢了。

我也一直拒绝买Mac,认为那是高价低配的,买Mac的是冲着外观、系统、屏幕、触控板去的。
而我,一个使用过各种恶劣机器的,用Arch的折腾患者,这种机器不适合我的人设。

然后终于,我高中毕业,考进了CDS,要买一台新机器。

我拥有的设备

  1. 神舟战神 Z7-DA5NP
    模具:蓝天 V155
    CPU:i5-12500H@睿频4.5GHz
    GPU:RTX 3050 Laptop 4G(Micron)
    内存:三星8G DDR4 3200MHz x 2 = 16G
    硬盘:自带的打码固态,PCIE3.0 512G,主控群联
    屏幕:自行更换的NE156QHM-NY2,2K 165Hz 100% sRGB
    系统:如今作为Minecraft Server,使用Debian 12
    双风扇四铜管,纯塑料机身,miniDP和HDMI口只能连1080p 120Hz/2K 60Hz,单M.2,又一个3.5寸SATA盘位
  2. 台式机
    板子:MSI MAG MORTAR B550M MAX WIFI
    CPU:R7-5700X
    GPU:[MSI SUPRIM] NVIDIA GeForce RTX 3080 LHR 10G
    内存:铭瑄DDR4 3200MHz 16G x 2 = 32G(颗粒Micron)
    硬盘1:梵想 S790 PCIE4.0 1TB(主控MAP1602+长存白片,通过丝印无法查到颗粒信息,232层)
    硬盘2:三星 PM9A1 PCIE4.0 1TB(插在3.0的口)
    散热器:酷妈 暴雪 T620S 双风扇6热管

我买的机器

MacBook Pro (16-inch, Nov 2023, Three Thunderbolt 4 ports)
译:
MacBook Pro (16英寸, 2023年11月, 三个雷雳4接口)
苹果的特立独行导致这个官方翻译叫“雷雳4”,是我们通常说的“雷电4”。

CPU: M3 Max 16 Cores(12P + 4E, max turbo freq: 4.05GHz)
GPU: M3 Max 40 Cores
RAM: 48G LPDDR5 板载
SSD: 1T 板载(速度近似PCIE4.0,连接被命名为Apple Fabric)

外在

  1. 屏幕
    当今量产型号最强的miniLED显示器,在这。

    分辨率3456x2234
    最大亮度1600nit(显示HDR内容时)
    Display P3色域(色域容积>sRGB)

  2. 外放
    这是不用多说的。
    参考蓝天X170.

内在

这是我要重中之重提及的。

  1. 包管理
    Mac本来不存在包管理器,但是提及Mac上的包管理器,人们都会想到Homebrew
    https://brew.sh/
    你会发现,包括字体在内,都是可以使用brew安装的。
    这里有大量包,包括原生macOS程序,其他平台(如GNU/Linux的移植)以及.app格式的应用。
    Linux平台的软件,对于一个CST人是很重要的。当然原生Linux更好。
    广度大于Homebrew的应该只有Arch Linux official + cn + AUR了吧(笑
    ((Debian/Ubuntu的官方源竟然没有fastfetch

    反观隔壁Windows,来自Linux的移植软件属实稀缺无比
    WSL2也是访问Windows目录困难,所以你需要开VSCode+WSL Remote插件连WSL。
    如果你使用WSL开Linux GUI软件,莫名其妙的问题太多,并且本来这也只是个简陋功能。
    并且Windows这边的包管理器,都严重依赖软件本家的获取途径,并且依赖软件的GUI安装程序(很多软件不支持自动化安装)。

  2. 字体渲染
    依赖Mac常有的高分辨率,Mac通常都是高ppi的。
    以至于macOS的字体渲染都能说“清晰、重实”。

    反观Windows那边,字体渲染是一个常常被提起的诟病。
    Windows的字体渲染得发虚,以至于很多人都用MacType这个软件来模拟Mac的字体渲染。
    但是MacType在Windows 11中,不能应用在软件标题栏了。
    至此,让Windows认真渲染文字的方法只剩下开高缩放。

    但是谈到缩放这个方面,不知你有没有注意过:
    Windows建议的缩放倍数是根据大部分软件GUI占用最小像素数时不挤到任务栏下面的缩放倍数。
    然而在这个缩放倍数下,Windows会把文字渲染得很奇怪。
    比如使用微软雅黑字体时,“大”这个字,你会发现中间这一行很细,很难看。
    然而,在你使用2K屏时,把缩放拉到200%以上,你会发现这个问题解决了。
    但是在200%的缩放下,很多软件都无法正常显示了,它的底边会挤到任务栏下面。
    你甚至没法把窗口缩小,因为鼠标不能移动到任务栏下面。
    所以你需要换4K及以上的屏,并把缩放拉到200%以上。

    这是个奇妙的问题,奇妙到头大。然而它在Mac上是不会存在的,任何字都显示得很好。

  3. 字体配置
    首先普及:字体回落这一概念

    “字体回落”用于指定一系列的字体选项,当首选字体不可用时,浏览器会按照这个列表尝试加载下一个可用的字体。这样,即使首选字体在用户的设备上不可用,页面仍然可以使用备选字体显示文本,从而保持设计的一致性。

    举个例子:
    你在使用VSCode撰写Markdown文章,就像我现在这样。
    然而你注意到,现在编辑器内显示的中文文字很丑,它大概是叫做“宋体”的字体。
    但是英文确是你在settings.json里设置的Cascadia Code等宽字体。

    这就涉及到了字体回落。
    在字体没有提供中文文字时,Windows会把中文文字以宋体显示。
    没错,这里的默认回落字体是宋体。

    如果你想使用好看一点的微软雅黑,你需要这么做:

    1
    2
    3
    {
    "editor.fontFamily": "Cascadia Code, '微软雅黑'",
    }

    然而在Mac上,这个问题是不存在的。
    当你使用中文locale时,默认的回落字体是苹方。

  4. Unix环境
    这个问题和上面的包管理器问题是同源的。
    Mac上有大量的移植软件,几乎所有开发工具都有Mac版本。

    很多脚本,都默认你使用类Unix环境,它们使用bash或zsh。
    一旦到了Windows,它们是废的。
    WSL2本质上是Hyper-V开的虚拟机,这样你的机器就又跑了个CPU分配相同、内存是总内存一半的虚拟机。
    而MSYS2 cygwin之类的项目,只是模拟环境,速度极慢不说,还有很多bug。

    PowerShell固然是很强大的,但是它过于反直觉,而且命令记忆相当困难,速度也慢。
    现在有oh-my-posh项目,可以装上PowerShell版的OMZ,但是相比OMZ,功能差了很多。

型号推荐

我推所有16寸的机器。
不过根据现在考虑,还是等M4 Pro的?
M4 ST性能自然不用说,MT性能已经和M2 Max接近了。
只怕M4 Pro打平M3 Max残血「10P+4E」(笑

总习惯把macOS和Windows比。
现在用Windows台式机,只打游戏和跑图。

其实Linux才是真正的强者,什么都可以自由配置/选择。
缺点可能是没有公司做和自家发行版完美结合的硬件,
而且桌面环境相比macOS过于简陋了(笑

推荐Arch Linux,可以到我的blog翻安装教程。

]]>
+ 时光机,启动!

版本控制系统(VCS)概述

一个小情景

设想一下,如果你写了一个程序,它会有一个甚至多个源代码文件:

在这之后,你把它发布了(比如交作业)。
但是老师看完后,发现缺了功能,让你再进行修改;
你改完,又将它交上去了,但是老的功能又出了bug。
你很无奈,准备把它改回去,再在其基础上进行修改。

这时候,你发现自己的第一版源代码被覆盖掉了!!
然后你忘记了原来是怎样写的,遂PDF并重写。。

你发现,如果在第一版文件写成后将其存档,记为一个版本,这样就不会发生这种事了。
你可以在第二版被驳回后,返回到第一版并继续修改。
当然Git的功能远不止这些。

VCS概念

有时候,一个程序同时存有两个以上的版本有其必要性,例如:发布版本中程序错误已经被修正,但没有加入新功能;而开发版本则有新的功能正在开发、也有新的错误待解决,于是便需要同时维护两个不同的版本。

此外,为了找出只存在于某一特定版本中的程序错误、或找出程序错误出现的版本,开发人员也必须通过比对不同版本的源代码以找出问题的位置。

我们可以使用版本控制器来:

  • 对一个目录中的内容创建不同版本
  • 创建不同的时间线(分支)
  • 切换到任意版本/分支
  • 比较各个版本中文件的差异

Git

我们要讲的Git,就是软件版本控制器中最著名的一个,也是应用最广的一个。
它由Linus Torvalds(Linux kernel项目创始人、主力开发者)使用C语言写成。
它负责管理了从Linux kernel v2.6至今的代码。
它是分布式的,意味着我们可以从其他机器获取更新版本的代码以及把我们的代码传输至其他机器上。

安装

首先要知道你使用的是什么平台。
各个平台的安装方式都是不同的。

Linux

  1. Debian/Ubuntu:
    1
    2
    3
    sudo apt update
    sudo apt install git
    # 然后看提示,按Y键、回车
  2. RHEL/Rocky Linux/Alma Linux/CentOS/Fedora
    1
    2
    3
    4
    5
    sudo dnf up
    sudo dnf in git
    # 如果无法正常运行,可能是版本太老,请使用以下命令
    sudo yum update
    sudo yum install git
  3. Arch Linux/Manjaro
    1
    2
    3
    sudo pacman -Sy
    sudo pacman -S git
    # 回车
  4. openSUSE/SLE
    1
    2
    sudo zypper up
    sudo zypper in git
  5. Gentoo Linux
    1
    sudo emerge -a dev-vcs/git

之后执行git --version
如果有以下输出,安装就完成了:

macOS

当然这需要新的macOS版本;
如果你还在用Catalina,请务必更新。

1
xcode-select --install

这样,执行:git --version

就对了。

Windows

  1. 如果是Windows 11并且使用了魔法,那么你大概是可以使用winget的。这是很方便的。
    Win + R输入powershell

    1
    winget install --id Git.Git -e --source winget

    即可。

  2. 如果不幸的事,你不喜欢更新,在使用老掉牙的1803版Windows 10,或者不能使用魔法:
    https://git-scm.com/download/win 下载适应你OS的版本。

    一般人下载第二个就可,之后一路无脑Next。

使用

初始化

你新建了一个文件夹,你将在里面放置你要管理的文件(或者已经放置了)
如何让Git管理它呢?使用下面命令即可让Git接管它。

1
git init


现在,目录下多了一个.git文件夹,它就是负责存放Git的配置文件以及相关版本数据的。

添加文件到仓库

我们现在添加一个文件test进去,它的内容是:

1
2
3
This is a test file.
Now, its version is:
1

记住现在它的版本是1。
如果你在使用一些“花里胡哨”的shell插件,比如omz,你会发现:

Git发现有一个文件被更改了。
这时候它还没有把这个文件记录在案,我们需要这样把一个文件加入仓库

1
git add test

test文件就被加入仓库了。
如果那你想把目录下的全部文件加入仓库,执行:

1
git add .

这样全部文件都会加进来。

提交

好的,你的这份作业已经写好,正准备交给老师。
现在我们需要把这堆文件记录成一个版本,也就是提交动作。

1
git commit -m "Version 1!加入test文件"

后面的-m参数是必加不可的,它是用来描述这个版本大概是做了什么的。
这两个引号,必须是英文的。
当然随便写命令也可以执行成功,但是不建议这么做。
因为到后面你可能看不懂这个版本是干什么的。

这样这个版本就被存储了下来。

修改与回档(版本回退)

不幸,老师不认可你这份作业。你需要改进它,于是你修改test文件:

1
sed -i '' 's/1/2/g' test

这个属于sed替换文本,看不懂无视就好。

现在test文件已经是第二版了!

现在我们可以看到,我们的文件内容中的“1”变成了“2”,同时Git也发现了这个文件更改。
好了,我们再重复上一步提交。

1
2
git add .
git commit -m "Version 2!修改test文件"

老师看了一下,原来他的不认可是来自于一个拼写错误:it’s => its,并非不满意那个版本号。
看来并不需要修改版本号,只需要修改拼写错误就行。

有同学会觉得这是小题大做了,我只修改个版本号为什么要用Git回退,直接改一下不就行了么?

我这里只是在演示功能。如果你写一些大的工程,很多地方的语句&调用函数等可能经过比较大程度的修改甚至覆盖。
这样做可以完全回到原来的状态。

Git用HEAD表示当前的版本。前一个版本就是HEAD^,前两个版本就是HEAD^^。
往前100个版本可以写100个^,但是这肯定是不易数的,所以可以写成HEAD~100。

我们往前退一个版本,而且要回到前一个版本的已提交状态,所以我们:

1
git reset --hard HEAD^

现在查看下test文件的内容:

--hard参数会回退到上个版本的已提交状态,--soft会回退到上个版本的未提交状态,--mixed会回退到上个版本已添加但未提交的状态。

然后你修改文件再提交:

1
2
3
sed -i '' "s/its/it's/g" test
git add .
git commit -m "Commit 2: fix spell issue."

你可能觉得写HEAD^的方法过于笨拙,当然还有一种方法可以解决:

1
git log


当然在这里,你的commit id和我的不会一样。
之后,如果你想回到哪个版本,就:

1
git reset --hard 版本commit id

这里的commit id不需要写全,当然写一两个字母也不行。主要是让Git分辨出来特定版本,又不与别的版本混淆就行。
比如前6个字符大概就可。

远程仓库

你可能听说过一些平台,比如 Github, Gitlab等,这些都是Git远程仓库平台。
那么,如何使用这些远程仓库呢?

Clone(克隆)

没错,命令就是git clone
后面接链接与本地目标目录。
比如,从Github克隆Linux内核的仓库到当前用户主目录下:

1
git clone https://github.com/torvalds/linux.git ~/linux

这后面名字可以自己起,但是建议维持原名,最多只在其基础上加点东西。
现在,远程的目录就被1:1复刻到你这里来了。

Pull(拉取)

过了一段时间,Linux内核源码的仓库更新了,而你的仓库还是旧版本,这时候该如何同步?
切换到仓库目录下,运行:

1
git pull

这样仓库就会更新了。

Push(推送)

显然,Linux内核源码仓库是很严格的,只有官方人员才能提交代码。
所以,我们自己创建一个Github仓库用于演示:

创建之后,是这样的:

你看它下面都写出来了,如何给本地仓库设置远程:

1
2
3
git remote add origin https://github.com/zlicdt/Test.git
git branch -M main
git push -u origin main

这样,远程仓库这辈子就有了。

(请忽略我用老邮箱进行提交导致的头像变动

另请注意

Github应该是在很久以前(似乎是2020-2021年间)禁止了只使用用户名+邮箱进行的提交。
我们可能遇到相关提示,并且有一大堆很麻烦的操作。
表面上是为了安全,实际上却是安全了,但更多的是推自家的github-cli,它可以概括为让你在CLI登录Github账号,从而正常进行推送。
建议都装一个。

更新中,敬请期待……

]]>
- 杂记 + git @@ -42,23 +48,17 @@ - Arch Linux 安装教程 - - /2024/06/01/archlinux-installation/ - - 此文章适用于现代(2010年及以后)的x86_64机器

用了这么长时间Arch,总该写一篇安装教程了。
截至教程发布日,Arch Linux Live CD的最新版本是2024年5月的,经测试没有问题。

支持的硬件

·x86_64架构的CPU,建议为2008年以后的CPU
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动11月的Live CD)
·可用的网络连接
·20GB可用的硬盘空间

具体步骤

制作安装介质

  1. 到镜像站去下载最新的Arch Linux Live CD iso ->
    https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
  2. 使用工具将其写入到USB驱动器或者刻录光盘(不建议)
    推荐写入工具balenaEtcher
  3. 重启后按主板厂商的指引设置USB启动或选择USB启动(若失败请先关闭安全启动[^1])
  4. 从USB驱动器引导后就进入了Live CD环境

Live CD设置

  1. 连接网络 ->
    WIFI:
    1
    2
    3
    4
    iwctl station wlan0 scan
    iwctl station wlan0 get-networks
    iwctl station wlan0 connect $SSID --passphrase $PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
    ip addr
    如果直接插网线的话上面的步骤可以跳过

    如果没有wlan0的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(

    ip addr返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。
    可选:停止reflector服务,防止/etc/pacman.d/mirrorlist被写入其他地区镜像 ->
    1
    systemctl stop reflector.service
  2. 配置镜像
    由于结界,我们无法直接从结界外部的镜像站获取软件包。在Live CD内也无法使用魔法绕过结界,所以步前辈们的足迹,使用他们搭建好的国内镜像站(注意:这一步须在reflector.service停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist会被它重写) ->
    1
    vim /etc/pacman.d/mirrorlist
    • 在文件开头按i进入insert模式,添加Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
    • esc退出insert模式,输入:wq保存并退出vim

磁盘相关

  1. 磁盘分区 ->

    这一步需要按照情况自行更改,操作不当会导致数据丢失。一定要理解下面info中的内容。

    我这台机器有一个NVME接口的固态硬盘,它的编号是nvme0n1。在有多个NVME接口的主板上,如果你插了多块硬盘,它将会有nvme1n1nvme2n1等编号,一定要清楚自己要操作的是哪块硬盘。连在SATA与USB接口上的硬盘会显示sdasdb等,sda可能是U盘也可能是内置硬盘,请先lsblk进行辨认。这条命令的意义是对nvme0n1进行操作,请根据自身需要更改。

    1
    cfdisk /dev/nvme0n1

    如果先前有Windows安装的话,请注意不要把Windows分区直接缩小大小,会让Windows坏掉。应先使用其他工具完成分区大小调整再进行后续步骤。

    • 使用GPT分区表(这是UEFI引导的必须条件)
    • 推荐分区方案 ->
      • EFI分区:不小于4MB,类型:EFI System
      • 主分区:不小于10GB,类型:Linux filesystem
        (建议在分区内部建立一个swapfile来承担swap的任务)
    • 结束后,选Write再输入yes来写入分区表,再选Quit退出
  2. 建立文件系统 ->
    主分区使用ext4文件系统

    如果先前安装了Windows或者其他操作系统,不要执行第一条,会导致Windows引导损坏。

    这条命令也需要自行修改,意为在nvme0n1的第一分区创建vfat文件系统,在nvme0n1的第二分区创建ext4文件系统。

    1
    2
    mkfs.vfat /dev/nvme0n1p1
    mkfs.ext4 /dev/nvme0n1p2

    如果之前nvme0n1p2建立过其他文件系统,这里需要按y确认。

  3. 挂载分区 ->

    改,勿照抄。/nvme0n1p2挂载到/mnt,再把nvme0n1p1这个EFI分区挂到/mnt/boot/efi下。

    1
    2
    3
    mount /dev/nvme0n1p2 /mnt
    mkdir -p /mnt/boot/efi
    mount /dev/nvme0n1p1 /mnt/boot/efi
  4. 创建swapfile ->

    这里swap创建为8G,可根据需要改变count=后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。

    1
    2
    3
    4
    dd if=/dev/zero of=/mnt/swapfile bs=1M count=8192
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile

安装系统

  1. 安装软件包 ->
    首先初始化keyring!!
    1
    pacman -Sy archlinux-keyring

    使用KDE Plasma作桌面环境的系统

    pacstrap安装必要的包
    1
    pacstrap /mnt base linux linux-firmware linux-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim plasma konsole dolphin noto-fonts-cjk noto-fonts noto-fonts-emoji noto-fonts-extra fcitx5-chinese-addons chromium fastfetch htop

    使用GNOME作桌面环境的系统

    1
    pacstrap /mnt base linux linux-firmware linux-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim gnome noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ibus ibus-libpinyin chromium fastfetch htop

    使用命令行界面的系统(Headless)

    这是我的习惯 ->
    1
    pacstrap /mnt base linux linux-firmware linux-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim fastfetch htop

  2. 生成fstab ->
    1
    genfstab -U /mnt >> /mnt/etc/fstab
  3. chroot到新系统 ->
    1
    arch-chroot /mnt

初步配置系统

  1. 时间设置 ->
    1
    2
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    hwclock --systohc
  2. 用户设置 ->
    1
    2
    3
    echo 主机名 > /etc/hostname
    useradd -m 用户名 -G wheel
    passwd 用户名

    useradd用于添加账户,passwd用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。

  3. 编辑sudoers ->
    1
    visudo
    将文件中的# %wheel ALL=(ALL:ALL) ALL(大概率在第108行)的注释取消,使得wheel组里的用户可以使用sudo
  4. 配置zsh ->

    zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。
    如果不喜欢zsh,或者考虑兼容性,请跳过这一步。

    1
    2
    3
    4
    5
    su 用户名
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git ~/.oh-my-zsh
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    chsh -s /bin/zsh
    exit
  5. 本地化 ->
    1
    2
    3
    echo "LANG=\"en_US.UTF-8\"" >> /etc/locale.conf
    sed -i "s@#zh_CN.UTF-8 UTF-8@zh_CN.UTF-8 UTF-8@g" /etc/locale.gen
    sed -i "s@#en_US.UTF-8 UTF-8@en_US.UTF-8 UTF-8@g" /etc/locale.gen
    去掉#zh_CN.UTF-8 UTF-8#en_US.UTF-8 UTF-8的注释符号“#
    最后运行 ->
    1
    locale-gen
  6. 服务设置 ->
    1
    2
    3
    4
    systemctl enable NetworkManager
    systemctl enable sshd
    systemctl enable sddm # KDE
    systemctl enable gdm # GNOME
  7. 引导设置 ->
    gurb已支持引导Windows。
    可以让grub找到Windows。
    1
    sudo pacman -Sy ntfs-3g fuse os-prober
    对于UEFI引导的安装方式
    1
    2
    3
    grub-install --target=x86_64-efi --efi-directory=/boot/efi
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg

    对于BIOS引导的安装方式
    1
    2
    3
    grub-install /dev/nvme0n1
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg
  8. 退出chroot环境并重启 ->
    1
    2
    exit
    reboot
    至此Arch Linux的安装就完成了
    接下来是配置部分

进一步配置系统

如果是KDE的话,重启系统后,大概就是这样的 ->

  1. 输入法配置
    如果直接右键-配置是会显示这个的 ->

    这会进入文本配置,显然我们是不懂的(
    所以要安装fcitx5-configtool ->
    1
    sudo pacman -S fcitx5-configtool
    然后再右键-配置就可以看到 ->

    然而现在按Ctrl+Tab是不能切换到拼音输入法的,我们需要把Fcitx5设为默认输入法并自动启动 ->
    1
    sudo vim /etc/environment
    把下面的东西加进去 ->
    1
    2
    3
    4
    5
    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
    XMODIFIERS=@im=fcitx
    SDL_IM_MODULE=fcitx
    GLFW_IM_MODULE=ibus
    重新登录就可以正常使用喵~
    更多用法请参阅Arch Wiki
  2. 软件源
    众所周知,官方源对于灰色地带/非自由软件是不收录的。
    所以我们通常用第三方源+AUR来进行补充。
    官方源是不带任何AUR工具的,所以我们先装archlinuxcn源 ->
    1
    sudo vim /etc/pacman.conf
    加入以下文本 ->
    1
    2
    [archlinuxcn]
    Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
    然后获取keyring ->

    近期这一步会出现问题,因为archlinuxcn 社区源的 keyring 包 archlinuxcn-keyring 由 farseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自12月初 archlinux-keyring 中删除了一个退任的 master key (https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/issues/246) 导致 farseerfc 的 key 的信任数不足,由 GnuPG 的 web of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。(转自Arch Linux CN Telegram Messages Channel)

    如果你在新系统中尝试安装archlinuxcn-keyring包时遇到如下报错:
    1
    error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust
    请使用以下命令在本地信任 farseerfc 的 key 。此 key 已随archlinux-keyring安装在系统中,只是缺乏信任:
    1
    sudo pacman-key --lsign-key "farseerfc@archlinux.org"
    然后
    1
    sudo pacman -Sy archlinuxcn-keyring
    就可以使用archlinuxcn源了!
    由于要使用AUR,所以我们先装一个AUR工具:
    1
    sudo pacman -S paru
    详细的用法和pacman一样。
  3. 引导Windows
    在安装系统时,os-prober往往不能正常检测到Windows,需要我们再运行
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    重启即可看到Windows Boot Manager

显卡驱动

如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了
而N卡,需要进行以下步骤

查看显卡型号

1
lspci -k | grep -A 2 -E "(VGA|3D)"

GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核)

Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包)

更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau

安装驱动

1
sudo pacman -S nvidia nvidia-settings

后续

安装 NVIDIA 官方的驱动之后,需要编辑/etc/mkinitcpio.conf,在 HOOKS 一行删除kms并保存
然后执行

1
mkinitcpio -P

重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。

到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~

常用软件

  1. telegram
    1
    sudo pacman -S telegram-desktop
  2. Visual Studio Code
    1
    paru -S visual-studio-code-bin
  3. Wine
    先启动 /etc/pacman.conf 中的 multilib 源,其中包含32位软件
1
2
3
4
sudo pacman -S lib32-mesa # 普通御三家卡
sudo pacman -S lib32-nvidia-utils # 绿厂闭源驱动,效果好,需要现代N卡
sudo pacman -S lib32-amdgpu-pro-oglp # 专业A卡
sudo pacman -S wine wine-gecko wine-mono lib32-alsa-lib lib32-alsa-plugins
  1. Chrome / Edge
    1
    2
    paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
    paru -S google-chrome
  2. 网易云替代品
    Go 写的 musicfox,TUI 版网易云
    1
    paru -S go-musicfox-git
  3. Steam
    1
    2
    sudo pacman -S steam
    sudo paru -S proton
    现在都能玩黄油了惹
]]>
+ 为什么选择 Mac + + /2024/08/12/why-choose-mac/ + 优势、以及购买型号推荐

先前提要

在2020年前,Mac一直是属于价格高,核心硬件配置低的代表。只有屏幕和机身是不能骂的。
因为早在2012年,MacBook Pro就已经开始使用1440p(也就是我们常说的2K,2560x1440)的分辨率了。
显示色域也是早早达到了100% sRGB的标准。
同样的,机身使用当时极度少有的CNC加工铝合金,是成本最高的一档。

然而核心硬件的素质很是低下,经常采用低压15w平台的双核Intel Core i5/i7,性能在当时面对采用H35标压的友商,差距是不能接受的。
内存全部为板载,更换需要把内存颗粒吹下来再焊上更大容量的颗粒。
只有到后期,高端的15寸MacBook Pro才会搭载Intel H45和AMD Radeon移动端独显,然而最高级的型号也只是RX 5600M(是HBM显存!!)

直到Apple Silicon发布了,M1惊艳全场,但仍有很多兼容性问题。
需要通过Rosetta 2转译运行。
但是运行原生二进制时,在当年的笔记本市场是大杀四方了。
大约是5800H~11800H的水准。
说剪视频很强,其实很多插件不能用,而且也只是在导出方面有专用单元罢了。

我也一直拒绝买Mac,认为那是高价低配的,买Mac的是冲着外观、系统、屏幕、触控板去的。
而我,一个使用过各种恶劣机器的,用Arch的折腾患者,这种机器不适合我的人设。

然后终于,我高中毕业,考进了CDS,要买一台新机器。

我拥有的设备

  1. 神舟战神 Z7-DA5NP
    模具:蓝天 V155
    CPU:i5-12500H@睿频4.5GHz
    GPU:RTX 3050 Laptop 4G(Micron)
    内存:三星8G DDR4 3200MHz x 2 = 16G
    硬盘:自带的打码固态,PCIE3.0 512G,主控群联
    屏幕:自行更换的NE156QHM-NY2,2K 165Hz 100% sRGB
    系统:如今作为Minecraft Server,使用Debian 12
    双风扇四铜管,纯塑料机身,miniDP和HDMI口只能连1080p 120Hz/2K 60Hz,单M.2,又一个3.5寸SATA盘位
  2. 台式机
    板子:MSI MAG MORTAR B550M MAX WIFI
    CPU:R7-5700X
    GPU:[MSI SUPRIM] NVIDIA GeForce RTX 3080 LHR 10G
    内存:铭瑄DDR4 3200MHz 16G x 2 = 32G(颗粒Micron)
    硬盘1:梵想 S790 PCIE4.0 1TB(主控MAP1602+长存白片,通过丝印无法查到颗粒信息,232层)
    硬盘2:三星 PM9A1 PCIE4.0 1TB(插在3.0的口)
    散热器:酷妈 暴雪 T620S 双风扇6热管

我买的机器

MacBook Pro (16-inch, Nov 2023, Three Thunderbolt 4 ports)
译:
MacBook Pro (16英寸, 2023年11月, 三个雷雳4接口)
苹果的特立独行导致这个官方翻译叫“雷雳4”,是我们通常说的“雷电4”。

CPU: M3 Max 16 Cores(12P + 4E, max turbo freq: 4.05GHz)
GPU: M3 Max 40 Cores
RAM: 48G LPDDR5 板载
SSD: 1T 板载(速度近似PCIE4.0,连接被命名为Apple Fabric)

外在

  1. 屏幕
    当今量产型号最强的miniLED显示器,在这。

    分辨率3456x2234
    最大亮度1600nit(显示HDR内容时)
    Display P3色域(色域容积>sRGB)

  2. 外放
    这是不用多说的。
    参考蓝天X170.

内在

这是我要重中之重提及的。

  1. 包管理
    Mac本来不存在包管理器,但是提及Mac上的包管理器,人们都会想到Homebrew
    https://brew.sh/
    你会发现,包括字体在内,都是可以使用brew安装的。
    这里有大量包,包括原生macOS程序,其他平台(如GNU/Linux的移植)以及.app格式的应用。
    Linux平台的软件,对于一个CST人是很重要的。当然原生Linux更好。
    广度大于Homebrew的应该只有Arch Linux official + cn + AUR了吧(笑
    ((Debian/Ubuntu的官方源竟然没有fastfetch

    反观隔壁Windows,来自Linux的移植软件属实稀缺无比
    WSL2也是访问Windows目录困难,所以你需要开VSCode+WSL Remote插件连WSL。
    如果你使用WSL开Linux GUI软件,莫名其妙的问题太多,并且本来这也只是个简陋功能。
    并且Windows这边的包管理器,都严重依赖软件本家的获取途径,并且依赖软件的GUI安装程序(很多软件不支持自动化安装)。

  2. 字体渲染
    依赖Mac常有的高分辨率,Mac通常都是高ppi的。
    以至于macOS的字体渲染都能说“清晰、重实”。

    反观Windows那边,字体渲染是一个常常被提起的诟病。
    Windows的字体渲染得发虚,以至于很多人都用MacType这个软件来模拟Mac的字体渲染。
    但是MacType在Windows 11中,不能应用在软件标题栏了。
    至此,让Windows认真渲染文字的方法只剩下开高缩放。

    但是谈到缩放这个方面,不知你有没有注意过:
    Windows建议的缩放倍数是根据大部分软件GUI占用最小像素数时不挤到任务栏下面的缩放倍数。
    然而在这个缩放倍数下,Windows会把文字渲染得很奇怪。
    比如使用微软雅黑字体时,“大”这个字,你会发现中间这一行很细,很难看。
    然而,在你使用2K屏时,把缩放拉到200%以上,你会发现这个问题解决了。
    但是在200%的缩放下,很多软件都无法正常显示了,它的底边会挤到任务栏下面。
    你甚至没法把窗口缩小,因为鼠标不能移动到任务栏下面。
    所以你需要换4K及以上的屏,并把缩放拉到200%以上。

    这是个奇妙的问题,奇妙到头大。然而它在Mac上是不会存在的,任何字都显示得很好。

  3. 字体配置
    首先普及:字体回落这一概念

    “字体回落”用于指定一系列的字体选项,当首选字体不可用时,浏览器会按照这个列表尝试加载下一个可用的字体。这样,即使首选字体在用户的设备上不可用,页面仍然可以使用备选字体显示文本,从而保持设计的一致性。

    举个例子:
    你在使用VSCode撰写Markdown文章,就像我现在这样。
    然而你注意到,现在编辑器内显示的中文文字很丑,它大概是叫做“宋体”的字体。
    但是英文确是你在settings.json里设置的Cascadia Code等宽字体。

    这就涉及到了字体回落。
    在字体没有提供中文文字时,Windows会把中文文字以宋体显示。
    没错,这里的默认回落字体是宋体。

    如果你想使用好看一点的微软雅黑,你需要这么做:

    1
    2
    3
    {
    "editor.fontFamily": "Cascadia Code, '微软雅黑'",
    }

    然而在Mac上,这个问题是不存在的。
    当你使用中文locale时,默认的回落字体是苹方。

  4. Unix环境
    这个问题和上面的包管理器问题是同源的。
    Mac上有大量的移植软件,几乎所有开发工具都有Mac版本。

    很多脚本,都默认你使用类Unix环境,它们使用bash或zsh。
    一旦到了Windows,它们是废的。
    WSL2本质上是Hyper-V开的虚拟机,这样你的机器就又跑了个CPU分配相同、内存是总内存一半的虚拟机。
    而MSYS2 cygwin之类的项目,只是模拟环境,速度极慢不说,还有很多bug。

    PowerShell固然是很强大的,但是它过于反直觉,而且命令记忆相当困难,速度也慢。
    现在有oh-my-posh项目,可以装上PowerShell版的OMZ,但是相比OMZ,功能差了很多。

型号推荐

我推所有16寸的机器。
不过根据现在考虑,还是等M4 Pro的?
M4 ST性能自然不用说,MT性能已经和M2 Max接近了。
只怕M4 Pro打平M3 Max残血「10P+4E」(笑

总习惯把macOS和Windows比。
现在用Windows台式机,只打游戏和跑图。

其实Linux才是真正的强者,什么都可以自由配置/选择。
缺点可能是没有公司做和自家发行版完美结合的硬件,
而且桌面环境相比macOS过于简陋了(笑

推荐Arch Linux,可以到我的blog翻安装教程。

]]>
- - - Software - - - Linux + 杂记 diff --git a/sitemap.txt b/sitemap.txt index efd1459..cf627de 100644 --- a/sitemap.txt +++ b/sitemap.txt @@ -1,6 +1,6 @@ +https://zlicdt.github.io/2024/09/08/archlinux-installation/ https://zlicdt.github.io/2024/08/21/git-guide/ https://zlicdt.github.io/2024/08/12/why-choose-mac/ -https://zlicdt.github.io/2024/06/01/archlinux-installation/ https://zlicdt.github.io/2024/01/06/hexo-fluid-with-gitalk/ https://zlicdt.github.io/2022/11/29/archlinux-deploy-docker/ https://zlicdt.github.io/about/index.html diff --git a/sitemap.xml b/sitemap.xml index 5473d28..f56c811 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,27 +2,27 @@ - https://zlicdt.github.io/2024/08/21/git-guide/ + https://zlicdt.github.io/2024/09/08/archlinux-installation/ - 2024-08-21 + 2024-09-07 monthly 0.6 - https://zlicdt.github.io/2024/08/12/why-choose-mac/ + https://zlicdt.github.io/2024/08/21/git-guide/ - 2024-08-14 + 2024-08-21 monthly 0.6 - https://zlicdt.github.io/2024/06/01/archlinux-installation/ + https://zlicdt.github.io/2024/08/12/why-choose-mac/ - 2024-08-12 + 2024-08-14 monthly 0.6 @@ -103,7 +103,7 @@ https://zlicdt.github.io/ - 2024-08-22 + 2024-09-07 daily 1.0 @@ -111,70 +111,70 @@ https://zlicdt.github.io/tags/Docker/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/Linux/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/C/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/GPG/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/hexo/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/AI/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/Electron/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/C/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/%E6%9D%82%E8%AE%B0/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/tags/git/ - 2024-08-22 + 2024-09-07 weekly 0.2 @@ -183,14 +183,14 @@ https://zlicdt.github.io/categories/Software/ - 2024-08-22 + 2024-09-07 weekly 0.2 https://zlicdt.github.io/categories/Programming/ - 2024-08-22 + 2024-09-07 weekly 0.2 diff --git a/tags/Linux/index.html b/tags/Linux/index.html index cba2aa2..3b10656 100644 --- a/tags/Linux/index.html +++ b/tags/Linux/index.html @@ -241,8 +241,8 @@

2024

- - + +
Arch Linux 安装教程