Home
Posts
Categories
Tags
About
ArchLinux 安装流程
postedOn: 2024-8-11   updatedOn: 2024-8-15   notIncluded
wordsCount: 14033   readingTime: 29 mins   viewers:

ArchLinux 安装流程

一、准备工作

1
2
3
非必须:
systemctl stop reflector.service
systemctl status reflector.service(按q退出结果)

查看是否UEFI启动:

1
ls /sys/firmware/efi/efivars

If it outputs a bunch of stuff (efi​ variables), it is in UEFI​ mode. Otherwise, make sure you are booting in UEFI​ mode.

二、连接网络

1、无线网络

Use iwctl​ for network connections:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
View port status: (network or NIC status up or down):
ip link
ip link set 设备名 up
If the wireless card is not enabled, to use rfkill unblock device_name (wlan 0)

iwctl # Accessing the Interactive Command Line
device list # List wireless card device names, such as wireless device wlan0
station wlan0 scan # scanning network
station wlan0 get-networks # List all wifi networks
station wlan0 connect wifi-name # To connect, note that you can't enter Chinese here. Enter your password and you're good to go!
exit # Exit after successful connection

Check to see if the wireless network driver is enabled:

1
lspci -k | grep Network

2、有线数据网络

If you don’t have a wireless network, you can use USB to share your phone’s data: it works straight away!

3、网线

自动

4、以上三选一到此步

1
2
ping www.bilibili.com
ctrl ^C 跳出循环,不行就回到上一步debug,必须保证网络通畅才能进行下去。

三、更新系统时钟

1
2
timedatectl set-ntp true # Synchronize system time with network time
timedatectl status # Checking Service Status

四、分区

1、分区

1
2
3
 # View the current partition status:
fdisk -l 或 lsblk
 # Find your hard disk, usually it's shaped like: nvmexnY or sdx (x Y is a number), it's a whole hard disk, not part of a partition.
1
cfdisk /dev/nvme0n1 # Partitioning the disk where archlinux is installed

分区:
EFI分区:1GB
SWAP分区:8GB(如果内存大于16G且没有休眠需求可以不要),内存越小需求越多。

EXT4文件系统:余额

双系统:
EFI使用windows的就好了,建议大于500MB,傲梅分区好像可以改
其它跟上面一样,别把windows的盘划掉了。

1
2
3
1G -- EFI system
8G -- Linux swap
remain -- linux file system
1
2
复查当前分区状况:
fdisk -l 或 lsblk

2、格式化与挂载(旧版-ext4版)

1
2
3
mkfs.fat -F32 /dev/nvme0n1p1 # 将刚刚的EFI初始化,如果是双系统就不要
mkfs.ext4 /dev/nvme0n1p3  # 将交换空间初始化
mkswap /dev/nvme0n1p2  # 将文件系统初始化
1
2
 # 启用交换空间:
swapon /dev/nvme0n1p2

挂载:

1
2
3
4
5
6
# 将文件系统挂载到根目录
mount /dev/nvme0n1p3 /mnt
 # 建立efi文件夹
mkdir -p /mnt/boot/efi 
# 将EFI分区挂载到/mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efi  

使用lsblk​检查文件系统是否挂载得当,使用free -h​查看swap是否开启成功。

3、格式化与挂载(btrfs版)

用过一段时间的arch后,感觉timeshift的备份过于庞大,对于笔记本的512G来说双系统的占用已经有些紧张了,所以这里推荐以下btrfs文件系统的设置:

1
2
3
4
5
6
7
8
 # 将刚刚的EFI初始化,如果是双系统就不要
>> mkfs.fat -F32 /dev/nvme0n1p1
 # 格式化btrfs分区,并为这个分区赋予(-L)一个标签(myArch),你会在'/'中看到这个名字。
>> mkfs.btrfs -L myArch /dev/nvme0n1p3
 # 初始化交换空间
>> mkswap /dev/nvme0n1p2
 # 激活交换区
>> swapon /dev/nvme0n1p2
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
第一次挂载(为了分子卷):
 # 将主要分区/dev/nvme0n1p3设置为/mnt并开启透明传输
>> mount -t btrfs -o compress=zstd /dev/nvme0n1p3 /mnt

# % 可以使用 'df -h' 或 'df -T'来查看当前分区状况。

# 创建 / 目录子卷
>> btrfs subvolume create /mnt/@

# 创建 /home 目录子卷
>> btrfs subvolume create /mnt/@home

# % 可以使用 'df -h' 或 'df -T'来查看当前分区状况,可以明显看到区别。

 # 这条命令使用来复查是否划分子卷成功
>> btrfs subvolume list -p /mnt

>> umount /mnt # 卸载/mnt
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
第二次挂载(初始化子卷):
# 挂载 / 目录(主分区-/dev/nvme0n1p3)
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p3 /mnt

# 创建 /home 目录
mkdir /mnt/home
# 创建 /boot/efi 目录
mkdir -p /mnt/boot/efi

# 挂载 /home 目录(主分区-/dev/nvme0n1p3)
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p3 /mnt/home
# 挂载 /boot/efi 目录(efi分区-/dev/nvme0n1p1)
mount /dev/nvme0n1p1 /mnt/boot/efi

% 可以使用 'df -h''df -T'来查看当前分区状况,可以明显看到区别。

五、安装基础系统

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
源:
vim /etc/pacman.d/mirrorlist

 # 中国科学技术大学开源镜像站
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
# 清华大学开源软件镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch 
 # 华为开源镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch
# 兰州大学开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch 

更新源:
pacman -Syy

安装基本组件:(如果是手机USB​共享数据,则需要额外安装usbmuxd​)

1
2
pacstrap /mnt base base-devel linux linux-firmware linux-headers usbmuxd (btrfs-progs)
# 如果使用btrfs文件系统,额外安装一个btrfs-progs包,不需要则删除此项

添加引导:

1
2
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab(检查是否有误)

准备就绪,进入新系统:

1
arch-chroot /mnt

安装必要组件:

1
pacman -S vim iwd networkmanager ttf-dejavu sudo bluez dhcpcd wqy-zenhei ntfs-3g

bluez是蓝牙支持,台式机可以不用。ntfs-3g是ntfs文件系统支持,双系统推荐安装。wqy-zenhei防止中文界面乱码。其它包括网络管理字体权限,依照需求添加。

六、必要配置

时区:

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步硬件时间:

1
hwclock --systohc

语言:

1
vim /etc/locale.gen
1
2
3
4
5
#en_US.UTF8
#en_US IOS...
#zh_CN gb18030..
#zh_CN UTF-8
为上面四个取消注释,有一些内容被省略了,但依然可以分辨出是哪些东西
1
2
为上面的修改生效:
locale-gen
1
2
设置语言,英语:
echo 'LANG=en_US.UTF-8'  > /etc/locale.conf

不推荐在此设置任何中文 locale​,会导致 tty​ 乱码。

七、另一些必要配置

设置用户root的密码:

1
2
passwd
*******

设置主机名,以QianNia​为例:

1
echo QianNia >> /etc/hostname
1
2
3
4
5
vim /etc/hosts
# % 在其中加入以下内容:
127.0.0.1   localhost
::1         localhost
127.0.1.1   QianNia.localdomain	QianNia

安装引导程序1(二选一):只有archlinux一个系统

1
2
3
4
pacman -S grub efibootmgr

 # % (这是整个盘块,不是某个分区)
grub-install /dev/nvme0n1

安装引导程序2(二选一):双系统

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ARCH

---------------------------------
vim /etc/default/grub
去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数
#% 把 loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错
#% 加入 nowatchdog 参数,这可以显著提高开关机速度
# !!为了引导 windows,则还需要添加新的一行:(文件里已经有了,取消注释即可-通常在最后一行)
GRUB_DISABLE_OS_PROBER=false
---------------------------------

生成 GRUB​ 所需的配置文件:

1
grub-mkconfig -o /boot/grub/grub.cfg

退出安装程序:

1
2
3
exit 退出超级用户模式
umount -R /mnt 递归卸载文件分区
reboot 重启机器,拔掉U盘/CD

八、新系统配置

1
2
3
4
5
6
7
systemctl start iwd.service
systemctl start systemd-resolved.service
systemctl enable iwd.service
systemctl enable systemd-resolved.service
systemctl enable bluetooth.service
systemctl enable NetworkManager
systemctl enable dhcpcd
1
2
3
4
5
vim /etc/iwd/main.conf
添加:
[General]
EnableNetworkConfiguration=true
NameResolvingService=systemd
1
2
3
4
vim /etc/NetworkManager/NetworkManager.conf
添加:
[device]
wifi.backend=iwd

安装必要驱动:

1
2
3
4
pacman -S amd-ucode(英特尔是intel,下同)
pacman -S xf86-video-amdgpu
pacman -S mesa nvidia nvidia-settings(nvidia显卡驱动,用nvidia显卡就装,否则不用装)
pacman -S pipewire pipewire-pulse pipewire-jack pipewire-alsa #声音

建立用户,以Elaina​为例:

1
2
3
useradd -m -G wheel -s /bin/bash Elaina
passwd Elaina
******

设置权限:

1
2
3
vim /etc/sudoers
取消注释
#%wheelAll=(ALL:ALL)All

重启:

1
reboot

九、正常启动

pacman配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
vim /etc/pacman.conf
添加以下内容:
-------------------------------------------------------------------------------
[archlinuxcn]
SigLevel = 
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
-------------------------------------------------------------------------------

取消注释:
[muiltilab]
Include = /etc/pacman.d/mirrorlist
1
2
sudo pacman -Syy 更新源
sudo pacman -S archlinuxcn-keyring

安装桌面环境kde​为例:

1
2
3
4
sudo pacman -S xorg(必装组件)
sudo pacman -S plasma sddm dolphin kate ark okular spectacle konsole 
#  plasma是桌面基础,sddm为登陆管理器,dolphin是文件浏览器,ark为打包工具,kate为文件编辑器,spectacle是截图软件,konsole为终端。
systemctl enable sddm

十、常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 安装软件
+ `pacman -S (软件名)`:安装软件,若有多个软件包,空格分隔
+ `pacman -S --needed (软件名)`:安装软件,若存在,不重新安装最新的软件
+ `pacman -Sy (软件名)`:安装软件前,先从远程仓库下载软件包数据库
+ `pacman -Sv (软件名)`:输出操作信息后安装+ `pacman -Sw (软件名)`:只下载软件包,而不安装
+ `pacman -U (软件名.pkg.tar.gz)`:安装本地软件包
+ `pacman -U (http://www.xxx.com/xxx.pkg.tar.xz)`:安装一个远程包
# 卸载软件
+ `pacman -R (软件名)`:只卸载软件包不卸载依赖的软件
+ `pacman -Rv (软件名)`:卸载软件,并输出卸载信息
+ `pacman -Rs (软件名)`:卸载软件,并同时卸载该软件的依赖软件
+ `pacman -Rsc (软件名)`:卸载软件,并卸载依赖该软件的程序
+ `pacman -Ru (软件名)`:卸载软件,同时卸载不被任何软件所依赖
# 搜索软件
+ `pacman -Ss (关键字)`:在仓库搜索包含关键字的软件包
+ `pacman -Sl `:显示软件仓库所有软件的列表
+ `pacman -Qs (关键字)`:搜索已安装的软件包
+ `pacman -Qu`:列出可升级的软件包+ `pacman -Qt`:列出不被任何软件要求的软件包
+ `pacman -Q (软件名)`:查看软件包是否已安装
+ `pacman -Qi (软件包)`:查看某个软件包详细信息
+ `pacman -Ql (软件名)`:列出软件包所有文件安装路径
# 软件包组
+ `pacman -Sg`:列出软件仓库上所有软件包组
+ `pacman -Qg`:列出本地已经安装的软件包组和子软件包
+ `pacman -Sg (软件包组)`:查看软件包组所包含的软件包
+ `pacman -Qg (软件包组)`:查看软件包组所包含的软件包
# 更新系统
+ `pacman -Sy`:从服务器下载最新的软件包数据库到本地
+ `pacman -Su`:升级所有已安装的软件包
+ `pacman -Syu`:升级整个系统
# 清理缓存
+ `pacman -Sc`:清理未安装的软件包文件
+ `pacman -Scc`:清理所有的缓存文件

参考:

1
2
3
4
三个教程:
https://zhuanlan.zhihu.com/p/478075538
https://zhuanlan.zhihu.com/p/433920079
https://zhuanlan.zhihu.com/p/112541071
1
2
日常化使用配置:https://arch.icekylin.online/
https://aprilzz.com/archives/%E5%9C%A8arch%E4%B8%AD%E4%BD%BF%E7%94%A8timeshift%E4%BF%9D%E7%B3%BB%E7%BB%9F%E5%B9%B3%E5%AE%89

十一、软件配置(1)< arch >

1、浏览器与代理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
>> sudo pacman -S yay
>> yay -Syu
>> yay -S microsoft-edge-stable-bin #微软浏览器(同步浏览数据),firefox也行
>> yay -S firefox # firefox英文版本,如果需要中文,需要额外安装语言包。
--------------------------------------------
An installed (edge) can not be opened because you locale.gen setting is error: to use following commands can deal with this problem.
英文界面不可用,需要先把系统设置为中文?
>> sudo vim /etc/locale.gen
将下列取消注释(其实上面安装的时候已经好了,可以跳过这一步)
$ en_US.UTF8...
$ en_US ISO ...
$ zh_CN gb12030...
$ zh_CN UTF8...
>> sudo locale-gen
>> sudo pacman -S wqy-zenhei(上面安装系统的时候也已经安装了)
最后把系统设置为中文即可(kde设置)
--------------------------------------------
# 常用软件
--------------------------------------------
>> yay -S baidunetdisk-bin #百度网盘
>> yay -S linuxqq # NT架构的QQ,不再需要wine即可使用

代理工具Clash for windows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
https://wwsh.lanzoum.com/iiRi50mia0xe
密码:fp0u
解压,进入目录,
>> ./cfw #运行cfw
设置系统(kde设置)代理:127.0.0.1 7890(重启)
开启LAN,IPv6,Service Mode,TUN Mode,Mixin等开关,在setting中开启silent start,利用订阅开启代理。
而后:
yay -S clash-for-windows-bin #有代理就下载更快了,后续有更新也可以交由yay直接更新(单纯看不惯标题栏的new,非强迫症可以不用安装)
最后设置start with linux就可以自动启动了。
# 提示:clash for windows的时代结束了(或者说clash的时代结束了),在2023年的某一日,clash for windows的作者在twitter中分享了一张照片,图中包含半张车牌的汽车可能成为引子;自这条推特发布不到一日,clash for windows仓库关闭,作者于推特表示江湖再见。cfw因此毕业了,鉴于此次事件,与作者fndroid可能相识并有交流的clash内核及其clash相关软件的维护者也纷纷关闭仓库。clash的时代落下了帏幕。由于不再维护,后续版本可能出现的bug乃至安全性问题都需要使用者自行考虑,不少人为cfw保存了历史版本以供用户下载使用,使用者需要自行承担使用过期软件的风险。基于此,仍可以使用少量尚在维护的clash项目(Clash Meta?),或则使用v2ray系列软件(V2rayN、ClashN、V2raya),甚至netch、SSR for Windows等等。

linux工具V2raya:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 在archlinuxcn中包含了v2raya工具,如果使用aur,则需要额外下载一些依赖来构建这个软件。因此,选用archlinuxcn是更佳选择。
>>  yay  v2raya # 选择2即可。
2 archlinuxcn/v2raya 2.0.5-1 (7.8 MiB 26.7 MiB) (Installed)
    A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan and Pingtunnel protocols
1 aur/v2raya 2.0.5-1 (+21 1.72) (Out-of-date: 2023-07-31) (Installed)
    A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan and Pingtunnel protocols

>>  systemctl  enable --now  v2raya.service #  设置开机启动这个代理程序

>>  systemctl  start v2raya #  来快速启动/关闭(stop)代理服务

首次登陆程序localhost:2017,程序会要求创建一个管理员用户。按要求导入链接后,开启透明代理,终端程序以因此可以更快速地访问Github。

2、安装字体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
中文字体:
>> yay -S ttf-hannom noto-fonts noto-fonts-extra \
    noto-fonts-emoji noto-fonts-cjk adobe-source-code-pro-fonts  \
    adobe-source-sans-fonts adobe-source-serif-fonts \
    adobe-source-han-sans-cn-fonts adobe-source-han-sans-hk-fonts \
    adobe-source-han-sans-tw-fonts adobe-source-han-serif-cn-fonts \
    wqy-zenhei wqy-microhei

英文字体:
>> yay -S ttf-dejavu ttf-droid ttf-hack \
    ttf-font-awesome otf-font-awesome ttf-lato  \
    ttf-liberation ttf-linux-libertine ttf-opensans  \
    ttf-roboto ttf-ubuntu-font-family

>> vim /etc/profile.d/freetype2.sh
--------------------------------------------
# 取消注释最后一句
export FREETYPE_PROPERTIES="truetype:interpreter-version=40"
>> fc-list #查看字体列表
>> mkfontscale #建立字体缓存
>> mkfontdir
>> fc-cache -fv #刷新缓存

3、设置备份

1
2
3
设置备份,这是必要的
>> sudo pacman -S timeshift # 安装Timeshift
>> sudo systemctl enable --now cronie.service # 启用Crond服务,启用该服务后Timeshift才能定期自动创建快照

timeshift 的备份大小随时间而增大,设置合适的时间间隔启动备份是必要的。通常对系统文件采用including all files 的设置;而对个人文件采用including only hidden files(只备份隐藏文件)。这个选择依赖于使用者,例如,我的世界.minecraft文件夹隐含于顶层文件夹中,它通常也是被including的对象,如果是离线游戏,恢复备份会导致本地内容回退,产生不可逆的后果,因此需谨慎使用。

4、设置输入法 (旧-fcitx&sogoupinyin )

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
>> yay -S fcitx-configtool #fcitx管理工具
>> yay -S fcitx-gtk2 fcitx-gtk3 fcitx-qt4 fcitx-qt5
>> sudo vim ~/.pam_environment #环境配置
--------------------------------
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
XMODIFIERS DEFAULT=@im=fcitx
--------------------------------
>> sudo vim ~/.xprofile #环境配置(一个有时不管用)
--------------------------------
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
--------------------------------
>> #(严重不推荐,如果重启可以自动启动可以跳过,否则可以设置桌面级开机自启应用,这条命令的cp会导致很多后续问题)cp /etc/xdg/autostart/fcitx-autostart.desktop ~/.config/autostart #设置自动启动
>> yay -S fcitx-sogoupinyin #进一步安装搜狗输入法
打开fcitx配置页面,添加输入法(选择展示非当前语言的输入法,添加,)--设置(--高级),使sogou默认激活。

4、设置输入法(新-fcitx5)

1
2
3
4
5
6
7
8
$ sudo pacman -Rsc $(pacman -Qsq fcitx)(卸载fcitx及其依赖的包-如果有)

$ yay -S fcitx5 fcitx5-configtool fcitx5-gtk fcitx5-qt  \
    fcitx5-chinese-addons fcitx5-rime fcitx5-lua
    #(参考arch-wiki,挑选了几个常用的包,其中fcitx5-im(fcitx5
    # fcitx5-configtool fcitx5-gtk fcitx5-qt)是必要框架,
    # fcitx5-chinese-addons fcitx5-rime是两个中文输入法
    #(可以自己选,也可以一起安装体验,推荐第一个),fcitx5-lua用于日期支持)
1
2
3
4
5
6
7
8
1)> $ yay -S fcitx5-input-support
2)> $ sudo vim /etc/environment
% GTK_IM_MODULE=fcitx
% QT_IM_MODULE=fcitx
% XMODIFIERS=@im=fcitx
% SDL_IM_MODULE=fcitx
% GLFW_IM_MODULE=ibus
1、2与3应该三选一就可以了,使用1可以直接完成配置。
1
2
3
4
5
6
7
3)> sudo vim ~/.pam_environment
% GTK_IM_MODULE=fcitx5
% QT_IM_MODULE=fcitx5
% XMODIFIERS=@im=fcitx5

3)> sudo vim ~/.xprofile
% fcitx5 &
1
2
3
4
5
软件的自动启动可以参考wiki,kde、gnome等默认支持自动启动。

一些常用词库,fcitx5允许自己下载导入搜狗输入法的词库
yay -S fcitx5-pinyin-zhwiki rime-pinyin-zhwiki fcitx5-pinyin-moegirl-rimeAUR moegirl
yay -S fcitx5-pinyin-custom-pinyin-dictionary

也罢,fcitx5不太好用,换回来sogou了,yyds..QAQ..(如果你的拼音足够准确,敲键盘足够稳当,可以试试fcitx5,比搜狗快不容易卡死,但是失去了纠错模糊拼音,我仿佛不会中文了,打字之旅举步维艰,小学语文终于给了我迎面痛击…),

ps:fcitx5已经更新,支持wayland,打字体验可以通过修改设置获得提升,强烈推荐。

5、终端优化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
如果要美化终端,可以安装这个
>> yay -Sy zsh zsh-autosuggestions zsh-syntax-highlighting  \
    zsh-theme-powerlevel10k zsh-completions
#配置终端的易用性
>> chsh -s /usr/bin/zsh #切换终端模式
重启,打开终端,进入第一步设置。
>> sudo vim ~/.zshrc
--------------------------------
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
--------------------------------
注销/重启,打开终端,进入第二步设置。

6、常用软件

1
2
3
4
5
6
>> yay -S gwenview yakuake #图片查看,yakuake终端
>> yay -S vlc #视频软件
>> yay -S typora #md软件(有免费的可以用选)
>> yay -S wps-office-cn libtiff5  cups  libjpeg-turbo  pango curl  ttf-wps-fonts  ttf-ms-fonts  wps-office-fonts  wps-office-mime-cn wps-office-mui-zh-cn #wps2019及其各种依赖
>> yay -S  tor-browser # 隐私的浏览器
>> yay -S yesplaymusic # 代替网易云音乐的媒体软件。

7、双系统时间同步

1
2
如果是双系统,修改时间设置为local,然后登入windows校准时间。
>> timedatectl set-local-rtc 1

8、C++编程

1
2
>> yay -S clang #Kate的终端C/C++代码检查依赖
>> yay -S visual-studio-code-bin # stable?

9、VMware及错误

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>> yay -S vmware-workstation
fuse2包 - 用于 vmware-vmblock-fuse
gtkmm包 - 用于图形界面
linux-headers包 - 用于模块编译
ncurses包 (ncurses5-compat-libsAUR 用于更老版本的Vmware) - needed by the --console installer
libcanberra包 - 用于事件声音
pcsclite包

vmware-networks.service
# 用于访客网络访问(否则您将收到错误 could no connect 'ethernet 0' to virtual network
# 并且您将无法使用 vmware -netcfg)
vmware-usbarbitrator.service 用于将 USB 设备连接到访客
vmware-hostd.service 用于共享虚拟机(从版本 16 起不可用)

>> touch /etc/vmware/x #重建网络模块设置(人工重建vmare-networks模块)
>> vmware-networks --migrate-network-settings /etc/vmware/x
>> rm /etc/vmware/x
再次输入:vmware-netcfg,看看成功调用了vmware网络模块了。
>> vmware-netcfg
————————————————
原文链接:https://blog.csdn.net/u010629326/article/details/50621192
>> vmware-modconfig --console --install-all #安装模块
最后,加载 VMware 模块:
>> modprobe -a vmw_vmci vmmon
>> systemctl start vmware-networks.service vmware-usbarbitrator.service

10、内核支持

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#安装简易的安卓模拟器:xdroid()?

#安装内核支持
sudo pacman -S linux-lts linux-lts-headers
===============================================
$ sudo pacman -S linux linux-headers #Linux 默认内核(最新版,默认更新也最快)
$ sudo pacman -S linux-lts linux-lts-headers #Linux LTS 内核(低版本支持)
$ sudo pacman -S linux-zen linux-zen-headers #Linux Zen 内核(对性能有一定优化)
$ sudo ppacman -S linux-hardened linux-hardened-headers  #Linux 强化内核

#重新生成引导项
sudo grub-mkconfig -o /boot/grub/grub.cfg
#优化引导选项
sudo vim /etc/default/grub

GRUB_DEFAULT=saved # 默认使用保存的内核条目(一般位于最顶部)
GRUB_SAVEDEFAULT=true # 保存最后一个使用的内核条目(一般位于偏底部)
GRUB_DISABLE_SUBMENU=y # 可选,禁用 GRUB 子菜单,使选择内核的操作更简单

11、自定义DNS

A、修改系统DNS

对于DNS,一般由/etc/resolv.conf​来确定的。在上述安装流程中引入了networkmanager​和dhcpcd​来共同管理这个文件(重启覆盖机制)。

由于这两个包的存在,所有的设置都是临时作用的,一旦重启,resolv.conf​的内容就会被还原。因此提供的方法一是通过修改访问控制权限来达成永久生效的目的的。修改为只读并非一种解决问题的优雅方式,通过查阅资料,本文提供了第二种方式来永久化DNS设置。

方案一:

将resolv.conf设置为不可修改。命令如下:

1
 sudo chattr +i /etc/resolv.conf 

这样我们自定义dns后就不会被NetworkManager重新覆盖了。

方案二:

修改/etc/NetworkManager/conf.d/dns.conf​(如没有此文件,新建即可),增加如下两行配置 :

1
2
[main]
dns=null

再修改/etc/NetworkManager/conf.d/dns-servers.conf​(如没有此文件,新建即可),增加如下两行配置,设置自定义:

1
dns:[global-dns-domain-*] servers=::1,127.0.0.1

重启软件systemctl restart NetworkManager ​。

B、启用DOH支持

当然,这也有多个实践,较多使用的是cloudflared软件包,此处给出配置cloudflared的流程(但未实践验证);给出本文使用过的配置方式(已验证)。

方案一:

下载 cloudflared​:

1
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64

使二进制文件可执行并移至合适的目录:

1
2
chmod +x cloudflared-linux-amd64
sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared

创建 cloudflared​ 的配置目录:

1
sudo mkdir /etc/cloudflared

创建配置文件:

1
sudo nano /etc/cloudflared/config.yml

填入以下内容:

1
2
3
4
proxy-dns: true
proxy-dns-upstream:
  - https://1.1.1.1/dns-query
  - https://1.0.0.1/dns-query

保存并退出。

为cloudflared创建 systemd 服务文件:

1
sudo nano /etc/systemd/system/cloudflared.service

填入以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=cloudflared DNS over HTTPS 代理
After=syslog.target network-online.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/cloudflared proxy-dns
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

启用并开始服务:

1
2
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

编辑 resolv.conf​:

1
sudo nano /etc/resolv.conf

修改或添加:

1
nameserver 127.0.0.1

方案二:

  1. 安装 Golang(version>=1.17)

Debian/Ubuntu:

1
2
3
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang

Arch/Manjaro:

1
sudo pacman -S go
  1. 创建 GOPATH 路径
1
2
3
mkdir ~/gopath
export GOPATH=~/gopath
# 注:通常不需要写入手动写入path,安装go之后可以先验证安装,再考虑path。如果验证已经可用,则跳到第3步。
  1. 从 GitHub 下载 dns-over-https
1
2
git clone https://github.com/cutecwc/dns-over-https.git --depth=1 # 克隆来自Github的文件(如果期望更新可以看看上游,本fork不一定最新,仅为可用的快照版本)
# 上游仓库https://github.com/m13253/dns-over-https
  1. 安装并开启自启动
1
2
3
cd dns-over-https # 进入刚刚fork的那个文件夹顶层
sudo make install # 需要系统已经安装make,arch可以由sudo pacman -S make安装(一般已经有)
sudo systemctl enable doh-client.service --now # 启动doh服务
  1. 编辑配置文件并重启 doh
1
sudo vim /etc/dns-over-https/doh-client.conf # 修改此配置文件的内容为自己需要的DOH服务器

写入如下配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
listen = [
    "127.0.0.1:53",
    "[::1]:53",
]

[upstream]

upstream_selector = "random"

# ===========================================================
# 在这里修改自己需要的DOH服务器
# url为DOH地址
# weight为权重,如果只有一个,可以删掉weight
# ===========================================================
# DNSPod Public DNS(https://www.dnspod.cn/Products/Public.DNS)
[[upstream.upstream_ietf]]
    url = "https://doh.pub/dns-query"
    weight = 50

# Ali DNS
[[upstream.upstream_ietf]]
    url = "https://dns.alidns.com/dns-query"
    weight = 50
# ===========================================================
# ===========================================================

[others]
bootstrap = [
    "223.5.5.5:53",
    "119.29.29:53",
]

passthrough = [
    "captive.apple.com",
    "connectivitycheck.gstatic.com",
    "detectportal.firefox.com",
    "msftconnecttest.com",
    "nmcheck.gnome.org",

    "pool.ntp.org",
    "time.apple.com",
    "time.asia.apple.com",
    "time.euro.apple.com",
    "time.nist.gov",
    "time.windows.com",
]

timeout = 30

no_cookies = true
no_ecs = false
no_ipv6 = false
no_user_agent = false
verbose = false
insecure_tls_skip_verify = false

使用sudo systemctl restart doh-client.service​ 重启 doh-client服务。

  1. 修改系统DNS配置

打开 /etc/resolv.conf 文件并在首行加入:

1
2
nameserver ::1
nameserver 127.0.0.1

问题补充

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 安装问题补充

# 关于安装时报错pgp签名。
pacman-key --init
pacman-key --populate
pacman-key --refresh-keys

# 2023 年 12 月后,在新系统下安装 archlinuxcn-keyring 时可能会出现错误:
# error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) " is marginal trust
# 需要在本地信任 farseerfc 的 GPG key:
sudo pacman-key --lsign-key "farseerfc@archlinux.org"
# 然后重试安装

十二、软件配置(2)< Manjaro >

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
以下配置总结于Manjaro系统,是转向archlinux前的总结,通常,这样的内容只有观赏作用。

选择一个最快的镜像源:
sudo pacman-mirrors -i -c China -m rank
=================================================
安装vim:
sudo pacman -S vim
sudo vim /etc/pacman.conf
revise "all-allow"
=================================================
安装yay:
 sudo pacman -S yay
更新yay库:
 sudo pacman -Syyu
 sudo pacman -S archlinux-keyring
设置源:(二选一)
yay --aururl "https://aur.archlinux.org" --save
yay --aururl "https://aur.tuna.tsinghua.edu.cn" --sav
=================================================
安装google浏览器
sudo pacman -S google-chrome
安装typora软件:
yay -S typora
安装百度网盘:
pacman -Ss baidunetdisk
=================================================
安装fcitx5:好像软件商店也可以,不过需要调试一波。
http://t.zoukankan.com/liuzhijun666-p-15008966.html
安装组件:
sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt kcm-fcitx5 fcitx5-material-color
不要nano,直接查文件,vim打开编辑:
sudo nano ~/.pam_environment
cat ~/.pam_environment
环境设置:
INPUT_METHOD  DEFAULT=fcitx5
GTK_IM_MODULE DEFAULT=fcitx5
QT_IM_MODULE  DEFAULT=fcitx5
XMODIFIERS    DEFAULT=@im=fcitx5

sudo nano ~/.xprofile
=================================================
=================================================

export ALL_PROXY="socks5://127.0.0.1:7890"
export http_proxy="127.0.0.1:7890"
export https_proxy="127.0.0.1:7890"

临时设置终端代理
export https_proxy=http://127.0.0.1:7890
export http_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890
curl www.google.com
取消:
unset http_proxy
unset https_proxy

如果想要永久生效,将变量写入到 /etc/profile 配置文件里即可

git代理设置:
git config --global http.proxy 'socks5://127.0.0.1:7890'
git config --global https.proxy 'socks5://127.0.0.1:7890'
https://v2xtls.org/linux%E7%BB%88%E7%AB%AF%E8%AE%BE%E7%BD%AE%E4%BB%A3%E7%90%86/

=================================================
安装tldr命令行工具
https://www.vpsphb.com/top_4340.html

=================================================
安装bilibili视频
yay -Ss bilibili-bin

=================================================
安装wps中文版,如果要软件商店安装,需要注意别下载英文的
yay -S ttf-wps-fonts wps-office-mui-zh-cn wps-office-mime-cn wps-office-cn ttf-ms-fonts
https://www.cnblogs.com/hztjiayou/p/12054384.html

=================================================
双系统时间不匹配,使得linux使用本地时间,改完不用重启,立刻见效。
sudo timedatectl set-local-rtc true

=================================================
安装qq,(yay)
deepin-wine-qq
git config --global https.proxy 'socks5://127.0.0.1:7890'

=================================================
解压乱码问题
https://cloud.tencent.com/developer/article/1948412

使用unar ***.zip解压

十三、软件配置(3)< EndeavourOS >

在此处稍微介绍一下Arch系列的另一个受欢迎的分支,archlinux的arch-install脚本使用起来不太方便,属于一种食之无味弃之可惜的尴尬位置。如果不希望使用繁琐的命令行安装archlinux又不希望使用manjaro这种过分添加了额外东西的系统,不妨使用图形化安装界面,它会让你选择那些包要安装,这种安装是更加可控的。

EndeavourOS 既保持了archlinux的KISS原则,又不会有Manjaro的无条件的全部安装。做到了易用性和治疗强迫症的完美统一。

配置方法都和上面<1>差不多,安装时注意看软件包哪些是自己需要的,哪些是自己用不上的(举个例子:提供了amd-ucode|xf86-video-amdgpu和intel部分,但显然一般情况只需要安装其中一个,默认全部安装显然没有必要)。

配置代理:(更新)

使用上面的方法安装Archlinux后,发现使用clash-for-windows-bin时可以正常使用,但转到EOS后发现终端怎么也过不了代理了。解决方案如下:

1
2
systemctl start systemd-resolved.service
systemctl enable systemd-resolved.service

配置完之后可以不用在kde中更改系统代理设置(多此一举)。

cfw的其余设置按照上面讲的即可。

关于Systemd-resolved.service的相关介绍可以参考arch-wiki。

-肉眼可见的包数量变多了(相比于Archlinux),上面的软件包配置完成后,Manjaro(约1000)>EndeavourOS(约900)>Archlinux(约800)。但还可以接受,就懒得清理了0.0. 。

-美化的尽头是默认org…

1
2
3
4
5
6
2023年3月11日 由于更新终端导致了引导错误,进入live环境中重新安装了linux内核,随后可以启动,鉴于eos更新机制奇特,其后的更新期望在无图形界面的终端开始。由于更新中断,可能有其它软件问题等待发现。
问题来源:kde图形界面在更新时崩溃,桌面级更新任务终止,导致系统内核未完全更新,确实***.img组件。
解决方式:进入live环境,挂载相关分区,进入chroot,联网并重新pacman -S linux linux-headers
遇到问题:
eos-live的sudo密码:不需要密码,直接sudo su就可以进入root用户模式。
timeshift备份未找到:提示无法进入,要求进入sudo/su重试,但是本身就是su环境,仍然不能运行。
1
2
3
2023年3月23日:
eos在安装软件和更新时总是导致de环境闪退,从而导致更新失败,十分不好的体验,应该是
安装的时候选择不安装某些组件导致的:日志?解决方法?
1
使用wayland-kde桌面时,出现字体虚的问题。在kde系统设置中调整:Appearance-Fonts,调节Sub-pixel rendering 为BGR,Hinting为Slight。这个设置或许不是通解,但通过排列组合的调整应该不是问题。
1
使用archlinuxcn源时,在安装archlinuxcn-keyring时会提示error。在终端显示时通常表现为error: 口口口 ...。此错误通过修改 /etc/pacman.conf中的'SigLevel = Optional TrustAll' 为 'SigLevel =' 以使用默认设置。
1
2
3
4
5
kde默认使用gwenview打开图片。软件不支持avif、webp等图片形式的查看,通过yay -Qi gwenview可知:
Optional Deps   : qt5-imageformats: support for tiff, webp, and more image formats
                  kimageformats: support for dds, xcf, exr, psd, and more image formats
                  kamera: import pictures from gphoto2 cameras
其中,安装kimageformats以获得avif的图片支持。

十四、系统清理

1、预备内容

一般结构

  • boot 此目录不做处理。因为这里用于存放引导文件,内核的目录。
  • efi 此目录不做处理。因为这里用于存放 ESP 的目录。
  • etc 此目录需要做处理。因为这里可能含有用户修改过的配置文件。
  • home 此目录暂时不做处理。限于篇幅原因,清理家目录我打算放到下一篇文章,本篇文章仅介绍清理系统目录。
  • root 此目录暂时不做处理。限于篇幅原因,清理家目录我打算放到下一篇文章,本篇文章仅介绍清理系统目录。
  • srv 此目录需要做处理。因为这里可能含有用户修改过的关于服务器的数据存储路径。
  • tmp 此目录不做处理,因为一个 tmpfs​ 文件系统。

运行时数据

  • run 此目录不做处理,因为一个 tmpfs​ 文件系统。

供应商提供的操作系统资源

  • /usr 此目录需要做处理。因为这里含有操作系统文件,此目录不应被用户修改,如必要需检查一遍并还原修改。

持久变量系统数据

虚拟内核和 API 文件系统

此目录不做处理。因为这是一个虚拟内核和 API 文件系统。详细信息请参阅:虚拟内核和 API 文件系统

  • dev
  • proc
  • sys

兼容性符号链接

  • bin -> usr/bin 此目录不做处理。因为我们将会处理 /usr/bin​ 目录。
  • sbin -> usr/bin 此目录不做处理。因为我们将会处理 /usr/bin​ 目录。
  • lib -> usr/lib 此目录不做处理。因为我们将会处理 /usr/lib​ 目录。
  • lib64 -> usr/lib 此目录不做处理。因为我们将会处理 /usr/lib​ 目录。

其他目录

  • opt 此目录需要做处理。因为此目录包含一些大型软件包,您可能需要处理卸载残留。
  • mnt 此目录需要做处理。是供用户自行挂载分区所使用的,您可能曾经把这里搞得乱七八糟的。

2、清理目录

我们需要对以下目录做处理:

手动处理:srvmnt

etc​:如果您想要整理一下此文件夹,请跟随以下步骤。

1
2
3
4
5
# 查找在此目录下,不被 pacman 管理的文件
find /etc | LC_ALL=C pacman -Qqo - 2>&1 >&- >/dev/null | cut -d ' ' -f 5-

# 查找被 pacman 管理的,但被修改过的文件
sudo pacman -Qkk 2>&1 | grep /etc

var​:请谨慎清理此文件夹。此文件夹可能含有部分软件的家目录。

1
2
3
4
5
# 查找在此目录下,不被 pacman 管理的文件
find /var | LC_ALL=C pacman -Qqo - 2>&1 >&- >/dev/null | cut -d ' ' -f 5-

# 查找被 pacman 管理的,但被修改过的文件
sudo pacman -Qkk 2>&1 | grep /var

usr​:此目录不应该被修改过,请确保始终使用 pacman 管理软件包。让专业的软件干专业的事。但如果被修改过,请尝试跟随以下步骤。

1
2
3
4
5
# 查找在此目录下,不被 pacman 管理的文件
find /usr | LC_ALL=C pacman -Qqo - 2>&1 >&- >/dev/null | cut -d ' ' -f 5-

# 查找被 pacman 管理的,但被修改过的文件
sudo pacman -Qkk 2>&1 | grep /usr

opt​:此目录不应该被修改过,请确保始终使用 pacman 管理软件包。让专业的软件干专业的事。但如果被修改过,请尝试跟随以下步骤。

1
2
3
4
5
# 查找在此目录下,不被 pacman 管理的文件
find /opt | LC_ALL=C pacman -Qqo - 2>&1 >&- >/dev/null | cut -d ' ' -f 5-

# 查找被 pacman 管理的,但被修改过的文件
sudo pacman -Qkk 2>&1 | grep /opt

卸载不需要的软件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 查找主动安装的软件包
pacman -Qe 

# 查找主动安装的,不在 base 包组里的软件包。
comm -23 <(pacman -Qqe | sort) <(expac -l '\n' '%E' base | sort)

# 查找主动安装的,不在 base base-devel 包组的软件包。
comm -23 <(pacman -Qqe | sort) <({ pacman -Qqg base-devel; expac -l '\n' '%E' base; } | sort -u)

# 列出其他软件包不需要的所有已安装软件包,以及不在基本元软件包或基本软件包组中的软件包:
comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; echo base; } | sort -u)

# 如上所述,但有描述:
expac -H M '%-20n\t%10d' $(comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; echo base; } | sort -u))

清理不被包管理器所跟踪的文件

使用 pacman 安装 lostfiles。lostfiles 包含一些过滤规则,会过滤掉常见的误报。

1
2
3
sudo lostfiles

# 参考文献[]如何规整你的 Arch Linux 系统:https://blog.inetech.fun/Tutorial/clean-arch.html

十五、附加

1、EXT4与BTRFS的选择?

Ext4 文件系统

Ext4是许多 Linux 发行版的默认文件系统。它于 2008 年 10 月发布,带有 Linux 内核 2.6.28。Ext4 是扩展文件系统的第四个版本,是 Ext3 的继承者。

Ext4 是一个健壮的文件系统,已经使用了很长时间。它是一个日志文件系统,这意味着它会保留文件在磁盘上的位置的“日志”,并跟踪对磁盘的任何其他更改。

Btrfs 文件系统

Btrfs或B-Tree文件系统是一种更新的、现代的、开源的文件系统。它是为 Linux 系统量身定制的写时复制 (CoW) 文件系统,其名称来源于使用 B-trees 存储内部文件结构。在 CoW 文件系统设置中,当数据被修改时,文件系统会复制修改后的数据,并将数据写回文件系统上的可用位置。

由于数据被复制和修改到文件系统上的不同位置,这消除了断电时数据损坏的风险,仅举一个例子。需要指出的是,在修改过程中,原始数据被保留并保持不变。

Btrfs 文件系统的最大缺点是大文件容易碎片化,因此需要定期进行碎片整理。

Btrfs 的开发早在 2007 年就在甲骨文开始,但包括 SUSE、Facebook、Redhat 在内的其他主要公司也在为其开发做出贡献。Btrfs 的存在是因为开发人员希望扩展文件系统的功能以包含快照、校验和等功能。

BTRFS 功能

btrfs 提供的一些有趣的功能包括:

  1. 支持大文件

Btrfs 文件系统最多可以支持 2个 64 字节,相当于16EiB或exbibytes!现在这是一个巨大的存储空间!

  1. 高效的文件存储

Btrfs 提供基于范围的文件存储。这被描述为为文件存储保留的连续区域。文件元数据的开销大大减少,小元数据直接有助于提高存储效率和性能。

Btrfs 仍然是高效的文件存储,它通过将较小的文件打包为元数据来为它们提供高效的存储。

  1. 内置 RAD 支持

Btrfs 文件系统包括对 RAID 0(数据剥离)、1(数据镜像)和 RAID 10(数据剥离和镜像)的支持

  1. 在线碎片整理和调整大小

使用 Btrfs,即使文件系统处于联机状态,也可以执行碎片整理和调整大小。

  1. 动态inode分配

Btrfs 提供 inode 的动态分配。它会在需要时将 inode 分配给文件,这有助于防止在文件系统上有很多小文件的情况下 inode 耗尽。

  1. 可写和只读快照

Btrfs 提供的另一个出色功能是对快照的支持。您可以轻松地创建文件系统的快照,并在数据意外删除或损坏时利用它来恢复其他地方的数据。

  1. 支持校验和

另一个重要特性是对校验和的支持。校验和是小块数据,可以避免静默文件或数据损坏的可能性,这是其他文件系统不提供的。校验和存储在文件系统中,并持续关注文件系统错误和数据损坏的迹象。

  1. 优化对 SSD 驱动器的支持

SSD(固态硬盘)驱动器确实在 PC 中提供了相当程度的速度、可靠性和稳定性。Btrfs 文件系统通过优化它们的读写性能进一步提高了它们的性能,从而提高了 SSD 的寿命。

Ext4 和 Btrfs 文件系统的比较:

  1. 日志和写时复制支持

这是两个文件系统之间出现的第一个主要区别。Ext4 文件系统是一个日志文件系统,而 Btrfs 是一个 Copy-on-Write (CoW) 文件系统。

  1. 多设备支持

将单个文件系统分布在多个设备上提供了某些优势,例如容量增加和可靠性更高。Btrfs 具有内置的 RAID 支持,可以轻松地在文件系统级别管理多个设备。

Ext4 文件系统没有对多设备的内置支持。您将不得不使用LVM 2之类的第 3 方逻辑卷管理器将文件系统跨越多个设备和磁盘。

  1. 文件系统级重复数据删除:

重复数据删除是一种自动从文件系统中删除重复数据副本以节省磁盘空间的功能。Btrfs 文件系统通过将文件系统中的相同块替换为指向该块的单个副本的逻辑链接来支持重复数据删除。此功能可节省大量磁盘空间。

Ext4 文件系统不支持重复数据删除。

  1. 文件系统级压缩

Btrfs 使用压缩算法来支持文件系统级别的数据压缩。这意味着数据将在写入文件系统时自动压缩。

Ext4 文件系统没有内置的压缩支持。

  1. 最大分区和文件大小

使用 ext4 可以创建的最大分区是 1 exbibyte——相当于大约 1,152,921.5 TB。最大文件大小为 16 TiB,比普通消费者目前可以购买的任何硬盘都要大得多。

Btrfs 支持的最大分区和文件大小高达 16Eib。

Ext4 允许您创建最多 232 个(= 4,294,967,296 ~= 40 亿)文件。Btrfs 允许您创建最多 264 个(= 18,446,744,073,709,551,616 ~= 18 quintillion)文件。

  1. 校验和/ECC支持

Btrfs 文件系统使用 CRC32C 校验和来确保数据完整性并避免数据损坏。Ext4 文件系统不保证数据的完整性。

  1. 快照支持

Btrfs 文件系统支持文件的只读和可写快照。快照是一个子卷,它使用 COW 功能与另一个子卷共享其数据和元数据。

Ext4 文件系统不支持创建文件系统的快照。

  1. 分块分块和尾打包

块子分配是一种功能,将大文件存储在块中,同时有效利用最后一个块末尾的尾部空间。块子分配是一种将另一个文件块的一部分存储到尾块并节省磁盘空间的方法。

Btrfs 旨在利用此可用空间,并可以将多个块的尾部与其他文件打包在一起。这提高了文件系统性能并提高了存储效率。

Ext4 不支持尾部打包。

结论:

Ext4 文件系统是扩展文件系统的最新版本。Ext4 已经存在了很长时间,并且被证明是可靠和稳定的。建议日常使用。万一停电,ext4 很有可能会确保您保存的数据安全。

Ext4 专注于高性能和可扩展性。这是一个坚如磐石的选择,因为它已经存在很长时间了,它带来了多年来的系统测试和错误修复。不管其所有功能如何,它都不支持重复数据删除、压缩或加密。

另一方面,Btrfs 是一个现代文件系统,可以处理多达 16 倍于 Ext4 的数据。这种改进特别重要,因为 Linux 现在在企业实体中使用。Btrfs 有很多上面提到的很好的特性,例如 Copy-on-Write、快照、校验和和复制。Btrfs 正在快速增长,但仍被认为不稳定。

到目前为止,ext4 似乎是桌面系统上更好的选择,因为它是默认文件系统,并且在传输文件时比 btrfs 更快。btrfs 文件系统值得研究,但要在桌面 Linux 上完全取代 ext4 可能需要几年时间。 –2022TAG

如何格式化?

1
2
3
4
5
6
7
8
> mkfs.ext4 /dev/nvme0n1p3 #ext4文件系统
> mkfs.btrfs /dev/nvme0n1p3 #btrfs文件系统
#mkfs.btrfs -L myArch /dev/nvmexn1pn 如果设置了分区label,使用-L来指定
> mount -t btrfs -o compress=zstd /dev/sdxn /mnt
#-t 选项后指定挂载分区文件系统类型
#-o 选项后添加挂载参数:
#compress=zstd —— 开启透明压缩
> df -h # -h 选项会使输出以人类可读的单位显示
Table of Contents
Related Posts