Published on

Fedora 36 Installation

Authors
  • avatar
    Name
    ttyS3
    Twitter

F36 当前已经 Beta, 不出意外, 4月份应该会正式发布.

由于发现磁盘还有一点空闲空间, 想来可以装一个 F36 玩玩. 主要是想体验它的默认 btrfs 文件系统.

Fedora 33 起, btrfs 就已经是Fedora Linux 桌面版本的默认文件系统, 但是老灯当时是从 Fedora 31 升级的, 由于F33之前都是默认 ext4, 因此, 即使升级到 F33, 也还是用的 ext4.

安装配置

整个安装过程还是非常顺利的, 并且安装过程比较简单, 点两下鼠标就搞定了.

安装后第一次进系统会要求创建第一个用户, 然后是有个启用第三方源(主要是 rpmfusion) 的选项, 默认是蓝色启用的.

所以 rpmfusion 也不用单独安装了.

默认的分区方案是一个 btrfs root volume, 然后 //root subvolume, /home/home subvolume, 同时 /boot 使用单独分区, 且保持使用 ext4:

[ttys3@fedora ~]$ mount | rg 'btrfs|ext4|vfat'
/dev/nvme0n1p5 on / type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=257,subvol=/root)
/dev/nvme0n1p5 on /home type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=256,subvol=/home)
/dev/nvme0n1p4 on /boot type ext4 (rw,relatime,seclabel)
/dev/nvme0n1p1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)

第一件事, 我们要调整一下 dnf 配置 /etc/dnf/dnf.conf

增加 max_parallel_downloads=8max_parallel_downloads=16 (主要看你网速)

第一次启动后, `sudo dnf upgrade -y` 更新系统到最新内核并重启 (主要是为了后面安装显卡驱动).

nvidia 专有驱动安装

重启后, 我们先把显卡驱动安装了. 默认启动时加载的是 nouveau 开源驱动. 4K 屏 流畅度一般, 切成 专有驱动丝滑.

sudo dnf install akmod-nvidia -y

成功安装 nvidia 驱动后再重启一次系统.

好了, 再次重启后, 我们 cat /proc/cmdline 验证下 n 卡驱动的内核参数是不是正常, 主要驱动就是添加了 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1, 即屏蔽开源驱动nouveau, 并启用 nvidia_drm 内核模块的 modeset (即 KMS)

老灯还有个习惯就是, 编辑 /etc/default/grub, 并删除 rhgb, 修改 quietnoquiet. (需要sudo grub2-mkconfig -o /etc/grub2-efi.cfg 然后重启的时候才能看到效果)

在老灯看来, rhgb 不利于排查问题. (当系统真出现问题的时候, 你两眼一摸黑, 不知道卡在哪一步了)

Google Chrome 的安装方法参考 https://docs.fedoraproject.org/en-US/quick-docs/installing-chromium-or-google-chrome-browsers/

# Install Third Party Repositories
sudo dnf install fedora-workstation-repositories

# Enable the Google Chrome repo
sudo dnf config-manager --set-enabled google-chrome

# Finally, install Chrome
sudo dnf install google-chrome-stable

安装 zsh 并设置为 login shell:

sudo dnf install -y zsh

# 给 root 改:
# 提示时输入 /usr/bin/zsh
sudo lchsh

# 给当自己的用户名改:
# 提示时输入 /usr/bin/zsh
sudo lchsh username

安装一些必要小工具:

dnf install -y ripgrep htop nload ncdu neovim xlsclients neofetch gedit gnome-tweaks

安装完整版的 java:

Fedora 有个坏毛病就是, 默认安装的是 headless 版的 openjdk (F36 是 java-17-openjdk-headless), 如果需要 GUI 支持, 还要安装 另一个包. 如果不安装, 你在运行基于 JAVA 的 GUI 程序时可能会遇到 "Can’t load library libawt_xawt.so" 的错误

[root@fedora yum.repos.d]# dnf list --installed | rg java
abrt-java-connector.x86_64                           1.3.1-3.fc36                        @anaconda       
java-17-openjdk-headless.x86_64                      1:17.0.2.0.8-7.fc36                 @anaconda       
javapackages-filesystem.noarch                       6.0.0-7.fc36                        @anaconda       
tzdata-java.noarch                                   2022a-1.fc36                        @fedora   
sudo dnf install -y java-17-openjdk

F33 起 Fedora 的默认编辑器就成了 nano 了, 如果你想恢复 vim 为默认编辑器, 下面的命令会安装vim为默认编辑器并卸载nano--default-editor 包.

sudo dnf install vim-default-editor --allowerasing

输入法安装, 我习惯五笔:

sudo dnf install -y ibus-rime ibus-table-chinese-wubi-jidian

git clone https://github.com/ttys3/rime-wubi $HOME/.config/ibus/rime

using ibus-setup and add Chinese - Rime and English - English Input Method

go to Gnome Keyboard add Chinese(Rime)

编辑 /etc/environment 加上:

GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
INPUT_METHOD=ibus
SDL_IM_MODULE=ibus
GLFW_IM_MODULE=ibus

编译安装 neovim 最新版 (注: 也可以使用 sudo dnf builddep neovim 安装构建依赖):

sudo dnf groupinstall "Development Tools" "Development Libraries"
sudo dnf install -y cmake ninja-build gcc-c++ libtool

git clone https://github.com/ttys3/nvim-config.git $HOME/.config/nvim
cd $HOME/.config/nvim && make nvim

安装 golang

sudo dnf install -y golang-bin

安装 rust (ref https://www.rust-lang.org/tools/install)

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装完成后, ~/.zshrc 加上:

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
source $HOME/.cargo/env

https://www.nerdfonts.com/font-downloads 下载 nerdfont 并安装:

老灯主要下载了 Iosevka 和 JetBrainsMono

mkdir -p ~/.local/share/fonts
cp -r JetBrainsMono ~/.local/share/fonts/
cp -r IosevkaNerd ~/.local/share/fonts/

打开 gnome-tweaks 调整默认的 monospace 字体为 JetBrainsMono 或 Iosevka

grub配置更新:

sudo grub2-mkconfig -o /etc/grub2-efi.cfg

这里有点问题, 默认 Fedora 的 grub 扫到了我的 Arch grub 配置, 但是添加的条目有问题:

Arch 正确的menu是:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-dc941692-cb41-44bc-9bf0-f045fc1fd9f8' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod ext2
	search --no-floppy --fs-uuid --set=root a79b862f-1a07-413f-9537-3922300b3436
	echo	'Loading Linux linux ...'
	linux	/vmlinuz-linux root=/dev/mapper/vgarch-lvroot rw  loglevel=3 noquiet nvidia-drm.modeset=1
	echo	'Loading initial ramdisk ...'
	initrd	/intel-ucode.img /initramfs-linux.img
}

Fedora 生成的 arch 启动menu 是这样的:

### BEGIN /etc/grub.d/30_os-prober ###
	menuentry 'Arch Linux (on /dev/mapper/vgarch-lvroot)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/vmlinuz-linux--dc941692-cb41-44bc-9bf0-f045fc1fd9f8' {
		insmod part_gpt
		insmod ext2
		search --no-floppy --fs-uuid --set=root a79b862f-1a07-413f-9537-3922300b3436
		linux /vmlinuz-linux root=/dev/mapper/vgarch-lvroot rw loglevel=3 noquiet nvidia-drm.modeset=1
		initrd /intel-ucode.img
	}

没错, 最后那一行 initrd /intel-ucode.img 错了. 正确的应该是 initrd /intel-ucode.img /initramfs-linux.img

其它Wayland 相关配置请参考 /post/upgrade-to-gnome-42-and-switch-to-wayland/

Refs

https://fedoraproject.org/wiki/Changes/BtrfsByDefault

https://fedoraproject.org/wiki/GRUB_2

https://github.com/neovim/neovim/wiki/Building-Neovim#building

https://ask.fedoraproject.org/t/java-cant-find-library/10128