Linux
系统的安装
部分电脑是不支持安装 Linux 的,这种情况下可以使用 rEFInd 你的进行中转:
安装 rEFInd 并解压
将 refind.conf-sample 重命名为 refind.conf
进入带有管理员权限的 cmd 。运行以下命令:
mountvol G: /s powershell cp refind G:\EFI\ exit G: bcdedit /set {bootmgr} path EFI\refind\refind_x64.efi
重要
在编辑的时候, 路径必须要以 EFI 开头。
在安装完 Linux 后可以重新进入 Windows 并将启动项更改为 Grub。
SSH
SSH 路径的权限如下:
文件 |
权限 |
|---|---|
.ssh |
744 |
id_rsa |
600 |
剩余 |
644 |
硬件管理
散热
安装软件包
thermald进行以下配置
systemctl enable --now thermald
硬盘
优化 SSD 设备的速度和寿命:
systemctl enable --now thermald fstrim.timer
电源管理
安装软件包
tlp-rdw和ethtool进行以下配置
systemctl mask systemd-rfkill.service
systemctl mask systemd-rfkill.socket
systemctl enable --now tlp
参见
软件优化
使用高性能的 dbus-broker
安装软件包
dbus-broker启用服务
systemctl enable dbus-broker.service
systemctl --global enable dbus-broker.service
然后重启
为桌面用户预留资源
安装软件包
uresourced进行以下设置
systemctl enable --now uresourced
GameMode
安装软件 gamemode
对于以下游戏,无需任何配置:
古墓丽影:崛起
全面战争传奇:不列颠尼亚王座
全面战争:战锤 2
尘埃 4
全面战争:三国
否则:使用 gamemoderun 运行游戏。
改善低内存条件下的表现
systemctl enable --now systemd-oomd
zram
zram 可以作为交换分区或交换文件的替换。zram 通过在内存区域开辟交换空间,并对存入其中的数据进行压缩变相增加内存容量。通过在内存中开辟交换空间来避免在磁盘中进行分页从而提升了性能。在物理内存较少的情况下更是如此。1
永久配置
安装软件包
zram-generator创建文件并写入以下内容:
# /usr/lib/systemd/zram-generator.conf
[zram0]
zram-fraction = 1.0
max-zram-size = 8192
现在 直接重启 ,然后可以使用 free -h 查看交换空间的变化。
备注
服务 systemd-zram-setup@zram0.service 是根据配置文件从 systemd-zram-setup@.service 自动派生出来的,其名字不一定非是如此,最好使用 bash 的自动补全功能查看。
临时配置
警告
所有更改会在重启后消失
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 32G > /sys/block/zram0/disksize
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0
禁用 zram
临时禁用只需要执行 swapoff /dev/zram0 或者 systemctl stop swap-create@zram0
永久禁用只需要删除或清空文件 /usr/lib/systemd/zram-generator.conf
参见
交换文件
创建交换文件用于 休眠
执行以下代码:
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress mkswap /swapfile swapon --priority 0 /swapfile # 编辑 /etc/fstab 文件 /swapfile none swap defaults,pri=0 0 0
这样,系统会尽可能少地使用交换文件用于交换,而只是用于休眠。
使用 swapon –show 可以查看交换分区的情况。一般来说,zram 的优先级为 100。更倾向于被交换。swapfile 优先级为 0,一般只是用于休眠。
在 内核参数 中添加以下内容:
resume=/dev/disk/by-uuid/swap_device resume_offset=swap_file_offset
其中 swap_device 和 swap_file_offset 分别使用
findmnt -no UUID -T /swapfile和filefrag -v /swapfile | awk '{ if($1=="0:"){print substr($4, 1, length($4)-2)} }'查看。添加内核钩子:
# /etc/mkinitcpio.conf HOOKS=(...block resume ...)
执行
mkinitcpio重新生成内核。
双显卡
添加一下配置文件: 2
# /etc/X11/xorg.conf.d/nvidia.conf
Section "ServerLayout"
Identifier "layout"
Screen 0 "iGPU"
Option "AllowNVIDIAGPUScreens"
EndSection
Section "Device"
Identifier "iGPU"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "iGPU"
Device "iGPU"
EndSection
Section "Device"
Identifier "dGPU"
Driver "nvidia"
EndSection
定义别名
alias nvrun="__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia"
重启进 xorg 环境,运行 nvrun glxgears -info | grep GL_RENDERER 验证结果。
使用 NVIDIA 作为主显卡
电脑换了个 144Hz 的屏幕,游戏是空洞骑士能上 400 FPS。但是会出现 Xorg 卡死的问题。究其原因是集显的性能太弱。要在 Fedora 上使用 NVIDIA 作为主显卡,执行下面步骤:
添加 rpmfusion 源
执行
sudo dnf in akmod-nvidia sudo cp /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf
在
/etc/X11/xorg.conf.d/nvidia.conf的 OutputClass 节中追加Option "PrimaryGPU" "yes"
在
/etc/sddm/Xsetup中追加xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
备注
就目前而言,Wayland 也可以使用 N 卡驱动
更新用户文件夹
控制台下先将语言设回英文: export LANG=en_US。
再将home目录下的文件夹名称进行更新: xdg-user-dirs-gtk-update, 弹出的界面点同意更改。
再将语言设回中文即可。export LANG=zh_CN
https://blog.nowcoder.net/n/3f051d15bfc6430c8d0d3d639829ddc4
更新固件
要更新固件,需要激活服务 fwupd.service 。然后执行
$ fwupdmgr refresh
$ fwupdmgr update
ksmbd
首先需要现在并安装内核模块
git clone https://github.com/namjaejeon/ksmbd
dnf install kernel-devel-$(uname -r)
make
sudo make install
sudo modprobe ksmbd
sudo echo "ksmbd" >> /etc/modules-load.d/ksmbd.conf
然后需要安装用户空间工具
git clone https://github.com/cifsd-team/ksmbd-tools
./autogen.sh
./configure --prefix=/usr
make
sudo make install
# 安装配置
sudo mkdir -p /etc/ksmbd
sudo cp smb.conf.sample /etc/ksmbd/smb.conf
sudo cp ksmbd.service /usr/lib/systemd/system
另外,一个可选的 smb.conf 配置文件为:
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
#
# Note:
# SMB1 is disabled by default. This means clients without support for SMB2 or
# SMB3 are no longer able to connect to smbd (by default).
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
follow symlinks = yes
wide links = yes
unix extensions = yes
[homes]
comment = Home Directories
browseable = Yes
read only = Yes
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
然后进行配置并启动用户空间工具
ksmbd.adduser -a <username>
ksmbd.mountd
现在,ksmbd 已经在运行了,之后可以使用以下命令查看当前系统的 samba 共享情况
smbclient -L 127.0.0.1 -U%
重启 ksmbd 工具
ksmbd.control -s
ksmbd.mountd
Samba
尽管 GNOME 使用 WebDav 作为共享文件的方式,但是 Samba 毫无疑问依然是目前支持最广、最跨平台的共享方式。
建立 Samba 共享:
创建配置文件
[global] workgroup = WORKGROUP server role = standalone server passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw # 日志 log file = /var/log/samba/log.%m max log size = 50 follow symlinks = yes wide links = yes unix extensions = no # 匿名用户支持 security = user guest account = guest map to guest = bad user # usershare usershare path = /var/lib/samba/usershares usershare max shares = 100 usershare allow guests = yes usershare owner only = yes [homes] comment = Home Directories browseable = yes writable = yes inherit acls = yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = no [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 # 匿名用户支持 & 公有用户支持 [Guest] comment=RW dir for anyone path=/var/lib/samba/usershares/guest public=yes only guest = no writable = yes
创建匿名用户
useradd guest -s /sbin/nologin
创建 Usershare 路径
mkdir -p /var/lib/samba/usershares/guest groupadd sambashare chown root:sambashare /var/lib/samba/usershare chmod 1770 /var/lib/samba/usershare gpasswd sambashare -a your_username创建 Samba 用户
smbpasswd -a samba_user
为 Samba 打开相关的端口
firewall-cmd --add-service=samba --zone=home --permanent firewall-cmd --add-service=samba-client --zone=home --permanent firewall-cmd --add-service=samba-dc --zone=home --permanent
赋予 Samba 相关的 SELinux 权限
setsebool samba_export_all_ro on setsebool samba_enable_home_dirs on
然后重启服务即可
备注
Samba 提供了两个服务:smb 和 nmb 。
smb 是主要的 Samba 服务程序
nmb 使局域网可以通过主机名访问共享文件
参见
服务
Systemd 的服务文件位于 /{etc,usr/lib,run}/systemd/system
键盘映射
对于 GNOME 和 KDE 而言,可以修改 /usr/share/X11/xkb/symbols/pc 3
系统日志
systemd 日志
查看 systemd 日志使用 journalctl 工具。journalctl 的主要选项有:
选项 |
说明 |
|---|---|
-e |
跳转到日志底部 |
-n |
只显示最近的 n 行 |
-k |
只显示内核消息 |
-x |
使用解释性文本解释日志 |
-u |
只显示指定服务的日志 |
–user |
只显示用户服务日志 |
–since= |
只显示以指定日期开始的日志 |
–until |
只显示截止到指定日期的日志 |
例如查看 dbus-broker.service 的日志
journalctl -xu dbus-broker.service
查看用户服务
journalctl --user -xu dbus-broker.service
只查看今天的日志
journalctl -u dbus-broker.service --since yesterday --until=today | xsel -b
备注
当报告 Bugs 时,不要使用 -x 选项
查看内核消息
尽管 systemd -k 也能查看内核日志,但是有时候使用 dmesg 会更加方便,而且 dmesg 是有高亮的。
其主要的参数有:
参数 |
说明 |
|---|---|
-H |
使用人类友好的输出 |
-l |
指定日志等级(使用 –help 查看) |
-P |
指定分页器 |
-u |
打印用户空间消息 |
–since= |
只显示以指定日期开始的日志 |
–until |
只显示截止到指定日期的日志 |
查看实时日志
使用 tail -f 可以实时监控一个文件的内容
其它日志
系统的日志大部分被储存在了 /var/log 中,其目录结构类似于:
.
├── anaconda
│ ├── anaconda.log
│ ├── dbus.log
│ ├── dnf.librepo.log
│ ├── hawkey.log
│ ├── journal.log
│ ├── ks-script-*.log
│ ├── lvm.log
│ ├── packaging.log
│ ├── program.log
│ └── storage.log
├── audit
│ └── audit.log
├── boot.log-*
├── btmp-*
├── chrony
├── cron-*
├── cups
│ └── cups-pdf-Cups-PDF_log
├── dnf.librepo.log.*
├── dnf.log.*
├── dnf.rpm.log
├── firewalld
├── fsck_hfs.log
├── glusterfs
├── hawkey.log-*
├── journal
├── lastlog
├── libvirt
│ └── qemu
├── maillog-*
├── mariadb
├── messages-*
├── ppp
├── private
├── qemu-ga
├── samba
├── secure-*
├── speech-dispatcher
├── spooler-*
├── sssd
│ └── sssd_kcm.log-*
├── swtpm
│ └── libvirt
├── tallylog
├── wpslog
├── wtmp
└── Xorg.0.log
另外,对于普通用户而言,一些日志被储存到了 ~/.cache 路径下
查看硬件温度
使用 sensors 和 nvidia-smi 命令可以查看温度和 NVIDIA 显卡的温度
KDE 主题位置
KDE 的主题位于以下位置:
位置 |
用途 |
|---|---|
~/.local/share/plasma/desktoptheme |
plasma 主题 |
~/.local/share/plasma/look-and-feel/ |
全局主题 |
~/.local/share/plasma/plasmoids/ |
插件 |
~/.local/share/aurorae/themes |
窗口装饰 |
~/.local/share/color-schemes |
颜色 |
~/.local/share/konsole/ |
konsole 主题 |
~/.config/Kvantum |
kvantum 主题 |
备注
另外,kde 使用 drkonqi 作为 Debug Handler。对于 Fedora 而言需要安装 plasma-drkonqi,具体用法参见 https://github.com/KDE/drkonqi
rpm 安装源码包
yumdownloader --source kvantum
yum install mock
useradd -s /sbin/nologin mockbuild
rpm -ivh ./kvantum-1.0.0-1.fc35.src.rpm
cd ~/rpmbuild
修改 exif 信息
例如
exiftool -Orientation="Rotate 270 CW" 1.jpg -O 8.jpg
所有支持的元信息在 https://www.exiftool.org/TagNames/EXIF.html 中被列出