Ubuntu 26.04

随着Ubuntu的更新,很多工具已经在18.04上没法使用,趁着寒假将系统升级到了Ubuntu 26.04,本文记录与Ubuntu不同的一些的命令和配置。 以下命令,在Ubuntu Server 26.04上测试通过。

注: 截止2026年2月7日,Ubuntu 26.04仍为预发行,并非正式版。

0、查看系统信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
echo ""
echo "----------当前计算机信息---------------"
# 显示当前系统及版本号
echo 系统版本:$'\t' `lsb_release -a 2>&1 | grep -i 'description' | cut -d$'\t' -f2`
# 显示内核及版本号
# Kernel=`uname -s -r`
echo 内核版本:$'\t' `uname -s -r`
echo ""

# 显示CPU信息
echo CPU型号:
grep -i 'model name' /proc/cpuinfo
echo ""

# 显示显卡信息
echo 显卡信息:
lspci | grep -i 'vga'
echo ""

# 显示网口信息
echo 以太网信息:
lspci | grep -i 'Ethernet'
echo ""

# 显示内存信息
echo 内存容量:`grep -i 'MemTotal' /proc/meminfo | cut -d: -f2`
echo ""

# 显示硬盘信息
echo 硬盘信息:
lsblk -d -o NAME,SIZE,TYPE,MOUNTPOINT

echo ""
echo "-------------DONE---------------------"
echo ""

1、安装eza:

eza是个好东西,替代了ls, 颜色配置很赞,配合MobaXterm, 效果非常好.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 1. 安装
$ sudo apt update && sudo apt install eza

# 2. 配置别名

$ vi ~/.bash_aliases
# 添加以下内容
# =================================================================
# EZA 增强型别名 (替代 ls)
# =================================================================

if command -v eza > /dev/null; then
# 基础替换
alias ls='eza --icons --group-directories-first'
alias ll='eza -laahg --icons --git --group-directories-first --header'
alias la='eza -aa --icons --group-directories-first'
alias lla='eza -laahg --icons --git --header'
alias lss='eza -laahS'

# 目录树视图 (替代 tree)
# 只看两层深度 (最常用,避免被 node_modules 或 build 文件夹刷屏)

alias lt='eza -a --tree --level=2 --icons --long --header'
# 查看3层
alias l3='eza -a --tree --level=3 --icons'
# 全都查看
alias ltt='eza -a --tree --icons'
# 树状显示并包含 Git 状态和文件大小
alias ltg='eza --tree --level=2 --icons --git --long --header'
# 只显示文件夹的树状图(默认 2 层)
alias ltd='eza --tree --level=2 --only-dirs --icons --group-directories-first'
# 如果想看更深层次的纯目录结构
alias lttd='eza --tree --level=3 --only-dirs --icons --group-directories-first'

alias ltdl='eza --tree --level=2 --only-dirs --icons --long --header'
alias lttdl='eza --tree --level=3 --only-dirs --icons --long --header'

# 排序与过滤
alias lr='eza -lhg --icons --git --sort=modified' # 按修改时间倒序
alias lx='eza -lhg --icons --sort=size' # 按文件大小排序
#alias ld='eza -D --icons' # 只列出目录
alias lign='eza -lhg --icons --git-ignore' # 查看被 git 忽略的文件
else
echo "提示: eza 未安装,请使用 sudo apt install eza 安装后启用增强别名。"

alias ll='ls -aluhp --time-style="+%Y-%m-%d %H:%M:%S"'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto --time-style="+%Y-%m-%d %H:%M:%S"'
alias lt='ls -alFrSht'
alias lf='ls -alFrSh'
fi

顺便提一下,新更新了几个alias:

1
2
3
4
5
6
7
8
9
10
11
# 服务器直接显示器时,是无法显示中文的,中文配置下屏幕会显示一堆乱码
# 这个命令可以直接显示为英文
alias en='export LANG="en_US.UTF-8" && export LANGUAGE="en_US:en"'

# 网络与服务管理
alias netstatus='nmcli device status && nmcli connection show'
alias nxreload='sudo nginx -t && sudo systemctl reload nginx'
alias wwwreboot='sudo nginx -t && sudo systemctl restart nginx'
alias ftpreboot='sudo proftpd --configtest -d10 && sudo systemctl restart proftpd'
# 扫描WiFi
alias wifiscan='sudo nmcli device wifi rescan && nmcli device wifi list'

2、配置固定IP地址

Ubuntu 26.04和前面的版本一样,使用netplan来管理网络,但是randerer更换为Network Mananger(更好用, 需要先安装).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 安装 Network Manager
sudo apt update && sudo apt install network-manager

# 基本使用

# 开启无线网卡开关
nmcli radio wifi on

# 扫描附近的 WiFi 热点
nmcli device wifi rescan
nmcli device wifi list

# 连接到Wifi
sudo nmcli device wifi connect "你的SSID" password "你的密码"
# 连接到隐藏wifi
sudo nmcli device wifi connect "你的SSID" password "你的密码" hidden yes

# 查看连接状态
nmcli connection show
# 查看设备的 IP
nmcli device show wlan0

# 断开连接
nmcli device disconnect wlan0
# 删除wifi配置
nmcli connection delete "你的SSID"

# 修改静态 IP
nmcli connection modify "你的SSID" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual
nmcli connection up "你的SSID"

编辑/etc/netplan/01-netcfg.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: NetworkManager # renderer: networkd
ethernets:
enp8s0:
optional: true
dhcp4: yes
dhcp6: yes
eno1:
optional: true
dhcp4: no
addresses: [10.3.89.198/24]
# gateway4: 10.3.89.1 # 26.04 gateway 不再使用
routes:
- to: default
via: 10.3.89.1
nameservers:
addresses: [202.119.248.66,218.2.135.1]
dhcp6: yes

注意,每个网口的optinal要填上,否则如果网线未连接,启动时会一直等待该网口,导致启动时间超长。配置完成之后,使用命令sudo netplan --try apply进行应用

3、查看系统硬盘状态

查看系统安装硬盘的情况,需要使用命令smartcli运行时的状态进行监控,如CPU、显卡或硬盘的温度等进行监控,可以使用watch命令。

首先创建脚本thermal.sh,一次性运行所有监控程序:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
# 1. 安装
sudo apt update && sudo apt install smartmontools -y

# 2. 读取smart信息
# -i: Show identity information for device
# -A: Show device SMART vendor-specific Attributes and values
sudo smartctl -iA /dev/sda

# 结果扔给Gemini分析:

测试结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
=== START OF INFORMATION SECTION ===
Model Family:     Western Digital RE Serial ATA
Device Model:     WDC WD1600YS-18SHB1
Serial Number:    WD-WCAP02074841
LU WWN Device Id: 5 0014ee 155778afb
Firmware Version: 20.06C06
User Capacity:    160,000,000,000 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7 (minor revision not indicated)
Local Time is:    Fri Feb  6 14:26:21 2026 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0003   182   177   021    Pre-fail  Always       -       3875
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       491
  5 Reallocated_Sector_Ct   0x0033   198   198   140    Pre-fail  Always       -       10
  7 Seek_Error_Rate         0x000e   200   200   051    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   001   001   000    Old_age   Always       -       94091
 10 Spin_Retry_Count        0x0012   100   100   051    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0012   100   100   051    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       475
194 Temperature_Celsius     0x0022   121   091   000    Old_age   Always       -       26
196 Reallocated_Event_Count 0x0032   195   195   000    Old_age   Always       -       5
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   051    Old_age   Offline      -       0


> Gemini解读 > > 这是一块极其经典的 Western Digital RE (RAID Edition) 系列硬盘,具体型号为 WD1600YS。 > 1. 硬盘规格与定位 > 系列: RE (RAID Edition)。这是西数当年的企业级产品线(相当于现在的“金盘”系列)。 > > 特性: 专门为 24/7 不间断运行的服务器和 RAID 阵列设计。这解释了为什么它能坚持运行 10.7 年(9.4 万小时)还没彻底挂掉。 > > 技术年代: 这是一块 SATA II (3.0 Gb/s) 硬盘,容量仅为 160GB。它使用的是早期的单碟片技术,物理结构非常结实。 > > | ID# | 属性名称 | RAW_VALUE | 现状分析 | > |-----|-----------------------------|-----------|----------| > | 5 | Reallocated_Sector_Ct | 10 | 已发现物理坏块。硬盘已经将 10 个损坏的扇区重定向到了备用区域。虽然数值不算大,但这证明盘片表面确实存在物理损伤。 | > | 9 | Power_On_Hours | 94091 | 极其年迈。这块硬盘已经连续运行了约 10.7 年(94091 ÷ 24 ÷ 365 ≈ 10.74)。其 Value 值仅剩 1,说明已接近设计寿命的极限。 | > | 196 | Reallocated_Event_Count | 5 | 发生了 5 次重映射操作。这与 ID 5 对应,说明坏道是在不同时间段零星产生的。 | > | 197 | Current_Pending_Sector | 0 | 暂时安全。目前没有正在等待检查的“疑似坏块”,说明当前读取的所有数据区域暂时是稳定的。 | > | 199 | UDMA_CRC_Error_Count | 0 | 数据传输电缆(SATA线)没问题,通讯正常。 |

4、解决更新时无网络授权问题(新):

在使用sudo apt update时,通常使用国内镜像进行加速,比如清华大学镜像站。常规方案是编辑/etc/apt/sources.list。 1. 方案一:开启windows授时,无法直接出校的电脑,使用该Windows电脑授时;

1
# 待补充
2. 方案二:利用周期任务,定时获取时间修改系统时钟;
1
2
3
4
5
6

alias ntpuu='dateFromBing=$(curl -skI -x http://proxy:port https://cn.bing.com | grep -i "^Date" | sed -e "s/< date: //"); sudo date -s "$dateFromBing" '

$ sudo crontab -e
# 添加系统自动任务, 每天 4:15/16:15执行
15 4,16 * * * /bin/date -s "$(/usr/bin/curl -skI -x http://proxy:port https://cn.bing.com | grep -i '^Date:' | sed -e 's/Date: //i')"

5、树莓派刷写固件

  树莓派4B,固件比较老,需要更新:

  1) 查看当前固件信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ubuntu@ubuntu:~$ sudo rpi-eeprom-update
# 输出:
# *** UPDATE AVAILABLE ***

# Run "sudo rpi-eeprom-update -a" to install this update now.

# To configure the bootloader update policy run "sudo raspi-config"

# BOOTLOADER: update available
#    CURRENT: Thu Sep  3 12:11:43 UTC 2020 (1599135103)
#     LATEST: Tue Feb 11 17:00:13 UTC 2025 (1739293213)
#    RELEASE: default (/usr/lib/firmware/raspberrypi/bootloader-2711/default)
#             Use raspi-config to change the release.

#   VL805_FW: Using bootloader EEPROM
#      VL805: up to date
#    CURRENT:
#     LATEST:
  1. 更新固件:
    1
    2
    3
    4
    5
    # 更新固件 (EEPROM)
    ubuntu@ubuntu:~$ sudo rpi-eeprom-update -a
    # 完成后重启
    ubuntu@ubuntu:~$ sudo reboot

6、设置默认语言

  以下命令测试版本为ubuntu 14.04-26.04 LTS

1
2
3
sudo locale-gen zh_CN.UTF-8
sudo dpkg-reconfigure locales
sudo update-locale LANG="zh_CN.UTF-8" LANGUAGE="zh_CN"

  退出shell,重新登录后起作用。测试,使用命令locale,成功后输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
user@2019:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

7、proftpd新问题

将老系统上的proftpd配置, 完整复制到新系统内, 开启ftp目录的相关权限后, 始终无法登录, 最后发现时apparmor搞得鬼.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 # 现象:
# 用户能够登录,但是在列出目录( `list` 命令) 时 无权限
# 500 permission denied

# 注意,用户设置没问题,可以登录
# 1. 检查apparmor审计情况:
sudo dmesg -w | grep -i proftpd | grep -i 'apparmor="denied"'
# 有输出则意味着 apparmor 拦截了该命令
# 以下为有问题的输出:
# [51262.220149] audit: type=1400 audit(1770434627.814:783): apparmor="DENIED" operation="capable" class="cap" profile="proftpd" pid=8463 comm="proftpd" capability=5 capname="kill"
#[51292.221074] audit: type=1400 audit(1770434657.815:784): apparmor="DENIED" operation="capable" class="cap" profile="proftpd" pid=8463 comm="proftpd" capability=5 capname="kill"

# ------------- Ctrl+C 退出 ----------------

# 2. 修改`apparmor`配置
ls -l /etc/apparmor.d/proftpd
.rw-r--r-- 1.5k root 7 2月 11:05 󰡯 /etc/apparmor.d/proftpd

# 在文件中增加以下内容,使 proftpd 有访问这些目录的权限

46 # Need to be able to write to where FTP is configured
47 owner @{HOME}/** rw,
48 @{HOME} rw,
49 /srv/ftp/** rw,
50 /srv/www/** rw,
51 /var/ftp/** rw,
52 /var/www/** rw,
53
54 # ------------ 添加以下三行 -------------------
55 /wd_4t_sda/ r,
56 /wd_4t_sda/ftpService/ r,
57 /wd_4t_sda/ftpService/** rw,
58 # ------------ 添加结束 -------------------
59
60 # For running in confined environments
61 /usr/sbin/proftpd mr,

# 在 apparmor 中重新载入这些配置

sudo apparmor_parser -r /etc/apparmor.d/proftpd


8、安装g++

Ubuntu 26.04自带的g++版本是15.2, 不用再去费心找ppa

1
2
3
4
5
6
7
$ g++ --version
# -------------------- Output -----------------------
# g++ (Ubuntu 15.2.0-12ubuntu1) 15.2.0
# Copyright (C) 2025 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

安装 g++/cmake/ninja三件套:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1. 新系统,一句搞定
$ sudo apt install build-essential cmake ninja-build

# 2. 查看alternatives:
$ sudo update-alternatives --all

# 以下备用

## 3.修改默认编译器为g++11
# $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11
#$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 --slave /usr/bin/gcov gcov /usr/bin/gcov-7
## 4. 修改默认版本
#$ sudo update-alternatives --config gcc

# 有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
# 选择 路径 优先级 状态
# ------------------------------------------------------------
# * 0 /usr/bin/gcc-11 110 自动模式
# 1 /usr/bin/gcc-11 110 手动模式
# 2 /usr/bin/gcc-7 70 手动模式

9、安装php(8.5)nginxmariadb三件套

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

# 1、定义版本号变量
PHP_VER="8.5"

# 2、组装安装列表
PKGS="nginx mariadb-server"
PKGS="$PKGS php${PHP_VER}-cli" # 命令行界面
PKGS="$PKGS php${PHP_VER}-ldap" # LDAP 认证支持
PKGS="$PKGS php${PHP_VER}-fpm" # FPM 进程管理器 (Nginx 必备)
PKGS="$PKGS php${PHP_VER}-mysql" # 数据库驱动
PKGS="$PKGS php${PHP_VER}-mbstring" # 多字节字符串处理
PKGS="$PKGS php${PHP_VER}-xml" # XML 解析
PKGS="$PKGS php${PHP_VER}-curl" # 网络请求
PKGS="$PKGS php${PHP_VER}-gd" # 图形处理
PKGS="$PKGS php${PHP_VER}-imap" # 邮件支持
PKGS="$PKGS php${PHP_VER}-intl" # 国际化支持
PKGS="$PKGS php${PHP_VER}-zip" # 压缩解压支持

# 独立包名(不带版本号的包)
PKGS="$PKGS php-imagick"

# 3、可选扩展 (根据需要取消下方注释)
#PKGS="$PKGS php${PHP_VER}-bcmath" # 高精度数学运算
#PKGS="$PKGS php${PHP_VER}-opcache" # 性能加速缓存
#PKGS="$PKGS php${PHP_VER}-sqlite3" # SQLite 支持

# 4、执行安装
echo "正在安装 PHP ${PHP_VER} 套件..."
sudo apt update
sudo apt install -y $PKGS
# 5、检查安装结果
php -v

nginx/php/mariadb三件套装完,配置为php服务器后,如果需要安装phpmyadmin则需要设定默认数据库。两个方案,直接进入数据库设置:

1
sudo mysql
进入数据库之后:
1
2
3
4
5
6
-- 切换到密码认证模式
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
-- 设置密码为'你的密码'
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的密码');
FLUSH PRIVILEGES;
EXIT;
然后利用root账号登录phpmyadmin, 登录成功之后需要简单配置,按照说明做就可以了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 创建 tmp 目录(如果已存在会报错,没关系)
sudo mkdir -p /var/www/html/pma/tmp

# 2. 将所有权交给 Web 进程(www-data)
sudo chown -R www-data:www-data /var/www/html/pma/tmp

# 3. 设置权限为 755
sudo chmod -R 755 /var/www/html/pma/tmp

# 4. 修改 $cfg['blowfish_secret']
sudo cp /var/www/html/pma/config.sample.inc.php /var/www/html/pma/config.inc.php

sudo vi /var/www/html/pma/config.inc.php

# $cfg['blowfish_secret'] = '32位secret'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

然后刷新即可

X、黑群晖

设置周期任务

1
2
3
sudo vi /etc/crontab
sudo synoservice --restart crond