ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu系统实战指南:从安装配置到Systemd服务部署

Ubuntu系统实战指南:从安装配置到Systemd服务部署 简介这份Ubuntu使用教程与资源指南面向初次接触Ubuntu的新手及希望提升系统维护和开发效率的进阶用户围绕系统安装、日常使用、性能优化和项目实战四大方向展开。内容从制作启动盘、推荐分区方案、apt软件源更新与基础工具链安装写起逐步深入到终端软件管理、开机服务禁用、资源监控等优化技巧并为开发者提供Docker容器化环境、Python虚拟环境以及LAMP环境搭建的完整方法。资源为1个docx格式文档约21KB内容精炼而系统。目前已有1124人学习可配合实际操作边读边练。文档还给出Web服务器搭建、自动化Bash脚本、Docker Compose单机编排和Harbor私有仓库等具体案例并附有官方文档、社区教程及依赖冲突和驱动兼容等常见问题处理导航能够帮助读者在实践中快速定位并解决系统使用与开发中的各类问题。1. Ubuntu这套系统值得你花一个周末认真入门很多人第一次接触 Ubuntu 是被开发机、服务器或者课程作业逼到这儿来的。装上不难真正让人劝退的是装完之后不知道下一步干嘛输入法打不出中文、装个 GCC 报一屏错、环境变量改错重启后连 ls 都没了。这篇笔记就是把这些场景一次讲透的落地记录。我会从官网镜像下载开始带你用虚拟机安装和双系统两条路各走一遍然后解决中文输入法、软件源、网络、SSH 这些日常高频问题再深入环境变量、显卡驱动和系统重装的进阶项最后用一个 systemd 部署的 Python 服务收尾把前面所有操作串成一个能跑的真项目。新手照着敲能走通熟手可以直接跳到你关心的踩坑段。这里没有玄学判断命令后面都会解释参数为什么这么写以及应该在什么场景下改。2. Ubuntu安装全流程镜像下载、虚拟机与双系统选型、初始化清单装系统看似简单但很多人卡在第一步镜像从哪下、要不要校验、虚拟机怎么给资源、双系统怎么分区。下面按我自己的顺序走一遍。2.1 镜像下载只用官网ISO并校验SHA256Ubuntu 官网的 Download 页面会默认推荐 LTS 版本比如 24.04.1 LTS。LTS 意味着五年支持日常学习和生产都用它别为了“最新”去选旧版本或 non-LTS 的 interim 版本。下载地址我始终只用官方网站因为你遇到的所有“镜像站改包”问题官网下载都能避开。下载回来先做一件事校验。sha256sum ubuntu-24.04.1-desktop-amd64.isosha256sum会输出一长串哈希值。你在官网下载页面对应的 SHA256SUMS 文件里找到文件名后的字符串两个比对一致才说明镜像完整。这个校验在团队分发镜像时尤其重要否则装完系统出现包签名报错、启动闪退你会排查到怀疑人生。制作启动盘Windows 下我建议 RufusmacOS 和 Linux 下用 balenaEtcher。选 U 盘时注意 Rufus 的“分区类型”选 GPT“目标系统”选 UEFI非 CSM。用普通刻录工具做出来的 U 盘可能在 UEFI 引导时直接黑屏属于白折腾二十分钟。写盘会清空整个 U 盘有数据先备份。提示校验 ISO 这一步不要跳过。很多安装中途崩溃的案例最后都查到是镜像被截断或者第三方改动而不是硬件问题。2.2 VMware虚拟机还是双系统按场景选这里先给一张对比表方向适合谁性能损失翻车风险后悔药VMware 虚拟机新手入门、多发行版试验、跑隔离编译低低快照双系统需要 GPU 算力、想长期主力用 Ubuntu几乎为零中高备份和引导修复如果你只是先学会用 Ubuntu虚拟机是成本最低的路线。VMware 新建虚拟机时选择“典型”模式即可ISO 指向你下载的镜像。处理器核数给 2 以上内存建议 4GB 以上、8GB 更好磁盘给 40GB 以上。虚拟机设置里有一个关键开关处理器选项卡里的 “Virtualize Intel VT-x/EPT” 或 “Virtualize AMD-V/RVI”不勾选后面会报“客户机操作系统已禁用 CPU”的错这个错我放在第 5 章详细拆。双系统安装则要动真格。先在 Windows 的磁盘管理里压缩出来至少 100GB 未分配空间给 Ubuntu 的 / 分区用。启动 Ubuntu U 盘安装器安装类型选“与 Windows 双系统共存”或“手动分区”。手动分区时给 / 分配 ext4swap 建议与内存大小相当/boot/efi 用已有的 ESP 分区别自己新建一个 FAT32 就顶替UEFI 规范里 ESP 只有一个。双系统最常见的翻车点Windows 快速启动和 BitLocker。快速启动会让 Windows 关机变成休眠导致 Ubuntu 看不到 Windows 的分区BitLocker 则会直接拦在 Ubuntu 安装器前面让你输入恢复密钥。装之前我在 Windows 里把“快速启动”关掉BitLocker 关闭或记好恢复密钥可以省掉两小时。2.3 安装后的初始化清单装完系统进入桌面第一件事打开终端跑三条命令sudo apt update sudo apt upgrade -y sudo apt install -y vim git curl build-essentialapt update是刷新软件源索引upgrade -y升级到源里的最新版本install后面的vim git curl build-essential是最基础的开发工具集。build-essential 会带上 gcc、g 和 make没有它你后面装任何要编译的软件都会卡在奇怪的地方。如果 upgrade 报错先检查软件源配置一般是你改成了不兼容源。国内访问默认源慢建议替换成阿里云或清华的镜像源。Ubuntu 24.04 的软件源配置在/etc/apt/sources.list.d/ubuntu.sources把http://archive.ubuntu.com/ubuntu替换成http://mirrors.aliyun.com/ubuntu然后sudo apt update验证。换源时不要混用多个镜像站deb 系最怕源混乱最后 apt 报哈希校验失败。sudo adduser dev sudo usermod -aG sudo dev我用adduser建一个日常用户 dev而不是整天用 root。adduser会自动创建家目录、设定 shellusermod -aG sudo dev把它加进 sudo 组这样它能提权但不会把自己锁在 root 里。-aG的-a是追加漏掉它会把用户从其他组踢出去这个参数我在第 5 章还会再提醒。最后立刻拍下第一个快照。VMware 里右键虚拟机快照 - 拍摄快照名称写 installed-clean双系统用户可以用 Timeshift 备份系统或者用 tar 打包 /etc。这一步是后面所有折腾的后悔药。别觉得自己不会翻车显卡驱动、PPA 源、环境变量每个人都会至少翻一次。3. 日常使用高频操作输入法、软件安装与网络配置3.1 Ubuntu中文输入法怎么设置我走通的fcitx5方案Ubuntu 装好后进入中文沟通场景第一件事是输入法。24.04 默认用 GNOME 的 IBus 框架系统设置里添加“中文 (Intelligent Pinyin)”其实就能用但很多从业者会选搜狗输入法或 fcitx5。搜狗输入法 Linux 版的官方 deb 包是针对旧版 fcitx 打的在 24.04 上安装时会和当前 GTK 环境冲突装完多半不出现输入法图标。我最后稳定用下来的方式是这个sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-configtoolfcitx5是新一代输入法框架fcitx5-chinese-addons提供拼音、双拼、五笔和词库fcitx5-configtool是图形配置工具。装完之后改环境变量让 GTK/Qt 程序识别输入法cat ~/.profile EOF export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERSimfcitx EOF logoutGTK_IM_MODULE决定 GTK 应用走哪个输入模块QT_IM_MODULE管 Qt 应用XMODIFIERS是传统 X 应用的老接口。这三个不全会导致有些软件能打中文有些软件打不出只有XMODIFIERS生效但 GTK 模块没配时候选框会出现在奇怪的位置。重新登录后打开 fcitx5-configtool在 Input Method 里把 Pinyin 添加进去默认切换键是 Ctrl空格。如果你习惯 Shift 切换到 Global Options 里把 Trigger Input Method 改成 Left Shift。注意Wayland 会话下 Electron 应用VS Code、新版微信经常出现候选框不跟随、切不出来的问题。我试过加--enable-wayland-ime参数效果不稳定最后直接改回 Xorg 登录会话问题消失。在登录界面点右下角齿轮选 “Ubuntu on Xorg”。3.2 apt、snap、deb 三种安装方式怎么选Ubuntu 软件安装有三条路选错会带来后续更新的坑。apt 是系统仓库里的 deb依赖自动解决适合大部分命令行工具和库snap 是 Canonical 推的沙箱格式自带依赖、自动更新缺点是首启慢、磁盘占用大deb 手动包适合官方渠道发布的软件比如 VS Code、微信、搜狗输入法。方式依赖处理版本新鲜度典型问题apt自动随系统版本偏旧源配置错误snap自带新启动慢、后台服务多dpkg/deb不自动官方最新缺依赖我自己装的软件命令行工具优先 aptIDE 用 deb 官方包日常 GUI 应用能用 deb 就用 deb不行才 snap。sudo apt install vlc sudo snap install code --classic sudo dpkg -i ./code.deb sudo apt -f installsnap install code --classic中--classic给应用完全权限否则 VS Code 扩展无法创建系统级文件。dpkg -i是直接装一个 deb如果它报依赖缺失马上执行apt -f install强制修复依赖关系完成后 dpkg 才能继续。有一个习惯值得坚持不要同时用 snap 装一个软件又用 deb 装同一个软件两者隔离机制不同环境变量和文件路径会互相干扰。关于语言包管理器记住一个边界系统级依赖用 apt项目级依赖用 virtualenv/nvm/pyenv。我见过同事直接在 Ubuntu 系统 Python 里 pip install 覆盖了dist-packages结果apt工具链里的 Python 脚本全部报ModuleNotFoundError最后只能重装 python3。这不是 bug是混用了包管理器。3.3 网络配置用netplan固定IP并排查SSH连接开发机的 IP 如果频繁变化SSH 和 Web 服务都会很痛苦。Ubuntu 服务器环境用 netplan 管网络先看网卡名ip a假设你的有线网卡是 ens33编辑/etc/netplan/01-network-manager-all.yaml或者用01-netcfg.yaml。文件内容要严格缩进network: version: 2 renderer: networkd ethernets: ens33: dhcp4: false addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 192.168.1.1renderer: networkd是让 systemd-networkd 接管网卡适合服务器桌面版如果写NetworkManager也可以。addresses里的/24是子网掩码不能省。routes里的 default via 是网关写错会变成有地址但上不了网。nameservers填了 223.5.5.5阿里 DNS和内网网关避免系统自带的 systemd-resolved 解析外网域名超时。改完后执行sudo netplan apply ip a show ens33 ip rip a确认 IP 是 192.168.1.100ip r看到 default via 192.168.1.1 就说明路由正常。netplan 最常见的坑是 YAML 用了 Tab 缩进或者网卡名写错报Invalid YAML: found character that cannot start any token这个报错能准确到第几行不要慌用空格重写该段。然后是 SSH 服务。Ubuntu 桌面版默认不启动 SSH 服务所以“ ssh 连不上”第一件事确认装没装sudo apt install openssh-server sudo systemctl status ssh sudo ufw allow sshsystemctl status ssh显示active (running)就没问题。如果你的防火墙 ufw 是开启的必须allow ssh否则外部主机连接直接超时。还有一类奇怪现象能 ping 通但 SSH 连不上用sudo tail -f /var/log/auth.log看认证日志。如果出现Connection reset by peer多半是 SSH 服务监听在 IPv6 而客户端用 IPv4 在连或/etc/hosts.deny里有记录。一般处理是把ListenAddress 0.0.0.0加到sshd_config并重启 ssh。4. 进阶技巧环境变量、显卡驱动与系统重装4.1 环境变量配置错误之后怎么把系统救回来环境变量是每个 Ubuntu 用户早晚要交的学费。常见做法是在~/.bashrc或/etc/environment里添加export PATH/some/path手一滑把原本的$PATH漏了就变成了export PATH/opt/bin。重启终端后ls、sudo、vi 全报 command not found非常吓人。这时不要重启。先用绝对路径把工具拉回来/bin/ls /usr/bin | head /usr/bin/vi ~/.bashrc/bin/ls、/usr/bin/vi是 coreutils 的绝对路径即使在错误 PATH 下也能执行。把.bashrc里写错的那一行改成export PATH$PATH:/opt/bin保存后执行source ~/.bashrc恢复。更稳妥的写法是新路径放在$PATH后面让系统自带命令优先或者放在前面但必须保留$PATH。我自己的原则是改任何环境变量之前先cp ~/.bashrc ~/.bashrc.bak这是一切后悔药的开始。如果你把错误写进/etc/environment注意这个文件里不能写export只能写PATH/opt/bin:/usr/bin这种裸格式而且不展开$PATH变量所以不要在这里做拼接。在/etc/environment写错可能导致连登录都进不去屏幕停在暗黑终端。这时用 CtrlAltF3 切到 tty3用绝对路径修改文件改完再 reboot。4.2 Ubuntu查看显卡驱动、安装和卸载的正确姿势很多人在 Ubuntu 里折腾显卡驱动翻了车才知道 NVIDIA 驱动和内核强相关。先学会查看lspci | grep -E VGA|3D nvidia-smilspci能看到显卡型号是 NVIDIA 还是 AMDnvidia-smi有输出说明驱动已加载没输出则可能没装或内核模块没加载。要看哪些驱动可用ubuntu-drivers devices它会列出当前系统里推荐的驱动版本比如nvidia-driver-545。安装直接sudo ubuntu-drivers install或装指定版本sudo apt install nvidia-driver-545。装完重启nvidia-smi出现 CUDA 版本就成功。卸载驱动时我用过最稳的一条路sudo apt purge nvidia-* 2/dev/null sudo apt autoremove sudo apt install nvidia-driver-545“ubuntu显卡驱动卸载不掉”的现象往往是apt purge后重启nvidia-smi还在。原因是因为/lib/modules/.../nvidia.ko模块没有重新生成或者系统里还有libnvidia-*残留。先看lsmod | grep nvidia有输出就用sudo modprobe -r nvidia_drm nvidia_modeset nvidia_uvm nvidia按顺序卸载再用dpkg -l | grep nvidia把残留包 purge 干净。官方 runfile 安装的驱动更固执得去/usr/bin/nvidia-uninstall执行卸载或者用 runfile 加--uninstall。还有一个经典的登录循环安装新驱动后输入密码又跳回登录界面。原因是 Wayland 会话与 NVIDIA 驱动兼容不好。解决方案是在登录界面右下角选 “Ubuntu on Xorg”或者检查/etc/gdm3/custom.conf里WaylandEnablefalse的注释是否去掉。建议任何驱动装完先别急着高兴重启后登一次图形界面验证。4.3 系统重装前备份清单系统用久了总想重装但每次重装最痛的其实是恢复环境。我先说备份命令rsync -av --progress /home/dev/ /media/devbackup/home/ dpkg --get-selections /media/devbackup/packages.txt sudo cp /etc/apt/sources.list.d/ubuntu.sources /media/devbackup/ 2/dev/null sudo cp -r /etc/netplan /media/devbackup/rsync备份整个用户目录-a归档模式保留权限和软链接--progress看进度。dpkg --get-selections导出所有已安装包列表。它配合恢复sudo dpkg --set-selections packages.txt sudo apt dselect-upgrade这个过程会把在线仓库里对应的包重新装上但 PPA 软件源要先恢复。我一般把/etc/apt整个目录也备份因为里面藏着自定义源和 APT 配置不是你三分钟能重新敲完的。如果你连网络配置都要恢复/etc/netplan文件夹直接拷回去重启后netplan apply。别忘了~/.ssh目录里的密钥那可是你自己都不知道密码的钥匙丢了就永远丢了。4.4 SSH远程开发配置密钥与SSH config远程开发是 Ubuntu 的日常。先把密钥生成好ssh-keygen -t ed25519 -C devubuntu ssh-copy-id dev192.168.1.100ed25519比rsa短且更安全-C是注释标识。ssh-copy-id会把你公钥追加到远程机器的~/.ssh/authorized_keys。以后再连那台机器就不用输密码。机器多了之后配置~/.ssh/config更省事Host ubuntu-dev HostName 192.168.1.100 User dev IdentityFile ~/.ssh/id_ed25519保存后直接ssh ubuntu-dev就能进去。注意~/.ssh/config和私钥文件权限不能太宽松否则 SSH 会拒绝使用chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519SSH 连不上的时候还有一个常见点远程/etc/ssh/sshd_config里PasswordAuthentication no只留密钥结果你换了电脑没导入私钥自然会被拒。这种情况下只能走云服务商的 web 终端或本机显示器登进系统把客户端公钥重新加到authorized_keys。这个细节容易在真连不上时抓狂所以你至少要保住一份私钥备份。5. Ubuntu常见问题排查五个让我熬夜的坑5.1 claude.exe 无法运行平台不对的典型报错现象在 Ubuntu 上运行一个从 Windows 那边拷贝过来的claude.exe终端或图形界面直接弹窗“程序‘claude.exe’无法运行: 指定的可执行文件不是此操作系统平台的有效应用程序”。原因这个报错不是 Ubuntu 坏了而是可执行文件格式完全不同。Windows 的 EXE 是 PE 格式Linux 可执行文件是 ELF 格式两者不通用即使格式对了x86_64 和 arm64 也不能混跑。这个提示尤其在你想在 Linux 上配置 claude code 又误下了 Windows 包时出现。解决先file claude.exe看文件类型是 PE32 就说明拿错了回到工具官网下载 Linux x86_64 或对应架构的版本。如果执意要用 Windows 程序可以装 Wine但 Wine 对 GUI 应用坑多命令行工具经常因为路径分隔符和文件锁崩掉不值得。真实场景里每台机器应该按目标平台分别构建不要靠跨平台模拟器硬跑。5.2 Ubuntu安装GCC失败apt锁与依赖损坏现象执行sudo apt install build-essential卡住然后报E: Could not get lock /var/lib/dpkg/lock或者E: dpkg was interrupted。原因多半是有另一个 apt 进程还在跑或者上次安装被 CtrlC 中断导致 dpkg 状态库处于半配置状态。我在无头服务器上用脚本批量装包时踩过脚本没捕获 SIGINT一中断就留下个烂摊子。解决sudo pkill apt sudo pkill dpkg sudo dpkg --configure -a sudo apt --fix-broken install sudo apt install -y build-essentialdpkg --configure -a会让 dpkg 把所有未配置完成的包重新配置--fix-broken用来修复已经损坏的依赖。如果pkill之后锁文件还在用ls -la /var/lib/dpkg/lock确认没有进程持有它再删掉。别一上来就 rm 锁文件一个正在运行的 apt 进程被你 rm 了锁系统 dpkg 状态就真坏了。5.3 环境变量 PATH 被覆盖命令全部消失的补救链现象在~/.bashrc里加了 export重启终端后ls、cat、sudo全部 not found连vi都无法编辑。原因export PATH/opt/xxx没带上原本的$PATH把它覆盖了。shell 启动时找不到 coreutils命令自然全断。解决用绝对路径把编辑器救回来/bin/ls /usr/bin | grep vi /usr/bin/vi ~/.bashrc把错误行改为export PATH$PATH:/opt/xxxsource 恢复。如果你连/bin下的路径也想不起来就用echo $PATH看错误后的变量值再手动拼回去。这个坑让我明白环境变量新路径一定要用冒号追加而且加之前备份配置文件。5.4 VMware报“客户机操作系统已禁用CPU”或虚拟机无法启动现象安装 Ubuntu 的虚拟机启动时弹出 “客户机操作系统已禁用 CPU。请关闭或重置虚拟机”然后虚拟机闪退或卡死。原因宿主机 BIOS 里没开 CPU 虚拟化扩展Intel VT-x / AMD-V或 Windows 的 Hyper-V、内核隔离功能占用了虚拟化指令。VMware 无法直接调起硬件虚拟化就会报这个错。解决先重启宿主机进 BIOS在 CPU/Processor 配置里打开 “Intel Virtualization Technology” 或 “SVM Mode”Windows 系统里在“启用或关闭 Windows 功能”关掉 Hyper-V再到 Windows 安全中心 - 设备安全性 - 内核隔离关掉内存完整性。然后到 VMware 虚拟机设置里处理器选项卡勾选 “Virtualize Intel VT-x/EPT” 或 “Virtualize AMD-V/RVI”。如果是 AMD 平台确认 SVM 已开不要只改 Boot 项。5.5 USB设备访问权限dialout组与udev规则现象插入 USB 转串口模块python3 -m serial.tools.list_ports里能看到设备但打开/dev/ttyUSB0报 permission denied普通用户死活无法访问。原因串口设备默认属于 root 和 dialout 组普通用户不在 dialout 组内。解决sudo usermod -aG dialout $USER重新登录一次groups确认已加入 dialout。如果还是不行再看设备规则ls -l /dev/ttyUSB0 sudo cp 99-usb-serial.rules /etc/udev/rules.d/ sudo udevadm control --reload-rulesusermod -aG的-a是 append 的意思少了-a会把用户从其他组里清出去我已经见过有人把sudo usermod -G dialout当追加用结果用户直接丢掉了 sudo 权限。只能重启进恢复模式或者用 root 改回来。这个组操作连我都罚站过大家记住修改组必须-aG绝不能只写-G。6. 项目实战把一个Python脚本部署成systemd服务前面把系统装好、环境配齐真正能检验水平的是让一个程序在 Ubuntu 上跑起来并长期稳定。这里选一个最省心的方案Python 脚本 systemd 服务。先写一个简单的应用脚本app.py比如一个本地 HTTP 服务业务逻辑随便写。然后创建系统服务文件sudo vim /etc/systemd/system/myservice.service写入[Unit] DescriptionMy Ubuntu project service Afternetwork-online.target [Service] Typesimple Userdev WorkingDirectory/home/dev/myservice ExecStart/usr/bin/python3 /home/dev/myservice/app.py Restartalways RestartSec3 [Install] WantedBymulti-user.targetTypesimple表示ExecStart启动后即认为服务起来了Restartalways配合RestartSec3程序崩溃或退出后等 3 秒重新拉起这是守护脚本类服务最常用的参数。Afternetwork-online.target表示等网络就绪再启动但前提是系统里开了systemd-networkd-wait-online所以多数本地脚本我更喜欢去掉它。启动服务并验证sudo systemctl daemon-reload sudo systemctl enable --now myservice.service sudo systemctl status myservice.service journalctl -u myservice.service -fdaemon-reload让 systemd 重读新服务文件enable --now是开机自启并马上启动。验证方式很简单status看 active (running)journalctl -f实时看日志。如果你的脚本写错了语法status会显示 activating 循环重启日志里一般能直接看到 traceback。进阶还可以加一个 systemd timer把脚本改成定时任务或者配合虚拟机快照在每次部署前做一次回滚点。我现在的习惯是改服务文件前先备份一份systemctl edit --full修改后再 daemon-reload出了问题直接恢复。这套流程在 Ubuntu 服务器上跑了两三年基本告别“程序死了没人管”。希望帮到你。本文还有配套的精品资源点击获取
返回列表