用 rufus 制作 Ubuntu U盘启动盘
家里电脑 CPU X86 架构,系统是 Windows10,下面将它换成 Ubuntu,当前下载的最新版是 ubuntu-22.04.1-desktop-amd64.iso
,不同版本安装基本都一样,Ubuntu 官方下载地址。
Windows 上装好 Rufus,插入U盘,按下面设置制作启动盘:
装好后,U盘被占 4 个GB,Ubuntu 22 被装在里面了,无需放 iso 镜像。
安装步骤
BIOS 上选择 U盘启动就不讲了,对于我的华硕主板,这里最关键的是要 开启CSM 和 选择UEFI:
重启电脑。之后,选择 Try or Install Ubuntu 开始安装:
对于七彩虹主板,选择 Try or Install Ubuntu 后,会显示以下界面:
必须根据提示按 DEL 键才触发真正的安装,此时会切到命令控制台打印一堆安装的日志,大概1分钟后,出来下面的界面(华硕的好像直接进到下面的界面了):
装好后,先来设置禁止自动更新:
设置国内原
先备份原来的源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
接着执行 vi /etc/apt/sources.list
编辑源,依次按 :%d
三个字符清空文件,放入下面内容:
# deb cdrom:[Ubuntu 22.04 LTS _Jammy Jellyfish_ - Release amd64 (20220419)]/ jammy main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy universe # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates universe # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy multiverse # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates multiverse # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted # deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security universe # deb-src http://security.ubuntu.com/ubuntu jammy-security universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security multiverse # deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse # This system was installed using small removable media # (e.g. netinst, live or single CD). The matching "deb cdrom" # entries were disabled at the end of the installation process. # For information about how to configure apt package sources, # see the sources.list(5) manual.
接着使用命令 sudo apt update
更新源就好了。
安装 vim 编辑器
自带 vi 编辑器超级不好用,尤其是按回退等键时并不是期望的效果。
apt install -y vim
允许 root 账号登录桌面
默认 root 账号无法登录桌面的,下面来支持下,先配个 root 密码:
sudo passwd root
接下来执行 su root
切换到 root 账户下操作:
vim /etc/pam.d/gdm-autologin
找到 auth required pam_succeed_if.so user !=root quiet_success 加 # 注释,大概在第三行。
vim /etc/pam.d/gdm-password
在 auth required pam_succeed_if.so user !=root quiet_success 加 # 注释。
两处注释掉后重启电脑,就可以用 root 账号来登录桌面了。
安装 SSH 服务
# 安装 SSH 服务 apt install -y openssh-server
允许 root 账户使用 SSH:
vim /etc/ssh/sshd_config
找到 PermitRootLogin prohibit-password 注释掉,下面加一条 PermitRootLogin yes,改好后重启服务:
systemctl start sshd
生产服务器建议使用SSH公钥认证方式,具体可参考:配置 SSH 公钥认证登录
配置静态IP(可选)
对于没装可视化界面的 Ubuntu,可用下面方式配置静态IP和DNS:
# 1.查看 netplan 配置文件是否存在 ls /etc/netplan # 2.编辑配置文件(内容请看下面截图) vim /etc/netplan/*.yaml # 3.应用配置(使用 try 而不是 apply 的原因是,如果配置错误导致断网,连不上,那没关系,只需要等120秒,网络配置就会自动恢复到原来的状态。) netplan try # 4.检查新配的静态IP是否生效(看截图) ip addr
注意:上面的 子网掩码是 16 位的(对应 255.255.0.0),在我公司得改成 16 位的,否则无法上外网, ping baidu.com 不通!
安装 Nvidia GPU 显卡驱动
# 借助下面命令查看可安装驱动 ubuntu-drivers devices # 在 GTX 3060ti 上装了 recommend 的驱动 nvidia-driver-525-open,重启无效,卸载后,装 nvidia-driver-525 重启就没问题了。 # 经测,GTX 4080 也是装这个驱动就好了。装好后两块显卡可任意插拔,不影响在docker gpu使用。若遇"nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown"很可能是显卡线没插好,我就遇到过2次,搞了好久才回过神来发现线头没插到显卡上。 sudo apt install -y nvidia-driver-525
装到一半出现 UEFI Secure boot 验证机制,需要输入一个 secure boot 密码(装 GTX 3060 Ti 时没有出现这个验证机制),以便重启系统时再次输入此密码来验证固件启动的代码是可信的:
安装完显卡驱动后,需重启加载驱动,重启后出现如下图,开始不懂选了第一个 Continue boot
,致新安装的 N 卡驱动没有加载,想重新选择重启电脑却再也不不出来此界面:
出现 perform mok management
后正确的做法是:
- 当进入蓝色背景的界面perform mok management 后,选择 enroll mok
- 进入enroll mok 界面,选择 continue
- 进入enroll the key 界面,选择 yes
- 接下来输入你在安装驱动时输入的密码
- 之后会跳到蓝色背景的界面perform mok management 选择第一个 reboot
这样,重启后N卡驱动就加载了(ubuntu下搜索软件 nvidia):
也可以用下面的命令来测试 nvidia driver 是否安装成功:
nvidia-smi
对于像我一样刚开始 perform mok management
选错的,可以通过下面方式清理驱动,然后重新安装:
# 请注意,这个命令也会卸载掉 nvidia-container-runtime,导致 docker 中无法使用 GPU,必须重新安装才行 sudo apt remove -y --purge nvidia* sudo apt update sudo apt install nvidia-driver-525
GPU 监视
# 每隔1秒更新 GPU 运行情况 watch -n 1 nvidia-smi
Docker
安装 Docker 引擎
(1)按照官方教程一步步复制命令粘贴即可:Install Docker Engine on Ubuntu 。
(2)在 2024-10-19 日使用了2个国内源安装,下载都超级慢了,因此按官方文档来离线安装。Ubuntu 22.04 的代号是 Jammy Jellyfish,对应离线安装包 jammy 目录,直达下载地址。安装命令:
sudo dpkg -i ./containerd.io_*_*.deb \ ./docker-ce_27.3.1-1~ubuntu.22.04~jammy_amd64.deb \ ./docker-ce-cli_*_*.deb \ ./docker-buildx-plugin_*_*.deb \ ./docker-compose-plugin_*_*.deb
装好后 Docker 引起已启动了,而且会开机自动启动 Docker。
# 检查 Docker 是否运行正常 systemctl status docker
接着将 Docker 默认数据目录位置 /var/lib/docker
改到 /home/xxx/service/docker
,在 /etc/docker/daemon.json 中写入如下内容(文件不存在则新建):
{ "data-root": "/home/xxx/service/docker" }
加好后重新启动下服务:
sudo systemctl daemon-reload sudo systemctl restart docker # 删除旧目录 rm -rf /var/lib/docker/
安装 nvidia-container-runtime
接着我们再安装 nvidia-container-runtime 插件,以便 docker 容器中可以使用 GPU,安装过程请参考: Docker 中 GPU 的使用。
安装 docker-compose
# 安装最新版(装好后 compose 文件可能会不兼容,得更新) apt install -y docker-compose # 查看当前版本 docker compose version # 卸载 sudo apt-get remove docker-compose-plugin
Dockerfile 中使用国内源
apt-get 使用国内源
# apt-get 使用阿里云源 RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list && apt-get clean
pip 使用国内源
对于 pip 使用国内源,可以在 pip 命令后面加 -i 参数,例如:
# 使用 -i 参数指定国内源(推荐) pip install tensorflow==2.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
参考:pip 笔记
Docker 容器中使用代理下载
用github项目上的 Dockerfile 制作镜像,如 StableDiffusionWebui、Fooocus等,首次启动时会下载很多模型,由于国内被导致启动失败,实际上可以进入容器手动下载。
(1)以 fooocus 为例,首先修改 docker-compose.yml,添加 command: /bin/sh -c “sleep 36000;”,这一步的目的是让容器不挂掉,一直保持运行状态。
(2)容器起来后,运行 docker run -it –rm fooocus bash 进入容器,然后执行 export http_proxy="http://192.168.3.130:7890" && export https_proxy="http://192.168.3.130:7890"
设置代理,测试:curl https://google.com
(3)不要关闭当前shell窗口,继续执行脚本 /content/entrypoint.sh ${CMDARGS}
,这个命令在 Dockerfile 最后一行的 CMD 处,一旦调用此脚本,就会开始下载缺失的模型,这些模型会下载到 volumes 中持久化。
用 SCP 命令内网传输
若两台 linux 用千兆线连接,推荐直接用 scp 命令在这两台电脑间传输数据,速度可达 125MB/s。
若用 Windows 电脑里的 XFTP 等工具与这两台电脑建立连接后,再可视化拖动一台中的数据到另一台,速度会非常慢只有 20MB/s,瓶颈可能是我的 Windows 电脑用的 wifi 把,暂不深入研究了。
#【linux -> linux】 scp /home/docker-image/tomcat-*.tar.gz root@192.168.3.112:/home/docker-image
Ubuntu 排错
磁盘空间不足致无法开机
先说说 Ubuntu 环境: SSD 固态硬盘 512GB,配置了60GB的系统Swap,加上模型、镜像大概 200GB,总共大概会占用50%磁盘空间。
某天开机直接卡在下图,大概说docker无法启动:
怎么办?重装系统,太费时,还是先排查下吧…….
开机长按Shift进入 Grub,选第二个高级选项:
此时会显示 Recovery Menu 菜单,我尝试用 fsck 恢复:
但报错了:No space left on device:
看到这个错,就看到了希望,回到 Recovery Menu 菜单,此时选择 root:
注意,在这里使用 root 命令行时要输入密码,如果密码有大写,按切换键是不会有任何提示的,包括键盘上的大写灯也不会亮起,但实际是可用的,第一次使用时,当密码输入错误,一度让我怀疑这里无法使用大写导致,实际上是自己想多。进入shell命令界面后,迫不及待打一个 df -h
看下磁盘空间,果然磁盘100%用尽:
再用 du -sh *
层层目录排查,最终发现 docker overlay2 目录占用大量磁盘空间:
最终解决办法:执行 docker system prune 释放了120GB 磁盘空间,暂时解决了问题。
Unable to determine the device handle for GPU0000:01:00.0: Unknown Error
主板上插了 2080ti 和 3090 两块显卡,AI满负荷运转重启没过多久又报上面的错。经测,是因为用了一拖二的线,供电不足了,换两个2080ti 就没事了(把 3090 的卸了),但是显卡温度竟达到了 86%