Ubuntu 配置

制作启动盘

balenaEtcher,支持 Windows、macOS 和 Linux 的跨平台启动盘制作工具,界面简洁,使用方便,支持多种镜像格式,如 ISO、IMG 等。

brew install balenaetcher

下载好镜像后,使用 balenaEtcher 将其写入到 U 盘中,制作完成后就可以使用这个 U 盘来安装 Ubuntu 了。

安装完成后,配置清华源:

安装必要的软件包:

sudo apt update
sudo apt install -y build-essential curl git vim tmux fd-find ripgrep

修改 hostname ,设置一个好记的名字:

sudo hostnamectl set-hostname devbox

bashrc 配置

wget -O ~/.bash_aliases https://api.liujiacai.net/bashrc

初始化

sudo apt install -y vim git openssh-server

之后拷贝自己的公钥到服务器上,保证免密登录:

ssh-copy-id -i ~/.ssh/id_ed25519.pub dev
ssh-copy-id -i ~/.ssh/id_ecdsa.pub dev

快捷键

与 mac 对应

gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swap_lalt_lctl', 'ctrl:swapcaps']"
  • 先把 alt 和 ctrl 交互,再把 ctrl 与 caps 交互,最后的效果

    键位实际功能
    AltCtrl
    CapsCtrl
    CtrlAlt

如果操作失误,可以通过这个命令来还原

gsettings reset org.gnome.desktop.input-sources xkb-options
(setq x-alt-keysym 'control)   ; 物理 Alt(系统是 Ctrl)→ Emacs Control
(setq x-super-keysym 'meta)    ; 物理 Win → Emacs Meta

Caps Lock 键改为 Ctrl 键

# 临时生效(重启后失效),不退出当前 shell 立即生效
setxkbmap -option "ctrl:swapcaps"

# 永久生效
echo 'XKBOPTIONS="ctrl:swapcaps"' | sudo tee -a /etc/default/keyboard
sudo dpkg-reconfigure keyboard-configuration

禁用系统快捷键

鼠标

macOS 上有个经典痛点:触控板用自然滚动,外接鼠标用传统方向。GNOME 原生支持分别控制:

# 鼠标
gsettings set org.gnome.desktop.peripherals.mouse natural-scroll false
# 触控板
gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll true

禁用 Gnome 快捷键

# 禁用 Meta+Alt+<- 进行工作空间切换,方便 brave 设置上/下一个标签
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-left "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-right "[]"

# 禁用 Super 打开 Activities,默认值是 Super_L
gsettings set org.gnome.mutter overlay-key ''

# 禁用锁屏,默认是 ['<Super>l'],也可以配置成 ['<Control><Super>l']
gsettings set org.gnome.settings-daemon.plugins.media-keys screensaver "['']"

# 禁用 dash-to-dock 的 Super+数字,这样 Emacs 中的 Meta+数字键就可以用来切换窗口了
gsettings set org.gnome.shell.extensions.dash-to-dock hot-keys false
# 同时清掉 GNOME Shell 层的(双保险)
for i in $(seq 1 9); do
  gsettings set org.gnome.shell.keybindings switch-to-application-$i "[]"
done
# 禁用 ibus 的 Emoji Choice/Annotation
gsettings set org.freedesktop.ibus.panel.emoji hotkey "['']"

# 禁用窗口平铺
gsettings set org.gnome.mutter.keybindings toggle-tiled-right "['']"
gsettings set org.gnome.mutter.keybindings toggle-tiled-left "['']"
# 24.04 需要,因为该版本引入了全新集成的 Tiling Assistant(平铺助手) 扩展
gsettings set org.gnome.shell.extensions.tiling-assistant tile-left-half "['']"
gsettings set org.gnome.shell.extensions.tiling-assistant tile-right-half "['']"

# 禁用 toggle the notification/message tray
gsettings set org.gnome.shell.keybindings toggle-message-tray "[]"

# disable the Super + D (Hide all normal windows / Show Desktop)
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['']"
gsettings set org.gnome.shell.keybindings focus-active-notification "[]"

然后在 Brave 浏览器中设置 Meta + Ctrl + ArrowRight 为下一标签页, Meta + Ctrl + ArrowLeft 为上一标签页。

如果你不确定是哪个特定的配置项吞掉了快捷键,可以直接在终端用以下命令全局过滤当前系统中所有绑定了 <Super>n<Alt>n 的 GNOME 设置项:

gsettings list-recursively | grep -E "(<Super>|<Alt>)[nN]"

配置 bash tab 补全时大小写不敏感

# 永久生效
echo "set completion-ignore-case on" >> ~/.inputrc
# 不退出当前 shell 立即生效
bind -f ~/.inputrc

# 临时生效
bind "set completion-ignore-case on"

关闭 GUI 登录

# 永久关闭 GUI
sudo systemctl set-default multi-user.target
# 恢复开机启动 GUI
sudo systemctl set-default graphical.target

要让 Ubuntu 在不连接显示器时保持开机且不自动休眠,关键是配置电源管理以忽略显示器状态。

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

禁用 WiFi/网卡的电源管理 (最常见原因)

如果你的网卡开启了省电模式,空闲时会自动切断连接。 排查命令:

iwconfig  # 如果是 WiFi,查看 Power Management 是否为 on

解决方法(禁用网卡省电):

sudo vim /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

wifi.powersave = 3 改为 wifi.powersave = 2 (2 表示禁用)。如果是以太网(网线),执行:

# 网卡名通过 ip addr 查看
sudo ethtool -s [网卡名] wol d  # 禁用唤醒省电模式

显卡驱动导致系统卡死

根据 sudo journalctl -b -1 -n 100 命令查看上次死机前的日志,发现有如下信息:

Feb 17 18:00:12 devbox kernel: audit: type=1400 audit(1771322412.494:160): apparmor="DENIED" operation="open" class="file" profile="snap.firmware-updater.firmware-notifier" name="/p>
Feb 17 18:00:58 devbox kernel: workqueue: i915_hpd_poll_init_work [i915] hogged CPU for >10000us 1027 times, consider switching to WQ_UNBOUND

可以看出,最后一行日志显示 i915 驱动占用 CPU 过高,导致系统卡死。解决方法是禁用 i915 驱动:

# 1. 创建黑名单文件
sudo bash -c 'cat > /etc/modprobe.d/blacklist-i915.conf << EOF
blacklist i915
blacklist intel_agp
EOF'

# 2. 更新 initramfs
sudo update-initramfs -u -k all

# 3. 重启
sudo reboot

# 4. i915 驱动(如果需要恢复显卡功能)
sudo rm /etc/modprobe.d/blacklist-i915.conf
sudo update-initramfs -u -k all

常用命令

# 安装 uv 包管理器
# https://docs.astral.sh/uv/getting-started/installation/
curl -LsSf https://astral.sh/uv/install.sh | sh

# https://supervisord.org/installing.html
uv tool install supervisor