From bfa4d940333a067e5c15c62d05c093b7b77ecc6f Mon Sep 17 00:00:00 2001
From: zlicdt 总习
此文章适用于现代(2010年及以后)的x86_64机器 用了这么长时间Arch,总该写一篇安装教程了。 ·x86_64架构的CPU,建议为2008年以后的CPU 截至教程发布日,Arch Linux Live CD的最新版本是2024年9月的,测试无误。 ·x86_64架构的CPU,建议为2008年以后的CPU,比如 Intel Core i系列之后的以及AMD FX 很多命令都需要更改为你自己的设置。 这些环境变量的定义需要你在等号 首先,是你要连接的 WIFI 名字,也就是 SSID: 然后是它的密码: 新建的用户名字: 如果没有 这里 zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。 近期这一步会出现问题,因为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) 如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了 GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核) Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包) 更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau 安装 NVIDIA 官方的驱动之后,需要编辑 重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。 到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~ 相信你已经不可拒绝的安装了 Oh My Zsh,然而默认的主题过于简陋,你想把它变得花哨。 如果你想更进一步,我推荐 Powerlevel10k。 如果你是国内的网络环境,请执行 这一步我没有尝试过使用命令,所以在这里编辑 在这里如果你直接 然后 一天你打开浏览器,看到了抽象的日本字体,比如关、复的字形过窄,门的点变成了竖插在上面…… 并 Vim 是一个文本编辑器,我们已经安装好了。 如果网络条件差也是没有办法(( 2024 2024 2024 2024 设想一下,如果你写了一个程序,它会有一个甚至多个源代码文件: 这时候,你发现自己的第一版源代码被覆盖掉了!! 你发现,如果在第一版文件写成后将其存档,记为一个版本,这样就不会发生这种事了。 有时候,一个程序同时存有两个以上的版本有其必要性,例如:发布版本中程序错误已经被修正,但没有加入新功能;而开发版本则有新的功能正在开发、也有新的错误待解决,于是便需要同时维护两个不同的版本。 此外,为了找出只存在于某一特定版本中的程序错误、或找出程序错误出现的版本,开发人员也必须通过比对不同版本的源代码以找出问题的位置。 我们可以使用版本控制器来: 我们要讲的Git,就是软件版本控制器中最著名的一个,也是应用最广的一个。 首先要知道你使用的是什么平台。 之后执行 当然这需要新的macOS版本; 这样,执行: 如果是Windows 11并且使用了魔法,那么你大概是可以使用 即可。 如果不幸的事,你不喜欢更新,在使用老掉牙的1803版Windows 10,或者不能使用魔法: 你新建了一个文件夹,你将在里面放置你要管理的文件(或者已经放置了) 我们现在添加一个文件 记住现在它的版本是1。 这样全部文件都会加进来。 好的,你的这份作业已经写好,正准备交给老师。 后面的 这样这个版本就被存储了下来。 不幸,老师不认可你这份作业。你需要改进它,于是你修改 这个属于sed替换文本,看不懂无视就好。 现在 老师看了一下,原来他的不认可是来自于一个拼写错误:it’s => its,并非不满意那个版本号。 有同学会觉得这是小题大做了,我只修改个版本号为什么要用Git回退,直接改一下不就行了么? 我这里只是在演示功能。如果你写一些大的工程,很多地方的语句&调用函数等可能经过比较大程度的修改甚至覆盖。 Git用HEAD表示当前的版本。前一个版本就是HEAD^,前两个版本就是HEAD^^。 我们往前退一个版本,而且要回到前一个版本的已提交状态,所以我们: 现在查看下 然后你修改文件再提交: 你可能觉得写 这里的commit id不需要写全,当然写一两个字母也不行。主要是让Git分辨出来特定版本,又不与别的版本混淆就行。 你可能听说过一些平台,比如 Github, Gitlab等,这些都是Git远程仓库平台。 没错,命令就是 这后面名字可以自己起,但是建议维持原名,最多只在其基础上加点东西。 过了一段时间,Linux内核源码的仓库更新了,而你的仓库还是旧版本,这时候该如何同步? 这样仓库就会更新了。 显然,Linux内核源码仓库是很严格的,只有官方人员才能提交代码。 这样,远程仓库这辈子就有了。 Github应该是在很久以前(似乎是2020-2021年间)禁止了只使用用户名+邮箱进行的提交。
-
+
- 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 安装教程
+ 上一篇
+
+
Arch Linux 安装教程
截至教程发布日,Arch Linux Live CD的最新版本是2024年5月的,经测试没有问题。支持的硬件
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动11月的Live CD)
·可用的网络连接
·20GB可用的硬盘空间支持的硬件
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动如今的Live CD)
·可用的网络连接
·20GB可用的硬盘空间具体步骤
制作安装介质
+https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
推荐写入工具balenaEtcher定义环境变量(可选)
因此为了方便(可以直接复制我的),我们在此处先定义一些环境变量。=
后面输入要输入的信息。1
export SSID=
1
export WIFI_PASSWORD=
1
export NEW_USERNAME=
Live CD设置
-
WIFI: 1
2
3
4iwctl station wlan0 scan
iwctl station wlan0 get-networks
iwctl station wlan0 connect $SSID --passphrase $PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
ip addr
WIFI: 1
2
3
4iwctl station wlan0 scan
iwctl station wlan0 get-networks
iwctl station wlan0 connect $SSID --passphrase $WIFI_PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
ip addrwlan0
的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(ip addr
返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。
可选:停止reflector
服务,防止/etc/pacman.d/mirrorlist
被写入其他地区镜像 -> 1
systemctl stop reflector.service
由于结界,我们无法直接从结界外部的镜像站获取软件包。在Live CD内也无法使用魔法绕过结界,所以步前辈们的足迹,使用他们搭建好的国内镜像站(注意:这一步须在reflector.service
停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist
会被它重写) -> 1
vim /etc/pacman.d/mirrorlist
国内网络环境懂得都懂,用镜像(注意:这一步须在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
ip a
然后我们设置这台机器 root 用户的密码: 1
passwd
我这里假设这台机器的ip是 192.168.101.12,于是在另一台在同一个局域网的机器上,执行 1
ssh root@192.168.101.12
yes
,再输入刚才设置的密码,就可以连接了。磁盘相关
1
2
3mount /dev/nvme0n1p2 /mnt
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efiswapfile
-> swap
创建为8G,可根据需要改变count=
后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。swap
的用途是在内存不足时,将硬盘的一部分作为内存的扩展空间使用。这里swap
创建为8G,可根据需要改变count=
后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。1
2
3
4dd if=/dev/zero of=/mnt/swapfile bs=1M count=8192
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfile安装系统
首先初始化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
fstab
-> 1
genfstab -U /mnt >> /mnt/etc/fstab
chroot
到新系统 -> 1
arch-chroot /mnt
初步配置系统
1
2ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc1
2
3echo 主机名 > /etc/hostname
useradd -m 用户名 -G wheel
passwd 用户名1
2
3echo archlinux > /etc/hostname
useradd -m $NEW_USERNAME -G wheel
passwd $NEW_USERNAMEuseradd
用于添加账户,passwd
用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。sudoers
-> 1
visudo
# %wheel ALL=(ALL:ALL) ALL
(大概率在第108行)的注释取消,使得wheel
组里的用户可以使用sudo
# %wheel ALL=(ALL:ALL) ALL
(大概率在第114行,使用vim
按:114
跳转)的注释取消,使得wheel
组里的用户可以使用sudo
zsh
->
如果不喜欢zsh,或者考虑兼容性,请跳过这一步。1
2
3
4
5su 用户名
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
exit1
2
3
4
5su $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
exithttps://github.com/ohmyzsh/ohmyzsh
。
1
2
3echo "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
#zh_CN.UTF-8 UTF-8
和#en_US.UTF-8 UTF-8
的注释符号“#
”
最后运行 -> 1
locale-gen
1
2
3
4systemctl enable NetworkManager
systemctl enable sshd
systemctl enable sddm # KDE
systemctl enable gdm # GNOME
gurb
已支持引导Windows。
可以让grub
找到Windows。 1
sudo pacman -Sy ntfs-3g fuse os-prober
UEFI
引导的安装方式
1
2
3grub-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
3grub-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
加入以下文本 -> 1
sudo vim /etc/pacman.conf
1
2[archlinuxcn]
Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$archkeyring
-> archlinuxcn-keyring
包时遇到如下报错: 1
error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust
archlinux-keyring
安装在系统中,只是缺乏信任: 1
sudo pacman-key --lsign-key "farseerfc@archlinux.org"
显卡驱动
而N卡,需要进行以下步骤查看显卡型号
1
lspci -k | grep -A 2 -E "(VGA|3D)"
查看显卡型号
1
lspci -k | grep -A 2 -E "(VGA|3D)"
安装驱动
1
sudo pacman -S nvidia nvidia-settings
安装驱动
1
sudo pacman -S nvidia-open-dkms nvidia-settings
后续
/etc/mkinitcpio.conf
,在 HOOKS 一行删除kms
并保存
然后执行1
mkinitcpio -P
1
mkinitcpio -P
常用软件
-
-1
sudo pacman -S telegram-desktop
1
paru -S visual-studio-code-bin
先启动 /etc/pacman.conf
中的 multilib
源,其中包含32位软件1
2
3
4sudo 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
2paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
paru -S google-chrome
Go 写的 musicfox,TUI 版网易云1
paru -S go-musicfox-git
1
2sudo pacman -S steam
sudo paru -S proton现在都能玩黄油了惹1
sudo pacman -S telegram-desktop
1
paru -S visual-studio-code-bin
先启动 /etc/pacman.conf
中的 multilib
源,其中包含32位软件
不要直接复制这些命令,要先看好你的显卡是哪家的1
2
3
4sudo 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-plugins1
2paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
paru -S google-chrome
Go 写的 musicfox,TUI 版网易云1
paru -S go-musicfox-git
1
2sudo pacman -S steam
paru -S proton
这是一个 Clash Verge 的修复版本,解决了原版无法更新订阅的问题1
paru -S clash-verge-rev
美化
Shell
在没有装任何附加主题以及插件的 Oh My Zsh 中,我常用的是叫做ys
的主题。
执行omz theme set ys
即可。
它的 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
它有强大的客制化能力,你甚至可以把它变成IDE。但是在这里我只浅浅写一下美化。。
比如我的Twinkle vim config
1
2
3git clone https://github.com/zlicdt/twinkle-vim-config.git
cd twinkle-vim-config
./install.sh
请注意一下「常用软件」部分的第7号,这是一个奇妙小工具。
-
-
- 为什么选择 Mac
- 上一篇
-
-
-
+
@@ -237,8 +237,8 @@
-
- Git 初步教程
+
+ Arch Linux 安装教程
-
+
+
+
@@ -279,15 +300,15 @@
-
- 为什么选择 Mac
+
+ Git 初步教程
-
+
@@ -305,7 +326,7 @@
@@ -319,15 +340,15 @@
-
- Arch Linux 安装教程
+
+ 为什么选择 Mac
-
+
-
-
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 @@
版本控制系统(VCS)概述
一个小情景
在这之后,你把它发布了(比如交作业)。
但是老师看完后,发现缺了功能,让你再进行修改;
你改完,又将它交上去了,但是老的功能又出了bug。
你很无奈,准备把它改回去,再在其基础上进行修改。
然后你忘记了原来是怎样写的,遂PDF并重写。。
你可以在第二版被驳回后,返回到第一版并继续修改。
当然Git的功能远不止这些。VCS概念
Git
它由Linus Torvalds(Linux kernel项目创始人、主力开发者)使用C语言写成。
它负责管理了从Linux kernel v2.6至今的代码。
它是分布式的,意味着我们可以从其他机器获取更新版本的代码以及把我们的代码传输至其他机器上。安装
各个平台的安装方式都是不同的。Linux
1
2
3sudo apt update
sudo apt install git
# 然后看提示,按Y键、回车1
2
3
4
5sudo dnf up
sudo dnf in git
# 如果无法正常运行,可能是版本太老,请使用以下命令
sudo yum update
sudo yum install git1
2
3sudo pacman -Sy
sudo pacman -S git
# 回车1
2sudo zypper up
sudo zypper in git1
sudo emerge -a dev-vcs/git
git --version
:
如果有以下输出,安装就完成了:macOS
如果你还在用Catalina,请务必更新。1
xcode-select --install
git --version
就对了。Windows
winget
的。这是很方便的。
按Win + R
输入powershell
,1
winget install --id Git.Git -e --source winget
从 https://git-scm.com/download/win 下载适应你OS的版本。
一般人下载第二个就可,之后一路无脑Next。使用
初始化
如何让Git管理它呢?使用下面命令即可让Git接管它。1
git init
现在,目录下多了一个.git文件夹,它就是负责存放Git的配置文件以及相关版本数据的。添加文件到仓库
test
进去,它的内容是:1
2
3This is a test file.
Now, its version is:
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
test
文件已经是第二版了!
现在我们可以看到,我们的文件内容中的“1”变成了“2”,同时Git也发现了这个文件更改。
好了,我们再重复上一步提交。1
2git add .
git commit -m "Version 2!修改test文件"
看来并不需要修改版本号,只需要修改拼写错误就行。
这样做可以完全回到原来的状态。
往前100个版本可以写100个^,但是这肯定是不易数的,所以可以写成HEAD~100。1
git reset --hard HEAD^
test
文件的内容:--hard
参数会回退到上个版本的已提交状态,--soft
会回退到上个版本的未提交状态,--mixed
会回退到上个版本已添加但未提交的状态。1
2
3sed -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
比如前6个字符大概就可。远程仓库
那么,如何使用这些远程仓库呢?Clone(克隆)
git clone
。
后面接链接与本地目标目录。
比如,从Github克隆Linux内核的仓库到当前用户主目录下:1
git clone https://github.com/torvalds/linux.git ~/linux
现在,远程的目录就被1:1复刻到你这里来了。Pull(拉取)
切换到仓库目录下,运行:1
git pull
Push(推送)
所以,我们自己创建一个Github仓库用于演示:
创建之后,是这样的:
你看它下面都写出来了,如何给本地仓库设置远程:1
2
3git remote add origin https://github.com/zlicdt/Test.git
git branch -M main
git push -u origin main
(请忽略我用老邮箱进行提交导致的头像变动另请注意
我们可能遇到相关提示,并且有一大堆很麻烦的操作。
表面上是为了安全,实际上却是安全了,但更多的是推自家的github-cli,它可以概括为让你在CLI登录Github账号,从而正常进行推送。
建议都装一个。更新中,敬请期待……
]]>
+
截至教程发布日,Arch Linux Live CD的最新版本是2024年9月的,测试无误。
·x86_64架构的CPU,建议为2008年以后的CPU,比如 Intel Core i系列之后的以及AMD FX
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动如今的Live CD)
·可用的网络连接
·20GB可用的硬盘空间
https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
很多命令都需要更改为你自己的设置。
因此为了方便(可以直接复制我的),我们在此处先定义一些环境变量。
这些环境变量的定义需要你在等号=
后面输入要输入的信息。
首先,是你要连接的 WIFI 名字,也就是 SSID:
1 |
|
然后是它的密码:
1 |
|
新建的用户名字:
1 |
|
1 |
|
如果没有wlan0
的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(
ip addr
返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。reflector
服务,防止/etc/pacman.d/mirrorlist
被写入其他地区镜像 -> 1 |
|
reflector.service
停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist
会被它重写) -> 1 |
|
i
进入insert
模式,添加Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
esc
退出insert
模式,输入:wq
保存并退出vim
1 |
|
1 |
|
1 |
|
yes
,再输入刚才设置的密码,就可以连接了。这一步需要按照情况自行更改,操作不当会导致数据丢失。一定要理解下面info中的内容。
我这台机器有一个NVME接口的固态硬盘,它的编号是nvme0n1
。在有多个NVME接口的主板上,如果你插了多块硬盘,它将会有nvme1n1
、nvme2n1
等编号,一定要清楚自己要操作的是哪块硬盘。连在SATA与USB接口上的硬盘会显示sda
、sdb
等,sda
可能是U盘也可能是内置硬盘,请先lsblk
进行辨认。这条命令的意义是对nvme0n1
进行操作,请根据自身需要更改。
1 |
|
如果先前有Windows安装的话,请注意不要把Windows分区直接缩小大小,会让Windows坏掉。应先使用其他工具完成分区大小调整再进行后续步骤。
EFI System
Linux filesystem
Write
再输入yes
来写入分区表,再选Quit
退出ext4
文件系统 如果先前安装了Windows或者其他操作系统,不要执行第一条,会导致Windows引导损坏。
这条命令也需要自行修改,意为在nvme0n1
的第一分区创建vfat
文件系统,在nvme0n1
的第二分区创建ext4
文件系统。
1 |
|
如果之前nvme0n1p2
建立过其他文件系统,这里需要按y
确认。
改,勿照抄。/
的nvme0n1p2
挂载到/mnt
,再把nvme0n1p1
这个EFI分区挂到/mnt/boot/efi
下。
1 |
|
swapfile
-> swap
的用途是在内存不足时,将硬盘的一部分作为内存的扩展空间使用。这里swap
创建为8G,可根据需要改变count=
后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。
1 |
|
1 |
|
pacstrap
安装必要的包 1 |
|
1 |
|
1 |
|
fstab
-> 1 |
|
chroot
到新系统 -> 1 |
|
1 |
|
1 |
|
useradd
用于添加账户,passwd
用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。
sudoers
-> 1 |
|
# %wheel ALL=(ALL:ALL) ALL
(大概率在第114行,使用vim
按:114
跳转)的注释取消,使得wheel
组里的用户可以使用sudo
zsh
-> zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。
如果不喜欢zsh,或者考虑兼容性,请跳过这一步。
1 |
|
https://github.com/ohmyzsh/ohmyzsh
。1 |
|
#zh_CN.UTF-8 UTF-8
和#en_US.UTF-8 UTF-8
的注释符号“#
”1 |
|
1 |
|
gurb
已支持引导Windows。grub
找到Windows。 1 |
|
UEFI
引导的安装方式1 |
|
BIOS
引导的安装方式1 |
|
chroot
环境并重启 -> 1 |
|
如果是KDE的话,重启系统后,大概就是这样的 ->
右键
-配置
是会显示这个的 ->fcitx5-configtool
-> 1 |
|
右键
-配置
就可以看到 ->Ctrl+Tab
是不能切换到拼音输入法的,我们需要把Fcitx5
设为默认输入法并自动启动 -> 1 |
|
1 |
|
AUR
来进行补充。AUR
工具的,所以我们先装archlinuxcn
源 -> 1 |
|
1 |
|
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 |
|
archlinux-keyring
安装在系统中,只是缺乏信任: 1 |
|
1 |
|
archlinuxcn
源了!AUR
,所以我们先装一个AUR工具: 1 |
|
pacman
一样。os-prober
往往不能正常检测到Windows,需要我们再运行 1 |
|
Windows Boot Manager
。如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了
而N卡,需要进行以下步骤
1 |
|
GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核)
Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包)
更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau
1 |
|
安装 NVIDIA 官方的驱动之后,需要编辑/etc/mkinitcpio.conf
,在 HOOKS 一行删除kms
并保存
然后执行
1 |
|
重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。
到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~
1 |
|
1 |
|
/etc/pacman.conf
中的 multilib
源,其中包含32位软件1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
相信你已经不可拒绝的安装了 Oh My Zsh,然而默认的主题过于简陋,你想把它变得花哨。
在没有装任何附加主题以及插件的 Oh My Zsh 中,我常用的是叫做ys
的主题。
执行omz theme set ys
即可。
如果你想更进一步,我推荐 Powerlevel10k。
它的 Github 仓库链接是https://github.com/romkatv/powerlevel10k
就把它的文件 clone 到 ohmyzsh 的目录里吧~
1 |
|
如果你是国内的网络环境,请执行
1 |
|
这一步我没有尝试过使用命令,所以在这里编辑.zshrc
设置ZSH_THEME="powerlevel10k/powerlevel10k"
,你很快就会注意到它。
在这里如果你直接source .zshrc
加载了配置文件开始 p10k 的配置,第二个锁的图标就不能正常显示了。
所以要安装「高级」的字体,也就是打了补丁的 Nerd Fonts。这是一个系列,加入了很多图标。
我喜欢 Meslo Font,你也可以换成别的,比如 ttf-jetbrains-mono-nerd
1 |
|
然后source .zshrc
就可。
一天你打开浏览器,看到了抽象的日本字体,比如关、复的字形过窄,门的点变成了竖插在上面……
这是不可接受的。
于是你执行vim ~/.fonts.conf
把以下内容写了进去:
1 |
|
并fc-cache -fv
问题就聪明的解决了。
Vim 是一个文本编辑器,我们已经安装好了。
它有强大的客制化能力,你甚至可以把它变成IDE。但是在这里我只浅浅写一下美化。。
比如我的Twinkle vim config
1 |
|
如果网络条件差也是没有办法((
请注意一下「常用软件」部分的第7号,这是一个奇妙小工具。
在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,要买一台新机器。
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)
屏幕
当今量产型号最强的miniLED显示器,在这。
分辨率3456x2234
最大亮度1600nit(显示HDR内容时)
Display P3色域(色域容积>sRGB)
外放
这是不用多说的。
参考蓝天X170.
这是我要重中之重提及的。
包管理
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安装程序(很多软件不支持自动化安装)。
字体渲染
依赖Mac常有的高分辨率,Mac通常都是高ppi的。
以至于macOS的字体渲染都能说“清晰、重实”。
反观Windows那边,字体渲染是一个常常被提起的诟病。
Windows的字体渲染得发虚,以至于很多人都用MacType这个软件来模拟Mac的字体渲染。
但是MacType在Windows 11中,不能应用在软件标题栏了。
至此,让Windows认真渲染文字的方法只剩下开高缩放。
但是谈到缩放这个方面,不知你有没有注意过:
Windows建议的缩放倍数是根据大部分软件GUI占用最小像素数时不挤到任务栏下面的缩放倍数。
然而在这个缩放倍数下,Windows会把文字渲染得很奇怪。
比如使用微软雅黑字体时,“大”这个字,你会发现中间这一行很细,很难看。
然而,在你使用2K屏时,把缩放拉到200%以上,你会发现这个问题解决了。
但是在200%的缩放下,很多软件都无法正常显示了,它的底边会挤到任务栏下面。
你甚至没法把窗口缩小,因为鼠标不能移动到任务栏下面。
所以你需要换4K及以上的屏,并把缩放拉到200%以上。
这是个奇妙的问题,奇妙到头大。然而它在Mac上是不会存在的,任何字都显示得很好。
字体配置
首先普及:字体回落这一概念
“字体回落”用于指定一系列的字体选项,当首选字体不可用时,浏览器会按照这个列表尝试加载下一个可用的字体。这样,即使首选字体在用户的设备上不可用,页面仍然可以使用备选字体显示文本,从而保持设计的一致性。
举个例子:
你在使用VSCode撰写Markdown文章,就像我现在这样。
然而你注意到,现在编辑器内显示的中文文字很丑,它大概是叫做“宋体”的字体。
但是英文确是你在settings.json里设置的Cascadia Code等宽字体。
这就涉及到了字体回落。
在字体没有提供中文文字时,Windows会把中文文字以宋体显示。
没错,这里的默认回落字体是宋体。
如果你想使用好看一点的微软雅黑,你需要这么做:
1 |
|
然而在Mac上,这个问题是不存在的。
当你使用中文locale时,默认的回落字体是苹方。
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翻安装教程。
]]>设想一下,如果你写了一个程序,它会有一个甚至多个源代码文件:
在这之后,你把它发布了(比如交作业)。
但是老师看完后,发现缺了功能,让你再进行修改;
你改完,又将它交上去了,但是老的功能又出了bug。
你很无奈,准备把它改回去,再在其基础上进行修改。
这时候,你发现自己的第一版源代码被覆盖掉了!!
然后你忘记了原来是怎样写的,遂PDF并重写。。
你发现,如果在第一版文件写成后将其存档,记为一个版本,这样就不会发生这种事了。
你可以在第二版被驳回后,返回到第一版并继续修改。
当然Git的功能远不止这些。
有时候,一个程序同时存有两个以上的版本有其必要性,例如:发布版本中程序错误已经被修正,但没有加入新功能;而开发版本则有新的功能正在开发、也有新的错误待解决,于是便需要同时维护两个不同的版本。
此外,为了找出只存在于某一特定版本中的程序错误、或找出程序错误出现的版本,开发人员也必须通过比对不同版本的源代码以找出问题的位置。
我们可以使用版本控制器来:
我们要讲的Git,就是软件版本控制器中最著名的一个,也是应用最广的一个。
它由Linus Torvalds(Linux kernel项目创始人、主力开发者)使用C语言写成。
它负责管理了从Linux kernel v2.6至今的代码。
它是分布式的,意味着我们可以从其他机器获取更新版本的代码以及把我们的代码传输至其他机器上。
首先要知道你使用的是什么平台。
各个平台的安装方式都是不同的。
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
之后执行git --version
:
如果有以下输出,安装就完成了:
当然这需要新的macOS版本;
如果你还在用Catalina,请务必更新。
1 |
|
这样,执行:git --version
就对了。
如果是Windows 11并且使用了魔法,那么你大概是可以使用winget
的。这是很方便的。
按Win + R
输入powershell
,
1 |
|
即可。
如果不幸的事,你不喜欢更新,在使用老掉牙的1803版Windows 10,或者不能使用魔法:
从 https://git-scm.com/download/win 下载适应你OS的版本。
一般人下载第二个就可,之后一路无脑Next。
你新建了一个文件夹,你将在里面放置你要管理的文件(或者已经放置了)
如何让Git管理它呢?使用下面命令即可让Git接管它。
1 |
|
现在,目录下多了一个.git文件夹,它就是负责存放Git的配置文件以及相关版本数据的。
我们现在添加一个文件test
进去,它的内容是:
1 |
|
记住现在它的版本是1。
如果你在使用一些“花里胡哨”的shell插件,比如omz,你会发现:
Git发现有一个文件被更改了。
这时候它还没有把这个文件记录在案,我们需要这样把一个文件加入仓库:
1 |
|
test
文件就被加入仓库了。
如果那你想把目录下的全部文件加入仓库,执行:
1 |
|
这样全部文件都会加进来。
好的,你的这份作业已经写好,正准备交给老师。
现在我们需要把这堆文件记录成一个版本,也就是提交动作。
1 |
|
后面的-m
参数是必加不可的,它是用来描述这个版本大概是做了什么的。
这两个引号,必须是英文的。
当然随便写命令也可以执行成功,但是不建议这么做。
因为到后面你可能看不懂这个版本是干什么的。
这样这个版本就被存储了下来。
不幸,老师不认可你这份作业。你需要改进它,于是你修改test
文件:
1 |
|
这个属于sed替换文本,看不懂无视就好。
现在test
文件已经是第二版了!
现在我们可以看到,我们的文件内容中的“1”变成了“2”,同时Git也发现了这个文件更改。
好了,我们再重复上一步提交。
1 |
|
老师看了一下,原来他的不认可是来自于一个拼写错误:it’s => its,并非不满意那个版本号。
看来并不需要修改版本号,只需要修改拼写错误就行。
有同学会觉得这是小题大做了,我只修改个版本号为什么要用Git回退,直接改一下不就行了么?
我这里只是在演示功能。如果你写一些大的工程,很多地方的语句&调用函数等可能经过比较大程度的修改甚至覆盖。
这样做可以完全回到原来的状态。
Git用HEAD表示当前的版本。前一个版本就是HEAD^,前两个版本就是HEAD^^。
往前100个版本可以写100个^,但是这肯定是不易数的,所以可以写成HEAD~100。
我们往前退一个版本,而且要回到前一个版本的已提交状态,所以我们:
1 |
|
现在查看下test
文件的内容:--hard
参数会回退到上个版本的已提交状态,--soft
会回退到上个版本的未提交状态,--mixed
会回退到上个版本已添加但未提交的状态。
然后你修改文件再提交:
1 |
|
你可能觉得写HEAD^
的方法过于笨拙,当然还有一种方法可以解决:
1 |
|
当然在这里,你的commit id和我的不会一样。
之后,如果你想回到哪个版本,就:
1 |
|
这里的commit id不需要写全,当然写一两个字母也不行。主要是让Git分辨出来特定版本,又不与别的版本混淆就行。
比如前6个字符大概就可。
你可能听说过一些平台,比如 Github, Gitlab等,这些都是Git远程仓库平台。
那么,如何使用这些远程仓库呢?
没错,命令就是git clone
。
后面接链接与本地目标目录。
比如,从Github克隆Linux内核的仓库到当前用户主目录下:
1 |
|
这后面名字可以自己起,但是建议维持原名,最多只在其基础上加点东西。
现在,远程的目录就被1:1复刻到你这里来了。
过了一段时间,Linux内核源码的仓库更新了,而你的仓库还是旧版本,这时候该如何同步?
切换到仓库目录下,运行:
1 |
|
这样仓库就会更新了。
显然,Linux内核源码仓库是很严格的,只有官方人员才能提交代码。
所以,我们自己创建一个Github仓库用于演示:
创建之后,是这样的:
你看它下面都写出来了,如何给本地仓库设置远程:
1 |
|
这样,远程仓库这辈子就有了。
(请忽略我用老邮箱进行提交导致的头像变动
Github应该是在很久以前(似乎是2020-2021年间)禁止了只使用用户名+邮箱进行的提交。
我们可能遇到相关提示,并且有一大堆很麻烦的操作。
表面上是为了安全,实际上却是安全了,但更多的是推自家的github-cli,它可以概括为让你在CLI登录Github账号,从而正常进行推送。
建议都装一个。
用了这么长时间Arch,总该写一篇安装教程了。
截至教程发布日,Arch Linux Live CD的最新版本是2024年5月的,经测试没有问题。
·x86_64架构的CPU,建议为2008年以后的CPU
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动11月的Live CD)
·可用的网络连接
·20GB可用的硬盘空间
https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
1 |
|
如果没有wlan0
的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(
ip addr
返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。reflector
服务,防止/etc/pacman.d/mirrorlist
被写入其他地区镜像 -> 1 |
|
reflector.service
停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist
会被它重写) -> 1 |
|
i
进入insert
模式,添加Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
esc
退出insert
模式,输入:wq
保存并退出vim
这一步需要按照情况自行更改,操作不当会导致数据丢失。一定要理解下面info中的内容。
我这台机器有一个NVME接口的固态硬盘,它的编号是nvme0n1
。在有多个NVME接口的主板上,如果你插了多块硬盘,它将会有nvme1n1
、nvme2n1
等编号,一定要清楚自己要操作的是哪块硬盘。连在SATA与USB接口上的硬盘会显示sda
、sdb
等,sda
可能是U盘也可能是内置硬盘,请先lsblk
进行辨认。这条命令的意义是对nvme0n1
进行操作,请根据自身需要更改。
1 |
|
如果先前有Windows安装的话,请注意不要把Windows分区直接缩小大小,会让Windows坏掉。应先使用其他工具完成分区大小调整再进行后续步骤。
EFI System
Linux filesystem
Write
再输入yes
来写入分区表,再选Quit
退出ext4
文件系统 如果先前安装了Windows或者其他操作系统,不要执行第一条,会导致Windows引导损坏。
这条命令也需要自行修改,意为在nvme0n1
的第一分区创建vfat
文件系统,在nvme0n1
的第二分区创建ext4
文件系统。
1 |
|
如果之前nvme0n1p2
建立过其他文件系统,这里需要按y
确认。
改,勿照抄。/
的nvme0n1p2
挂载到/mnt
,再把nvme0n1p1
这个EFI分区挂到/mnt/boot/efi
下。
1 |
|
swapfile
-> 这里swap
创建为8G,可根据需要改变count=
后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。
1 |
|
1 |
|
pacstrap
安装必要的包 1 |
|
1 |
|
1 |
|
fstab
-> 1 |
|
chroot
到新系统 -> 1 |
|
1 |
|
1 |
|
useradd
用于添加账户,passwd
用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。
sudoers
-> 1 |
|
# %wheel ALL=(ALL:ALL) ALL
(大概率在第108行)的注释取消,使得wheel
组里的用户可以使用sudo
zsh
-> zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。
如果不喜欢zsh,或者考虑兼容性,请跳过这一步。
1 |
|
1 |
|
#zh_CN.UTF-8 UTF-8
和#en_US.UTF-8 UTF-8
的注释符号“#
”1 |
|
1 |
|
gurb
已支持引导Windows。grub
找到Windows。 1 |
|
UEFI
引导的安装方式1 |
|
BIOS
引导的安装方式1 |
|
chroot
环境并重启 -> 1 |
|
如果是KDE的话,重启系统后,大概就是这样的 ->
右键
-配置
是会显示这个的 ->fcitx5-configtool
-> 1 |
|
右键
-配置
就可以看到 ->Ctrl+Tab
是不能切换到拼音输入法的,我们需要把Fcitx5
设为默认输入法并自动启动 -> 1 |
|
1 |
|
AUR
来进行补充。AUR
工具的,所以我们先装archlinuxcn
源 -> 1 |
|
1 |
|
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 |
|
archlinux-keyring
安装在系统中,只是缺乏信任: 1 |
|
1 |
|
archlinuxcn
源了!AUR
,所以我们先装一个AUR工具: 1 |
|
pacman
一样。os-prober
往往不能正常检测到Windows,需要我们再运行 1 |
|
Windows Boot Manager
。如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了
而N卡,需要进行以下步骤
1 |
|
GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核)
Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包)
更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau
1 |
|
安装 NVIDIA 官方的驱动之后,需要编辑/etc/mkinitcpio.conf
,在 HOOKS 一行删除kms
并保存
然后执行
1 |
|
重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。
到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~
1 |
|
1 |
|
/etc/pacman.conf
中的 multilib
源,其中包含32位软件1 |
|
1 |
|
1 |
|
1 |
|
在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,要买一台新机器。
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)
屏幕
当今量产型号最强的miniLED显示器,在这。
分辨率3456x2234
最大亮度1600nit(显示HDR内容时)
Display P3色域(色域容积>sRGB)
外放
这是不用多说的。
参考蓝天X170.
这是我要重中之重提及的。
包管理
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安装程序(很多软件不支持自动化安装)。
字体渲染
依赖Mac常有的高分辨率,Mac通常都是高ppi的。
以至于macOS的字体渲染都能说“清晰、重实”。
反观Windows那边,字体渲染是一个常常被提起的诟病。
Windows的字体渲染得发虚,以至于很多人都用MacType这个软件来模拟Mac的字体渲染。
但是MacType在Windows 11中,不能应用在软件标题栏了。
至此,让Windows认真渲染文字的方法只剩下开高缩放。
但是谈到缩放这个方面,不知你有没有注意过:
Windows建议的缩放倍数是根据大部分软件GUI占用最小像素数时不挤到任务栏下面的缩放倍数。
然而在这个缩放倍数下,Windows会把文字渲染得很奇怪。
比如使用微软雅黑字体时,“大”这个字,你会发现中间这一行很细,很难看。
然而,在你使用2K屏时,把缩放拉到200%以上,你会发现这个问题解决了。
但是在200%的缩放下,很多软件都无法正常显示了,它的底边会挤到任务栏下面。
你甚至没法把窗口缩小,因为鼠标不能移动到任务栏下面。
所以你需要换4K及以上的屏,并把缩放拉到200%以上。
这是个奇妙的问题,奇妙到头大。然而它在Mac上是不会存在的,任何字都显示得很好。
字体配置
首先普及:字体回落这一概念
“字体回落”用于指定一系列的字体选项,当首选字体不可用时,浏览器会按照这个列表尝试加载下一个可用的字体。这样,即使首选字体在用户的设备上不可用,页面仍然可以使用备选字体显示文本,从而保持设计的一致性。
举个例子:
你在使用VSCode撰写Markdown文章,就像我现在这样。
然而你注意到,现在编辑器内显示的中文文字很丑,它大概是叫做“宋体”的字体。
但是英文确是你在settings.json里设置的Cascadia Code等宽字体。
这就涉及到了字体回落。
在字体没有提供中文文字时,Windows会把中文文字以宋体显示。
没错,这里的默认回落字体是宋体。
如果你想使用好看一点的微软雅黑,你需要这么做:
1 |
|
然而在Mac上,这个问题是不存在的。
当你使用中文locale时,默认的回落字体是苹方。
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翻安装教程。
]]>2024
- -