1)下载ubuntu 22版本的iso镜像:
https://releases.ubuntu.com/jammy/里面:
https://releases.ubuntu.com/jammy/ubuntu-22.04.5-desktop-amd64.iso
2)下载rufus:
http://rufus.ie/en/#download
https://github.com/pbatard/rufus/releases/download/v4.12/rufus-4.12p.exe
制作ubuntu启动盘。
3)插入另外的U盘或者USB硬盘(128G以上),修改BIOS为ubuntu启动盘启动。
4)安装ubuntu系统,注意选择正确的目标盘,引导区要选择为目标盘。
- EFI分区:600M
- 交换区:内存x2,16G内存就选32G
- 其他为ext4。
时区选择上海,一路next安装。
5)关键:安装完成之后,拔掉Ubuntu启动盘重启,这时经常出现一个错误是屏幕上光标闪烁,无法重启。这是由于EFI没有正确写入目标盘的问题。可以强制关机,用ubuntu启动盘引导,选择try模式,运行如下命令:
1. 识别系统盘U盘的分区
sudo fdisk -l
找到你的系统盘U盘(通常是 /dev/sdb ,也有可能是/dev/sda,一定要确认好),确认:
◦ EFI分区:/dev/sdb1(大小约512MB,类型为EFI System)
◦ 根分区:/dev/sdb3(最大的分区,类型为Linux filesystem)
2. 挂载系统盘的分区
# 挂载根分区
sudo mount /dev/sdb3 /mnt
# 挂载EFI分区
sudo mount /dev/sdb1 /mnt/boot/efi
3. 绑定必要的系统目录(为chroot做准备)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
4. 切换到系统盘的根目录(chroot)
sudo chroot /mnt
执行后,终端提示符会变为 root@ubuntu:/#,表示你已进入系统盘的Ubuntu环境。
5. 在chroot环境下修复引导
# 重新安装GRUB到系统盘U盘
grub-install --efi-directory=/boot/efi /dev/sdb
# 更新GRUB配置
update-grub
6. 退出chroot并重启
exit
sudo reboot
重启前,务必移除安装盘,仅保留系统盘U盘。
执行完这些步骤后,你的系统盘U盘就能独立引导了。
7.启动失败修复;
查看当前磁盘分区信息:
lsblk -f
记录每个分区的 UUID 和挂载点。
打开 /etc/fstab 文件进行编辑
nano /etc/fstab
需要安装的程序:
1)修改为阿里云镜像:
-
在"Ubuntu软件"选项卡中,点击"下载自"旁边的下拉菜单
- 选择"其他..." → 在列表中找到"China" → 选择"mirrors.aliyun.com"
- 点击"选择服务器",输入密码确认
2)Tailscale:
sudo apt install curl
sudo apt-get install apt-transport-https
curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bullseye.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg > /dev/null
curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bullseye.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update
sudo apt-get install tailscale
sudo tailscale up --authkey=XXX
sudo tailscale up --exit-node=XXX
3)安装下载加速软件:
sudo apt install axel
4)安装Chrome:
axel https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
5)tailscale设置exit-node模式,chrome下载switchy插件
6)安装npm, node, claude和vscode
# node清理并重新安装
sudo apt clean
sudo apt update
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
# npm清理并重新安装
npm cache clean --force
虽然淘宝镜像 (registry.npmmirror.com) 在国内访问很快,但从海外服务器访问可能路径不是最优。你可以尝试换成其他国内主流镜像源,特别是腾讯云自家的内网镜像,可能对海外节点有优化
腾讯云内网镜像:这应该是你的首选,同云厂商的内网地址通常速度最快
npm install -g openclaw@latest测试一下速度。# 1. vscode下载最新版 .deb 包
wget -O code.deb "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"
# 2. 安装
sudo apt install ./code.deb
claude-code:
sudo npm install -g @anthropic-ai/claude-code
echo 'export ANTHROPIC_AUTH_TOKEN="sk-xxx"' >> ~/.bashrc echo 'export ANTHROPIC_BASE_URL="https://hone.vvvv.ee"' >> ~/.bashrc source ~/.bashrc
然后打开 ~/.bashrc文件进行修改。
然后 claude运行,ctrl+c退出。
nano .claude.json
增加:
"hasCompletedOnboarding": true
7)安装Nvidia驱动:
# 移除所有 NVIDIA 相关包
sudo apt purge nvidia* libnvidia*
sudo apt autoremove
sudo apt autoclean
2. 检查系统是否识别到 NVIDIA 显卡
lspci | grep -i nvidia
如果能看到 RTX 3050,继续下一步。
01:00.0 3D controller: NVIDIA Corporation GA107M [GeForce RTX 3050 Mobile] (rev a1)
3. 安装推荐的 NVIDIA 驱动
方法一:使用 ubuntu-drivers(推荐)
# 检测推荐的驱动
ubuntu-drivers devices
# 自动安装推荐驱动
sudo ubuntu-drivers autoinstall
配置 PRIME(双显卡切换)
# 安装 NVIDIA Prime
sudo apt install nvidia-prime
# 查看当前使用的 GPU
prime-select query
# 切换到 NVIDIA 显卡
sudo prime-select nvidia
# 或切换到集成显卡省电
sudo prime-select intel # 如果是 AMD+NVIDIA 可能是 on-demand
重启系统
sudo reboot
验证安装
# 查看 NVIDIA 驱动状态
nvidia-smi
# 查看当前使用的显卡
glxinfo | grep "OpenGL renderer"
安装cuda:
1. 检查 NVIDIA 驱动版本
nvidia-smi
查看右上角的 CUDA Version,这是驱动支持的最高 CUDA 版本。
2. 选择安装方法
使用 Ubuntu 仓库安装(推荐,简单)
#下载 CUDA 仓库配置包
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
# 更新包列表
sudo apt update
# 安装 CUDA 12.6 Toolkit
sudo apt install cuda-toolkit-12-6
配置环境变量
# 编辑 bashrc
nano ~/.bashrc
添加以下内容到文件末尾:
# CUDA 环境变量
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
配置生效:
source ~/.bashrc
验证安装
# 查看 CUDA 版本 nvcc --version # 查看 GPU 信息 nvidia-smi
# 安装cuDNN
sudo apt install libcudnn9-cuda-12 libcudnn9-dev-cuda-12
检查 cuDNN 库文件
# 方法1: 查找 cuDNN 库文件
ls -la /usr/lib/x86_64-linux-gnu/libcudnn*
# 方法2: 使用 ldconfig 查找
ldconfig -p | grep cudnn
# 方法3: 查找所有 cuDNN 相关文件
find /usr -name "libcudnn*" 2>/dev/null
WiFi连不上的解决办法:
问题找到了!MT7921 在 Ubuntu 22.04 的驱动对 WiFi 6 (AX) 模式的兼容性确实有问题,特别是在较旧的内核和固件版本上。关掉 AX 模式回退到 AC/N 就正常了。
2)Wifi 2.4G可以连接,但是5G连不上:
检查DNS设置,不要手动输入,自动获取即可,删除不必要的DNS的IP地址。
升级WiFi网卡固件:
升级Media Tek MT7961WiFI网卡固件:
# 下载最新固件
cd /tmp
git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
# 备份旧固件
sudo cp /lib/firmware/mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin /lib/firmware/mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin.bak
sudo cp /lib/firmware/mediatek/WIFI_RAM_CODE_MT7961_1.bin /lib/firmware/mediatek/WIFI_RAM_CODE_MT7961_1.bin.bak
# 覆盖安装
sudo cp /tmp/WIFI_MT7961_patch_mcu_1_2_hdr.bin /lib/firmware/mediatek/
sudo cp /tmp/WIFI_RAM_CODE_MT7961_1.bin /lib/firmware/mediatek/
# 确认文件大小对了
ls -la /lib/firmware/mediatek/WIFI_MT7961*
ls -la /lib/firmware/mediatek/WIFI_RAM_CODE_MT7961*
# 重启(重载驱动不一定够,固件更新建议重启)
sudo update-initramfs -u # 需要验证
sudo reboot
升级Intel AX210 WiFI蓝牙网卡固件:
要用Git Clone的目录的文件,/intel/iwlwifi目录下找到最新的
| iwlwifi-ty-a0-gf-a0-86.ucode (ubuntu 22最高支持版本)和 iwlwifi-ty-a0-gf-a0.pnvm |
find /lib/firmware -name "iwlwifi-ty-a0-gf-a0*" -ls #找到firmware
#更新firmware文件
sudo cp iwlwifi-ty-a0-gf-a0* /lib/firmware/
# 重启(重载驱动不一定够,固件更新建议重启)
sudo update-initramfs -u # 需要验证
sudo reboot
#查看加载的情况
dmesg | grep iwlwifi
制作备份盘的方法:
核心思路是:克隆 Ubuntu to Go 到另一个 U 盘,然后修复引导。
建议的正确流程
准备阶段:用 Ubuntu 启动盘(Live USB)启动,同时插上 Ubuntu to Go 移动硬盘和目标 U 盘 2。
第一步:给 U 盘 2 分区
用 gdisk 或 parted 对 U 盘 2 建立 GPT 分区表,创建三个分区:EFI(约 512MB,类型 EF00,格式化为 FAT32)、swap(按需,类型 8200)、系统分区(剩余空间,格式化为 ext4(这样才能保留文件的权限))。
第二步:复制数据
这一步很关键,不要用普通的 cp,建议用 rsync 保留权限和特殊属性:
# 假设 Ubuntu to Go 系统分区是 /dev/sda3,U盘2 系统分区是 /dev/sdb3
sudo mkdir /mnt/source
sudo mkdir /mnt/target
sudo mount /dev/sda3 /mnt/source
sudo mount /dev/sdb3 /mnt/target
sudo rsync -aAXvP --info=progress2 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} /mnt/source/ /mnt/target/
#(加-P,兼顾进度 + 断点续传) sudo rsync -aAXH --whole-file --inplace --no-inc-recursive --info=progress2 \ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found","/swapfile"} \ /mnt/source/ /mnt/target/ #
改动说明:
- 加
-H保留硬链接 - 加
--whole-file本地复制跳过增量算法,更快 - 加
--inplace直接写入,减少磁盘操作 -vP改成--info=progress2显示整体进度,避免刷屏- 排除里加上
/swapfile(如果有的话) --no-inc-recursive,先扫描完再传输,进度显示更准确。
EFI 分区也需要复制:
sudo mkdir /mnt/source_efi
sudo mkdir /mnt/target_efi
sudo mount /dev/sda1 /mnt/source_efi
sudo mount /dev/sdb1 /mnt/target_efi
sudo rsync -av /mnt/source_efi/ /mnt/target_efi/
第三步:修改 fstab
先用 blkid 查看 U 盘 2各分区的新 UUID:
sudo lsblk -f /dev/sdc
然后编辑 U 盘 2 系统分区上的 fstab:
sudo nano /mnt/target/etc/fstab
把里面所有 UUID 替换成 U 盘 2 对应分区的 UUID。这一步遗漏的话系统会无法启动。
第四步:chroot 并修复引导
# 挂载目标系统
sudo mount /dev/sdb3 /mnt
sudo mount /dev/sdb1 /mnt/boot/efi
# 绑定系统目录
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run # EFI相关操作需要它
# chroot
sudo chroot /mnt
# 在 chroot 内
grub-install --efi-directory=/boot/efi /dev/sdb
update-grub
exit
先复制数据、改 fstab,最后再 chroot 修复引导。
U盘/硬盘分区过程:
1. 确认 U 盘设备名
插入 U 盘后,运行:
sudo lsblk -f #输出UUID,方便编写fstab文件
#或者
sudo blkid
找到你的 U 盘(假设是 /dev/sdb,根据实际情况替换)。务必确认设备名,操作错误会丢失数据。
2. 启动 fdisk
sudo fdisk /dev/sdb
```
进入 fdisk 交互界面后,按以下步骤操作。
---
## 3. 创建 GPT 分区表
fdisk 提示符下输入:
```
g
```
这会创建一个新的 GPT 分区表(会清除 U 盘上所有数据)。
---
## 4. 创建第一个分区(EFI, 600M)
```
n ← 新建分区
```
- Partition number: 直接回车(默认 1)
- First sector: 直接回车(默认)
- Last sector: 输入 `+600M`
然后修改分区类型:
```
t ← 修改类型
```
- Partition number: 直接回车(默认 1)
- Partition type or alias: 输入 `1`(即 EFI System)
---
## 5. 创建第二个分区(swap, 32G)
```
n ← 新建分区
```
- Partition number: 直接回车(默认 2)
- First sector: 直接回车(默认)
- Last sector: 输入 `+32G`
修改分区类型:
```
t ← 修改类型
```
- Partition number: 输入 `2`
- Partition type or alias: 输入 `19`(即 Linux swap)
---
## 6. 创建第三个分区(ext4,剩余空间)
```
n ← 新建分区
```
- Partition number: 直接回车(默认 3)
- First sector: 直接回车(默认)
- Last sector: 直接回车(默认,占用全部剩余空间)
类型默认就是 `Linux filesystem`,无需修改。
---
## 7. 确认并写入
```
p ← 查看分区表,确认无误
w ← 写入并退出
8. 格式化各分区
# EFI 分区格式化为 FAT32
sudo mkfs.vfat -F 32 /dev/sdb1
# swap 分区
sudo mkswap /dev/sdb2
# ext4 分区
sudo mkfs.ext4 /dev/sdb3
9. 验证结果
lsblk -f /dev/sdb
```
输出应类似:
```
sdb
├─sdb1 vfat 600M
├─sdb2 swap 32G
└─sdb3 ext4 剩余
sudo swapon /dev/sdb2 #启用 swap
调整ubuntu系统ext4分区大小
安装gparted工具: sudo apt install gparted exfat-fuse exfatprogs
运行: sudo gparted 选择对应的硬盘,调整分区,注意要从后向前拖动,保证分区的起始位置不变。
如果分区前面有一个钥匙图标🔑,这表示该分区当前已挂载。 GParted 无法调整已挂载分区的大小。
解决方法: sudo umount /dev/sdb3
解决开机速度慢的问题:
Gave up waiting for suspend/resume device /dev/sda3: Clean, 294094/13066240 files, 10103907/52235008 blocks 39.110651] Bluetooth: hcio: No dsm support to set reset delay 39.561180] NVRM: Loading NVIDIA UNIX x86_64 Kernel Module* 590.48.01 Mon Dec 8 11:22:45 UTC 2025
直接禁用 resume(不用休眠)
echo "RESUME=none" | sudo tee /etc/initramfs-tools/conf.d/resume
sudo update-initramfs -u
原因: 没有 resume 配置文件时,initramfs 会自动猜测 resume 设备,它猜错了,把 sda3 当成了 resume 设备。创建这个文件后就不会再猜了,重启后就好了。
未经允许不得转载:巡星人 » 制作Ubuntu To Go的过程
巡星人