Fedora配置
前言
前阵子装了个双系统Fedora,开箱即用确实香,在此记录下配置Fedora的过程,指不定哪天就玩炸了得重装呢hhh
写文时Fedora已发布stable 34 version,主系统Windows 10 Pro,笔记本Asus Zenbook Duo.
FUCK YOU NVIDIA
Fedora对于N卡会默认安装开源的nouveau,然而nouveau的功能并不齐全,如果想用cuda的话还是得装闭源驱动,如果不是因为我这笔记本只有N卡,我肯定AMD YES. 但既然我们没得选,那只能在丢下一句“FUCK YOU NVIDIA”后老老实实折腾驱动。
首先我们要添加RPM Fusion仓库:
$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
$ sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
然后根据显卡的类型安装对应版本的驱动
$ sudo dnf install akmod-nvidia
之后重启电脑即可,理论上安装完akmod后会自动disable开源的nouveau. 检查是否安装成功NVIDIA驱动:
$ nvidia-smi
在Secure boot下FUCK YOU NVIDIA
如果你因为种种原因不想关Secure boot的话,你会在重启后惊喜的发现没有成功加载akmod,这是因为akmod模块并没有进行签名,无法通过Secure boot. 由于我的Windows 10对硬盘进行了加密,必须要Secure boot, 否则每次进入系统都需要输入一串密钥。目前的解决方案就是手动对akmod模块进行签名,具体可参考Fedora的wiki
首先创建一对X.509公钥私钥:
$ cat << EOF > configuration_file.config
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = yourOrganizationName
emailAddress = yourEmailAddress
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
然后用openssl生成一组X.509公私钥:
$ openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 \
-batch -config configuration_file.config -outform DER \
-out public_key.der \
-keyout private_key.priv
接着将我们生成的密钥Enroll到系统里。由于Fedora支持Machine Owner Key (MOK),我们可以很简单地将这密钥Enroll进去:
$ mokutil --import public_key.der
然后重启系统,跟着指示完成Enroll即可。接下来只需要对akmod模块进行签名即可
$ /usr/src/kernels/$(uname -r)/scripts/sign-file \
sha256 \
private_key.priv \
public_key.der \
my_module.ko
将上面的my_module.ko换成/usr/lib/modules/$(uname -r)/extra/nvidia/
下的所有.ko即可。最后重启系统,就能成功加载NVIDIA驱动了。
必备Package
- zsh
- oh-my-zsh
- vim
- latte-dock
- ffmpeg
- 'dnf-command(versionlock)'
oh-my-zsh配置
ZSH_THEME="ys"
plugins=(
git
extract
rand-quote
z
sudo
)
quote | cowsay
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
KDE插件
KWin Scripts
- Force Blur
- Latte Window Colors
Widgets
- Active Window Control
- Simple Monitor
双系统蓝牙共享
虽然有人说双系统蓝牙键盘能直接切换,但无论如何我的都不行,因为两个系统下蓝牙键盘的物理地址相同,但Key不一样,导致没法直接切换。每次切换系统都得重新配对一次,那这属实麻烦。
解决方法就是修改Windows或Linux端的Key值,使得两个系统下的Key值相同即可。
Fedora端:
需要以root身份访问并修改蓝牙信息
# cd /var/lib/bluetooth/aa:bb:cc:dd:ee:ff/aa:bb:cc:dd:ee:ff
# vim info
[LinkKey]下的Key即为我们需要的值。
Windows端:
Windows不能直接在注册表里访问蓝牙信息,会显示权限不足,需要下载微软官方的工具PsExec,然后在管理员权限下的cmd执行:
PsExec.exe -s -i regedit
以此打开注册表,然后进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\aabbccddeeff
, 其Data即为Key值
中文输入法配置
目前Fcitx已经发布了version 5,几乎能开箱即用,这里附上GitHub地址和官方wiki地址。
安装:
$ sudo dnf install fcitx5 fcitx5-chinese-addons kcm-fcitx5
然后在~/.zshrc里添加
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
最后在Configure里的input methods添加pinyin即可。
多触摸屏
我的笔记本是双触摸屏,但KDE默认的触摸映射是每个触摸屏都映射到两个屏幕上,这就导致点的地方和鼠标的位置有很大的偏差。解决方案是手动将每个触摸屏单独映射到自身的屏幕,而不是所有屏幕。
首先获取显示器的编号
$ xrandr
然后获取触摸屏的编号和id
xinput --list
最后将触摸屏和显示器重新映射一下即可
xinput --map-to-output 'pointer:xxxxxxxxx' eDP-1
KDE Connect
KDE Connect能帮助我们在电脑和手机之间建立快速便捷的联系,比如互传文件,这样就不用装微信或者搭FTP了。不过默认情况下Fedora的防火墙是没有打开KDE Connect需要使用的Ports的,所以手机上无法搜索到电脑,需要在Firewall里允许端口1714-1764
VS Code
首先将VS Code的官方Key和源导入到包管理中:
$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
然后安装即可:
$ sudo dnf check-update
$ sudo dnf install code
dnf版本锁
由于Fedora经常更新内核,每次更新内核我们都要重新导入NVIDIA驱动的密钥,所以我们可以加个版本锁,便于我们手动更新内核。
$ sudo dnf install 'dnf-command(versionlock)'
$ sudo dnf versionlock add "kernel*"