• 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

    改名
    # 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
    👉 这一步是“指路牌”,决定你下一步该删什么

  • 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

    终于可以摆脱使用愚蠢的 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并开机。

  • JsonNano 编译Opencv CUDA支持

    验证Opencv版本及CUDA支持
    apt install python3 python3-pip
    pip3 install jetson-stats
    jetson_release

    原文链接 https://qengineering.eu/install-opencv-on-jetson-nano.html
    1,确认Swap空间是否足够+增加Swap空间容量
    vi /etc/systemd/nvzramconfig.sh
    找到这一行
    Calculate memory to use for zram (1/2 of ram)
    totalmem=$(LC_ALL=C free | grep -e “^Mem:” | sed -e ‘s/^Mem: *//’ -e ‘s/ *.*//’)
    mem=$(((“${totalmem}” / 2 / “${NRDEVICES}”) * 1024))


    把它改成 去掉 / 2,变成:
    Calculate memory to use for zram (ALL ram for zram, 2x previous)
    totalmem=$(LC_ALL=C free | grep -e “^Mem:” | sed -e ‘s/^Mem: *//’ -e ‘s/ *.*//’)
    mem=$(((“${totalmem}” / “${NRDEVICES}”) * 1024))
    这样每个 zram 分区的大小会变成原来的 2 倍,总 swap 也就是现在的 2 倍左右。reboot
    系统起来后,检查:
    zramctl
    cat /proc/swaps

    2,基于脚本编译Opencv
    为了简化流程,作者提供了一个一键脚本 (≈ 68 行命令),可自动执行包括依赖安装、环境配置、编译、链接、清理的全部步骤。一共大约需要 2 小时。

    以安装 OpenCV 4.11.0 为例,命令如下:
    先检查总内存 (RAM + swap) 是否 >= 8.5 GB
    free -m
    下载脚本
    wget https://github.com/Qengineering/Install-OpenCV-Jetson-Nano/raw/main/OpenCV-4-11-0.sh
    编辑脚本加入cmake版本信息
    在# run cmake下面加入
    -D CMAKE_CXX_STANDARD=17 \

    sudo chmod 755 ./OpenCV-4-11-0.sh
    ./OpenCV-4-11-0.sh
    安装完成后清理
    rm OpenCV-4-11-0.sh
    可选:删除源码文件,节省空间
    sudo rm -rf ~/opencv
    sudo rm -rf ~/opencv_contrib

    如果你想安装其他版本 (4.10, 4.9, 4.8, …),也可以下载对应版本脚本执行。

  • Linux设置开机进入shell或xwindows

    改为进入shell
    systemctl set-default multi-user.target
    
    改为进入xwindows
    systemctl set-default graphical.target
  • Nvidia Jason Nano SNAP bug fix

    由于新版本snap的bug导致firefox等浏览器无法运行,安装旧版本snapd
    snap download snapd –revision=24724
    snap ack snapd_24724.assert
    snap install snapd_24724.snap
    snap refresh –hold snapd
    snap install firefox

  • Linux中使用cat EOF 将文本写入文件

    cat << EOF > 文件名
    内容行1
    内容行2
    内容行3
    EOF

  • 让Linux用户sudo操作免密码

    # vi  /etc/sudoers 

    在最后面加一行
    gex ALL=(ALL) NOPASSWD: NOPASSWD: ALL