安装GNU/Linux发行版

点击跳转到GNU/Linux课程所有目录

在GNU/Linux发行版的选择上,我们这里是学习的目的,所以就选用能体验最新特性的UbuntuFedora,都是每年发布两个版本。

与Linux内核开发相关的请查看内核开发环境

1 启动配置

1.1 BIOS设置

我用的主板是和Linus同款的“技嘉Aorus”,有时会抽风恢复默认的BIOS出厂设置, 在BIOS的“easy mode”中把“X.M.P. Disabled”改为“X.M.P.-DDR4-3600 18-22-22-42-64-1.35V”。 然后点击右下角的“Advanced Mode(F2)”进入“Advanced Mode”,“Tweaker -> Advanced CPU Settings -> SVM Mode”改为 “Enabled”开启硬件虚拟化配置。

另外再记录一下联想台式机进bios是按F1键。

1.2 双系统grub设置

grub的配置文件的示例boot-efi-EFI,在操作系统中的路径为/boot/efi/EFI/{ubuntu,centos}/grub.cfg

centos9 grub设置:

blkid # 打印 uuid
vim /boot/efi/EFI/centos/grub.cfg # 更改 uuid, set prefix=($dev)/ 后接正确的路径
grub2-mkconfig -o /boot/grub2/grub.cfg # centos9使用的是grub2

ubuntu22.04 grub设置,修改配置/boot/efi/EFI/ubuntu/grub.cfg:

search.fs_uuid 22bac2d6-b556-4158-8244-fba87a8a34c3 root # 用 blkid 查看 uuid
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

更改启动界面选择系统的超时时间:

vim /etc/default/grub # GRUB_TIMEOUT=5

2 virt-manager安装虚拟机

/etc/libvirt/qemu.conf文件配置:

user = "root"
group = "libvirt"

注意麒麟桌面系统v10的virt-manager图形显示协议要用vnc。

2.1 virt-manager安装aarch64系统

添加硬件 图形 类型:如果选vnc服务器,要把virt-manager窗口关闭才能用vnc客户端登录,而且系统鼠标定位有一点小问题,所以不建议选择vnc服务器,建议选择spice服务器

2.2 桥接

注意Macvtap方式不能访问宿主机和同一个交换机上的ip。

目前暂还没找到完美的virt-manager桥接方法。可以使用其他虚拟机软件如vmware或virtualbox。

3 配置

有些发行版默认poweroffreboot等命令可以以非root权限运行,容易误操作,这些命令都软链接到/bin/systemctl, 可以用以下命令修改权限:

sudo chmod 700 /bin/systemctl

设置hostname:

sudo hostnamectl set-hostname Threadripper-Ubuntu2204

新建或删除用户:

sudo useradd -s /bin/bash -d /home/test -m test # 新建用户test
sudo userdel -r test # 删除用户test,-r选项代表同时删除用户的家目录和相关文件

ssh密码输入界面要很久才出现的解决办法,修改/etc/ssh/ssh_config文件:

GSSAPIAuthentication no # GSSAPI 通常用于支持 Kerberos 认证,提供一种安全且无缝的认证方式

如果没有挂载/tmp目录,可以修改/etc/fstab文件:

# defaults: 使用默认的挂载选项。
# noatime: 不更新文件的访问时间戳。
# nosuid: 不允许设置文件的 SUID 位。
# nodev: 不允许设备文件。
# noexec: 不允许执行二进制文件。安装vmware等软件时会安装不上
# mode=1777: 设置目录的权限为 1777,确保它是可写的临时目录。
tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,mode=1777,size=20G 0 0

自动挂载磁盘,修改配置文件/etc/fstab,添加:

# uuid用blkid /dev/sda查看
# 最后2个参数(0 0)的意义: dump, fsck
UUID=b7aa1308-f57e-4f28-834c-c463237a8383 /home/sonvhi/sonvhi/   ext4    errors=remount-ro    0       0

如果内存比较小,可以添加swap:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab # 在/etc/fstab最后一行添加 /swapfile  none  swap  sw  0  0

shell界面路径名显示绝对路径,想换成只显示最后一个路径名分量, ~/.bashrc文件修改以下变量:

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '

4 VNC远程桌面

4.1 vnc软件

4.1.1 ubuntu

Ubuntu 服务端 Settings -> Sharing -> Screen Sharing -> 启用旧式vnc协议 -> 打开远程控制

在客户端Remmina输入: sonvhi-XPS-13-9305.local(hostname.local)或 ip, 注意前面不能有vnc://,连接后点击切换绽放模式

4.1.2 macOS

服务端System Settings -> General -> Sharing -> Screen Sharing -> 开关右侧的i号

客户端可以使用系统自带的屏幕共享,Spotlight Search(command+space)搜索Screen Sharing(屏幕共享),然后直接输入ip。 还可以在Finder(访达)中按cmd+k跳出输入框(或在浏览器中直接输入),输入vnc://${server_ip}:${port_number。自带的屏幕共享鼠标功能支持更好。

客户端还可以使用tightvnc,在appstore安装Remote Ripple。鼠标功能支持不够(至少在连接ubuntu时)。

4.1.3 tightvnc

Linux下的tightvnc,客户端 xtightvncviewer, 服务端 tightvncserver。服务端 tightvncserver 启动后,客户端连接后画面一片灰,原因暂时不明,推荐使用上面系统自带的 vnc 软件。

4.2 QEMU+VNC安装系统

通过iso文件安装Linux发行版时,要么在物理机上安装,要么在virt-manager上安装,如果我们想在没有图形界面的server环境上用命令行安装一个图形界面发行版,可以使用qemu+vnc来实现。下面我们以麒麟系统桌面发行版安装为例说明qemu+vnc的安装过程。

首先挂载iso文件,并把文件复制出来:

mkdir mnt
sudo mount Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.iso mnt -o loop
mkdir tmp
cp mnt/. tmp/ -rf
sudo umount mnt

创建qcow2文件,并运行虚拟机:

qemu-img create -f qcow2 Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.qcow2 512G
qemu-system-x86_64 \
-m 4096M \
-smp 16 \
-boot c \
-cpu host \
--enable-kvm \
-hda Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.qcow2 \
-cdrom Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.iso \
-kernel tmp/casper/vmlinuz \
-initrd tmp/casper/initrd.lz \
-vnc :1

vnc客户端可以使用ubuntu自带的Remmina(当然也可以使用其他vnc客户端),连接${server_ip}:5901,端口5901是由-vnc :1决定的(5900 + 1)。 macOS除了使用macOS自带的Screen Sharing(屏幕共享),还可以使用appstore安装的Remote Ripple

安装完成后,再运行:

qemu-system-x86_64 \
-enable-kvm \
-cpu host \
-smp 16 \
-m 4096 \
-device virtio-scsi-pci \
-drive file=Kylin-Desktop-V10-SP1-General-Release-2303-X86_64.qcow2,if=none,format=qcow2,cache=writeback,file.locking=off,id=root \
-device virtio-blk,drive=root,id=d_root \
-net nic,model=virtio,macaddr=00:11:22:33:44:55 \
-net bridge,br=virbr0 \
-vnc :1

但arm64的麒麟桌面系统没法这样安装(但可在virt-manager中安装),暂时还没找到原因。

可以在arm芯片的mac电脑中用vmware fusion安装arm64的ubuntu。

5 我的常用软件

这是我的开发环境上的一些配置,方便自己的查阅

5.1 ubuntu

我平时工作用的是ubuntu桌面系统。

常用的软件安装:

strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_ # 查看支持的glibc版本

sudo apt install openssh-server -y # 默认桌面版本ubuntu不会安装ssh server
sudo apt install ibus*wubi* -y # 安装五笔,要重启才可用
sudo apt-get install fuse -y # v2ray的Linux桌面版本 V2Ray-Desktop-v2.4.0-linux-x86_64.AppImage 无法运行
sudo apt install tmux -y # Tmux(缩写自"Terminal Multiplexer")是一个在命令行界面下运行的终端复用工具,我主要是用tmux的会话附加和分离功能
sudo apt install lxterminal -y # 这玩意儿比ubuntu默认的terminal更好用,是树莓派系统上默认的terminal

sudo apt install exfat-utils -y # exfat文件系统所需的工具

# 只在ubuntu2204上验证过,安装查看tcpdump工具收集的网络包的wireshark: https://launchpad.net/~wireshark-dev/+archive/ubuntu/stable
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt update
sudo apt install wireshark -y

# 安装游戏软件stem时需要安装的依赖软件,但steam里的游戏在ubuntu下根本跑不动(我在戴尔笔记本xps13上试过cs非常卡)
sudo apt install libc6-i386 libgl1:i386 -y # for steam

通过sudo apt install ./xxxx.deb -y安装的软件,卸载用以下命令:

sudo apt list --installed | grep wkhtmltox
sudo apt purge wkhtmltox -y

5.2 fedora

安装软件:

sudo dnf group install development-tools -y # fedora41不能用groupinstall,必须要两个单词group install
strings /lib64/libc.so.6 | grep ^GLIBC_ # 查看支持的glibc版本

6 其他系统的一些笔记

6.1 centos

centos的开发软件生态比ubuntu还是稍微差一些,尤其是桌面系统。

常用软件安装:

sudo dnf groupinstall "development tools" -y # 编译常用软件
sudo dnf install qemu-kvm virt-manager libvirt -y # 虚拟机相关软件
sudo systemctl restart libvirtd # 需要重启libvirtd,否则虚拟机有些功能无法使用
sudo dnf install ncurses-devel -y # 内核编译所需

# centos9需要通过源码安装bridge-utils,https://wiki.linuxfoundation.org/networking/bridge
git clone -b main git://git.kernel.org/pub/scm/network/bridge/bridge-utils.git
cd bridge-utils
autoconf
./configure

默认centos9是打开selinux的,但个人用户没有那么高的安全需求时,可以关闭selinux:

sudo vim /etc/selinux/config # centos9 改成 SELINUX=disabled

6.2 树莓派

Operating system images下载“Raspberry Pi OS with desktop and recommended software”。

向SD卡烧录系统:

sudo dd bs=4M if=解压之后的img of=/dev/sdb

图形界面的树莓派系统的常用软件安装:

# 解决git无法显示中文
git config --global core.quotepath false

# 安装五笔,需要重启
sudo apt-get update -y
sudo apt install ibus*wubi* -y

# 安装firefox
# sudo apt update -y
# sudo apt-get install iceweasel -y

sudo apt update -y
# 安装emacs
sudo apt install emacs -y
# 安装gvim
sudo apt install vim-gtk3 -y

含代理服务器选项,chrome浏览器启动命令:

chromium-browser --proxy-server="https=127.0.0.1:1080;http=127.0.0.1:1080;ftp=127.0.0.1:1080"

6.3 麒麟系统

填写产品试用申请后就可以下载iso文件。

注意桌面麒麟系统在arm芯片的macos上无法用vmware fusion安装,可以用UTM安装。

基于openeuler的服务器麒麟系统用qemu命令行启动时,编辑网络用命令nmtui,网络接口名改成和ifconfig中一样的名,再启用连接 -> 激活。arm64版本无法用VMware以及UTM等虚拟机安装,可以尝试用EulerLauncher安装(还可以参考openeuler文档中的EulerLauncher)。

一直提示“发现未认证应用执行”的解决办法,打开/etc/default/grub,修改为GRUB_CMDLINE_LINUX_SECURITY="security=",更新grub配置sudo update-grub,最后,重启系统。

6.4 arcolinux

ArcoLinuxArch Linux的衍生发行版。