• Ubuntu26 持续NTP对时

    vi /etc/chrony/chrony.conf

    找到 makestep 1 3 改成 makestep 1 -1

    sudo systemctl restart chrony

    验证
    grep '^makestep' /etc/chrony/chrony.conf
    chronyc tracking
    chronyc sources -v

    效果

    VMware
    ↓
    系统时间突然 +8 小时
    ↓
    chrony 重新从 NTP 获得有效测量
    ↓
    发现 offset > 1 秒
    ↓
    直接 step 回正确时间

  • Ubuntu 26 开 ipv4.ip_forward 和BBR

    echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ipforward.conf
    
    printf '%s\n' \
    'net.core.default_qdisc=fq' \
    'net.ipv4.tcp_congestion_control=bbr' \
    | sudo tee /etc/sysctl.d/98-tcpbbr.conf

    运行

    sudo sysctl -p /etc/sysctl.d/99-ipforward.conf
    sudo sysctl -p /etc/sysctl.d/98-tcpbbr.conf

    验证

    sysctl net.ipv4.ip_forward
    sysctl net.ipv4.tcp_congestion_control
    lsmod | grep bbr
    
  • Linux 临时申请不同加密方式的证书

      certbot certonly -d www.5iaws.com -d 5iaws.com
      
      certbot certonly -d www.5iaws.com -d 5iaws.com --key-type rsa --rsa-key-size 2048 --cert-name 5iaws-rsa.com
  • Docker-compose 在线升级

    一、更新 镜像(最常见)

    当 docker-compose.yml 没变,但镜像有新版本:

    docker-compose pull
    docker-compose up -d
    

    👉 等价于:

    • 拉取最新镜像
    • 用新镜像重建并启动容器(不中断未变的服务)

    二、更新 服务配置(yml 改了)

    比如改了端口、环境变量、volume:

    docker-compose up -d
    

    如果你想强制重建(推荐在不确定时用):

    docker-compose up -d --build
    

    三、只更新某一个服务

    比如只更新 web:

    docker-compose pull web
    docker-compose up -d web
    

    四、更新后清理旧容器 / 旧镜像(可选)

    防止磁盘越用越满 🧹

    docker-compose down
    docker-compose up -d
    

    或只清理不用的镜像:

    docker image prune
    
  • AMD AI-MAX395 安装Rocm7.1.1

    Rocm7.2已经出了但是不兼容AI-MAX 395,下面是安装Rocm7.1.1和对应的rocm/pytorch

    apt update
    apt install vim wget gpg curl git -y
    apt upgrade -y
    wget https://repo.radeon.com/amdgpu-install/7.1.1/ubuntu/noble/amdgpu-install_7.1.1.70101-1_all.deb
    apt install ./amdgpu-install_7.1.1.70101-1_all.deb
    apt update
    apt install python3-setuptools python3-wheel libjpeg-dev python3-dev python3-pip
    groupadd render
    usermod -a -G render,video ubuntu
    apt install rocm

    apt update
    apt install “linux-headers-$(uname -r)” “linux-modules-extra-$(uname -r)”
    apt install amdgpu-dkms

    docker pull rocm/pytorch:rocm7.1.1_ubuntu24.04_py3.12_pytorch_release_2.9.1

  • Ubuntu 24磁盘扩容

    df -h # 找出满的分区
    ubuntu默认使用lv卷管理磁盘你的磁盘可能有1TB,但是你可以看到比如
    /dev/mapper/ubuntu–vg-ubuntu–lv: 100 GiB,

    一、你现在的现象说明什么?

    你看到类似下面的信息:

    /dev/mapper/ubuntu--vg-ubuntu--lv   100G
    

    但你明确知道磁盘是 1TB。

    👉 这说明:

    磁盘 = 1TB
    物理卷(PV) / 卷组(VG) / 逻辑卷(LV) 只分配了 100G 给根分区

    Linux 并不会自动把整块磁盘都给 /,尤其在 Ubuntu + LVM 场景下,这是正常现象。


    二、LVM 结构快速理解(很重要)

    LVM 的结构是:

    磁盘(1TB)
     └─ 物理卷 PV
         └─ 卷组 VG(ubuntu-vg)
             ├─ 逻辑卷 LV(ubuntu-lv) ← 你现在只有 100G
             └─ 剩余空间(还没用!)
    

    👉 重点:剩下的 900G 还在 VG 里,没分给 LV

    三、你先确认一下现状(一步步来)

    1️⃣ 查看磁盘真实大小

    lsblk
    

    你应该能看到类似:

    sda        1T
    └─sda3     1T
      └─ubuntu--vg-ubuntu--lv 100G /
    

    2️⃣ 查看卷组是否还有空闲空间

    vgdisplay
    

    关注这两行:

    VG Size               <1.00 TiB
    Free  PE / Size       900.00 GiB
    

    👉 如果 Free 很大,说明空间还没用


    3️⃣ 查看逻辑卷大小

    lvdisplay
    

    你会看到:

    LV Size                100.00 GiB
    

    四、如果你想把剩余空间扩展到 /(最常见需求)

    ⚠️ 下面操作是安全的,但建议生产环境先确认或快照


    ✅ 一条命令直接扩到最大(推荐)

    lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
    

    或者:

    lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
    

    关键一步:扩展文件系统

    如果是 ext4(Ubuntu 默认):

    resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
    

    如果是 xfs:

    xfs_growfs /
    

    4️⃣ 验证是否成功

    df -h
    

    你应该能看到:

    /dev/mapper/ubuntu--vg-ubuntu--lv   ~1.0T
  • Linux 时区time zone

    一、查看当前时区

    timedatectl

    二、修改时区(立即生效)

    例如:改为中国时间

    sudo timedatectl set-timezone Asia/Shanghai
    无需重启,立刻生效 ✅
    修改后使用 timedatectl 命令确认

    三、没有timedatectl命令时

    直接改 /etc/localtime

    sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  • Docker 技巧

    维持一个长久运行的容器以供调试,加sleep infinity
    容器停止后,自动删除这个容器 –rm

    例子
    docker run -dit – -device=/dev/kfd – -device=/dev/dri – -group-add video – -runtime=runc – -name ubuntu-alwayson qinzhen/comfyui-rocm:0.9.1 sleep infinity

    之后使用 docker exec -it ubuntu-alwayson bash 进入,在宿主机使用docker restart ubuntu-alwayson 重启

    AMD Rocm&Pytorch easy install

    https://rocm.docs.amd.com/projects/install-on-linux/en/develop/install/3rd-party/pytorch-install.html

    在容器内做了修改之后可以使用一下命令提交变更

    docker commit “运行中的容器ID” “镜像名,如:qinzhen/xxxx”

    做一个正式镜像

    目录里建立Dockerfile文件,里面写上配置

    docker build -t “镜像名” . (不要忘记有.)

    docker push “镜像名”

    清除Docker build的缓存
    docker builder prune / docker builder prune -f / docker builder prune -af

    改名
    # Tag the existing image with a new name

    docker tag old_image_name:latest new_image_name:latest

    # Optionally, remove the old tag

    docker rmi old_image_name:latest

    Docker image 删除之后空间没有释放

    这是 Docker 非常经典、但也很容易误解的问题。先给你一句结论:

    删除 docker image ≠ 立刻释放磁盘空间
    真正占空间的,往往是 容器、匿名 volume、build cache、overlay 层。

    下面一步一步帮你把空间真正清干净,并告诉你每一步在清什么。


    一、先确认:空间到底被谁占着(必须做)

    先跑这条:

    docker system df
    

    你会看到类似:

    TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
    Images          12        0         45GB      45GB (100%)
    Containers      8         0         10GB      10GB (100%)
    Local Volumes   15        2         80GB      60GB (75%)
    Build Cache     23        0         35GB      35GB
    

    👉 关键看 RECLAIMABLE可回收,不是 SIZE
    👉 这一步是“指路牌”,决定你下一步该删什么

    这是 docker system df 的磁盘使用统计,逐项解释一下你的机器情况:

    类型总数使用中占用空间可回收
    Images491154.71GB22.74GB (41%)
    Containers111043.61MB0
    Local Volumes1521.681GB1.62GB (96%)
    Build Cache000

    二、重点看 Images(占用最大)

    Images 49
    使用中 11
    占用 54.71GB
    可回收 22.74GB

    含义:

    • 49 个镜像
    • 只有 11 个正在被容器使用
    • 22.74GB 是未被使用的镜像,可以删除

    查看具体镜像:

    docker images

    找出 dangling images:

    docker images -f dangling=true

    删除未使用镜像:

    docker image prune

    删除所有未使用镜像(推荐定期执行):

    docker image prune -a
  • Alma Linux Docker 特例

    dnf remove -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    dnf install -y moby-engine moby-cli moby-compose

  • JsonNano NVME SSD直接使用SD Card Image安装

    相关网站1,https://www.jetson-ai-lab.com/
    相关网站2,https://developer.nvidia.com/embedded/jetpack/downloads
    Json Nano需要使用6.2.1 https://developer.nvidia.com/embedded/jetpack-sdk-621
    Roadmap https://developer.nvidia.com/embedded/develop/roadmap

    终于可以摆脱使用愚蠢的 NVIDIA SDK Manager将系统安装到SSD了

    推荐使用 Etcher 作为Image的写卡工具 https://etcher.balena.io/
    将SD Card Image写入你的Nvme SSD

    打开任意可以编辑Linux分区文件的工具,比如Disk Genius
    下载/boot/extlinux/extlinux.conf 文件并使用合适工具编辑
    找到以下位置
    APPEND ${cbootargs} root=/dev/nvme1n1p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 video=efifb:off console=tty0

    root=/dev/nvme1n1p1 ,将dev后面的设备从mmcblk0p1改为对应的nvme, 2280 是nvme0n1p1, 2230是nvme1n1p1 保存,上传并覆盖源文件。安装好ssd并开机。