unbuntn 22.04 coreutils文件系统故障

文章目录

      • 核心思路
      • 具体操作步骤(需借助 Ubuntu Live USB)
        • 1. 准备 Ubuntu Live USB
        • 2. 从 Live USB 启动并挂载系统分区
        • 3. 从安装包中提取完好的 `/bin/dir` 文件并替换
        • 4. 重启系统并验证
      • 总结
      • 前提说明
      • 具体操作步骤(分阶段执行)
        • 阶段1:列出所有需要检查的文件系统(当前系统中)
        • 阶段2:进入恢复模式(关键!确保分区未被挂载)
        • 阶段3:对每个分区执行 `fsck` 检查
        • 阶段4:解读 `fsck` 输出结果
      • 判断是否需要重装系统
      • 总结
      • 为什么需要重启检查?
      • 下一步操作:重启进入恢复模式执行 `fsck`
      • 结论

从当前信息来看,/bin/dir 文件很可能已经损坏(执行 ls -l /bin/dir 出现 Segmentation fault 段错误,说明文件本身存在严重问题),导致 dpkg 无法对其进行备份或替换,进而引发权限错误。这种情况下,需要通过手动替换损坏的文件来修复,无需重装系统,具体步骤如下:

核心思路

/bin/dircoreutils 包中的一个工具(与 ls -d 功能类似),由于该文件损坏,常规安装命令无法正常执行。解决方法是:从 coreutils 安装包中提取完好的 dir 文件,手动覆盖损坏的文件。

具体操作步骤(需借助 Ubuntu Live USB)

1. 准备 Ubuntu Live USB
  • 用另一台电脑下载 Ubuntu 22.04 LTS 镜像,制作可引导的 Live USB(工具推荐 Rufus 或 Ubuntu 自带的 Startup Disk Creator)。
2. 从 Live USB 启动并挂载系统分区
  1. 将 Live USB 插入故障服务器,重启后进入 BIOS/UEFI,选择从 USB 启动(进入 Live 环境后选择“Try Ubuntu”,不要点“Install Ubuntu”)。
  2. 打开终端,识别系统根分区(即原来的 / 分区,通常是 dev/mapper/ubuntu--vg-ubuntu--lv,可通过 sudo fdisk -llsblk 确认,大小约 98G,对应之前的 df -h 结果)。
  3. 挂载根分区到 Live 环境的 /mnt 目录:
    sudo mount /dev/mapper/ubuntu--vg-ubuntu--lv /mnt  # 替换为你的根分区路径
    sudo mount -o bind /dev /mnt/dev  # 挂载设备文件,确保权限正常
    
3. 从安装包中提取完好的 /bin/dir 文件并替换
  1. 在 Live 环境中,将之前下载的 coreutils_8.32-4.1ubuntu1.2_amd64.deb 复制到挂载的根分区(如果之前下载在原系统的 ~/ 目录,挂载后路径为 /mnt/home/capios/):

    # 假设安装包在原系统的用户目录下
    cp /mnt/home/capios/coreutils_8.32-4.1ubuntu1.2_amd64.deb ~/  # 复制到Live环境的临时目录
    
  2. 解压安装包,提取 bin/dir 文件:

    mkdir ~/coreutils-tmp  # 创建临时目录
    dpkg-deb -x ~/coreutils_8.32-4.1ubuntu1.2_amd64.deb ~/coreutils-tmp  # 解压包内容
    
  3. 手动替换原系统中损坏的 /bin/dir 文件:

    # 覆盖损坏的文件(注意路径是挂载的根分区下的/bin/dir)
    sudo cp ~/coreutils-tmp/bin/dir /mnt/bin/dir  # 修复文件权限(确保所有者为root,权限为755)
    sudo chown root:root /mnt/bin/dir  
    sudo chmod 755 /mnt/bin/dir  
    
4. 重启系统并验证
  1. 卸载挂载的分区,重启系统:

    sudo umount /mnt/dev  
    sudo umount /mnt  
    sudo reboot  # 拔掉Live USB,从原系统启动
    
  2. 启动后,执行以下命令验证:

    ls -l /bin/dir  # 正常应显示 `-rwxr-xr-x 1 root root ... /bin/dir`,无段错误
    dir --help  # 测试命令是否可用
    sudo apt install --reinstall coreutils  # 重新安装完整包,确认无错误
    

总结

这种问题是由于单个核心文件损坏导致的,通过 Live 环境手动替换损坏文件即可修复,无需重装系统。如果替换后仍有其他命令报错(如 lscp 等),可能是 coreutils 其他文件也受损,可按相同方法从安装包中提取对应文件替换。只有当大量系统文件损坏且无法逐一修复时,才需要考虑重装系统。

要检查系统中文件系统的损毁情况,可通过 fsck 工具(文件系统检查工具)对所有挂载的分区进行扫描。fsck 能检测并修复文件系统的逻辑错误(如损坏的inode、坏块、链接错误等),其输出结果可判断是否有多个文件系统损毁。

前提说明

fsck 不能对已挂载的分区直接检查(会导致数据损坏),因此需要在恢复模式单用户模式下运行(确保分区未被挂载或仅以只读模式挂载)。

具体操作步骤(分阶段执行)

阶段1:列出所有需要检查的文件系统(当前系统中)

先确认系统中所有关键分区(如根分区、/boot、/boot/efi、数据分区等),执行以下命令:

lsblk -f  # 列出所有分区及其文件系统类型(如ext4、vfat等)

从你之前的 df -h 结果,需要检查的分区包括:

  • 根分区:/dev/mapper/ubuntu--vg-ubuntu--lv(ext4,挂载点 /
  • /boot 分区:/dev/nvme0n1p2(ext4,挂载点 /boot
  • /boot/efi 分区:/dev/nvme0n1p1(vfat,挂载点 /boot/efi
  • 数据分区:/dev/sda1(ext4,挂载点 /mnt/data
阶段2:进入恢复模式(关键!确保分区未被挂载)
  1. 重启系统,在 GRUB 启动菜单(开机时按 EscShift 键调出)中选择 Advanced options for UbuntuRecovery mode
  2. 在恢复模式菜单中,选择 root - Drop to root shell prompt(进入单用户根shell)。
  3. 系统会提示“Press Enter for maintenance”,按回车后进入命令行,此时所有分区均以只读模式挂载,可安全检查。
阶段3:对每个分区执行 fsck 检查

在恢复模式的根shell中,对每个分区运行 fsck(注意:不同文件系统的 fsck 命令略有差异,ext4用 fsck.ext4,vfat用 fsck.vfat):

# 1. 检查根分区(ext4类型)
fsck.ext4 -fy /dev/mapper/ubuntu--vg-ubuntu--lv  # 2. 检查/boot分区(ext4类型)
fsck.ext4 -fy /dev/nvme0n1p2  # 3. 检查/boot/efi分区(vfat类型,用于启动引导)
fsck.vfat -a /dev/nvme0n1p1  # 4. 检查数据分区(ext4类型)
fsck.ext4 -fy /dev/sda1  

参数说明

  • -f:强制检查(即使文件系统标记为“干净”也强制扫描)。
  • -y:自动修复所有可修复的错误(无需手动确认)。
  • -a(vfat专用):自动修复错误。
阶段4:解读 fsck 输出结果
  • 正常情况:输出类似 xxx files, xxx blocks,无错误提示 → 文件系统完好。
  • 轻微错误:提示“fixed xxx errors”(如修复了损坏的inode、清理了无效链接)→ 修复后可用,无严重问题。
  • 严重错误:输出“bad blocks”(坏块)、“cannot recover”(无法恢复)等 → 可能是硬件故障(如硬盘坏道)或文件系统严重损坏。

判断是否需要重装系统

  1. 仅单个文件系统有轻微错误(如仅根分区的 /bin/dir 损坏,其他分区正常,且 fsck 能修复)→ 无需重装,修复后重启即可。
  2. 多个文件系统出现严重错误(如根分区+数据分区均有坏块,且 fsck 无法修复)→ 可能是硬盘硬件故障(需先检测硬盘健康度,用 smartctl -a /dev/sdasmartctl -a /dev/nvme0n1 检查),若硬件无问题,可尝试修复;若硬件故障,更换硬盘后再考虑重装。
  3. 修复后仍频繁出现文件损坏(如重启后又有新的命令报错、段错误)→ 可能是系统核心文件大面积损坏或内存故障(用 memtest86+ 检测内存),若内存无问题,再考虑重装。

总结

先通过 fsck 全面检查所有分区,若仅根分区有轻微错误(如 /bin/dir 损坏),修复后即可正常使用;若多个分区严重损坏且无法修复,再考虑重装。目前来看,你的问题更可能是单个文件损坏,而非大面积文件系统损毁,优先执行上述检查和修复步骤即可。

lsblk -f 的输出来看,系统的分区结构清晰,文件系统类型正常(根分区、/bootext4/boot/efivfat,数据分区为 ext4),没有明显的分区表损坏或文件系统类型错误。但结合之前的 Segmentation fault/bin/dir 损坏)和 dpkg 安装失败,确实需要重启进入恢复模式执行 fsck 检查,具体原因和操作如下:

为什么需要重启检查?

当前系统中,/bin/dir 已损坏(段错误),且 dpkg 无法正常替换该文件,这很可能是根分区(ubuntu--vg-ubuntu--lv)存在逻辑错误(如inode损坏、文件链接断裂)导致的。由于 fsck 不能对已挂载的分区执行完整检查(会导致数据风险),必须在恢复模式(分区只读挂载) 下运行,才能彻底扫描并修复根分区的潜在错误。

下一步操作:重启进入恢复模式执行 fsck

按以下步骤操作,无需重装系统:

  1. 重启系统并进入恢复模式

    • 执行 sudo reboot 重启(如果 reboot 命令可用;若不可用,直接硬重启服务器)。
    • 开机时快速按 EscShift 键(不同主板可能不同),调出 GRUB 启动菜单。
    • 选择 Advanced options for Ubuntu → 带 (recovery mode) 的内核选项(通常是第一个)。
  2. 在恢复模式中运行文件系统检查

    • 进入恢复模式菜单后,选择 fsck - Check all file systems
    • 系统会提示“The root filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv requires a manual fsck”,输入 yes 确认检查。
    • fsck 会自动扫描所有分区(根分区、/boot/boot/efi 等),并修复检测到的逻辑错误(如损坏的inode、无效链接等)。
  3. 修复后验证

    • 检查完成后,选择 resume - Resume normal boot 重启进入正常系统。
    • 登录后执行以下命令验证:
      # 1. 检查 /bin/dir 是否修复(无段错误则正常)
      ls -l /bin/dir  # 2. 重新安装 coreutils 确认问题解决
      sudo apt install --reinstall coreutils  
      

结论

目前的问题更倾向于根分区的局部逻辑错误(导致 /bin/dir 损坏),而非大面积文件系统损毁。通过恢复模式的 fsck 检查和修复,大概率能解决问题,无需重装系统。按上述步骤操作即可,若修复后仍有问题,再进一步排查硬件(如硬盘健康度)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916672.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

若依【(前后端分离版)SpringBoot+Vue3】

文章目录什么是若依使用若依验证码的前端实现📌 前后端验证码流程说明文档1、前端初始化验证码2、前端界面显示3、后端生成验证码接口(GET /captchaImage)4、用户提交登录信息5、后端验证验证码逻辑(POST /login)6、登…

Ubuntu24安装MariaDB/MySQL后不知道root密码如何解决

Ubuntu 24.04 安装 MariaDB 后 root 密码未知?解决方案在此在 Ubuntu 24.04 上新安装 MariaDB 后,许多用户会发现自己不知道 root 用户的密码,甚至在安装过程中也没有提示设置密码。这是因为在较新的 MariaDB 版本中,默认情况下 r…

Cloudflare CDN 中设置地域限制并返回特定界面

文章目录 什么是CDN 什么是Cloudflare 注册Cloudflare 账号,添加域名、修改DNS并激活邮箱 阻止或允许特定国家或地区访问 常见规则表达式 WAF自定义规则 + 自定义错误页面 使用Workers脚本 什么是CDN CDN 是一种优化网站请求处理的机制。它是在用户访问网站 (服务器) 时用户与…

Ubuntu高频实用命令大全

Ubuntu系统中高频实用命令 以下为Ubuntu系统中高频实用命令的分类整理,涵盖系统管理、文件操作、网络配置等场景,每个命令附带简要说明: 系统信息与管理 uname -a 显示系统内核版本、主机名等详细信息。 lsb_release -a 查看Ubuntu发行版版本信息。 uptime 显示系统运行时…

关于C#的编程基础:数据类型与变量全解析

一.基本的数据类型 1.什么是数据类型 在编程语言中,数据类型(Data Type) 是对变量存储的 “数据的种类” 的定义,它决定了: 变量可以存储哪些值(例如整数、文本、布尔值)。这些值在内存中如何…

深入解析 Spring 获取 XML 验证模式的过程

关键要点Spring 的 XML 验证模式:Spring 框架在加载 XML 配置文件时,会根据文件内容判断使用 DTD(文档类型定义)或 XSD(XML 模式定义)进行验证。自动检测机制:Spring 默认使用自动检测&#xff…

复现《Local GDP Estimates Around the World》论文的完整指南

复现《Local GDP Estimates Around the World》论文的完整指南 1. 引言 1.1 论文概述 《Local GDP Estimates Around the World》是一篇重要的经济地理学研究论文,作者提出了一种创新的方法来估计全球范围内次国家层面的GDP数据。这项工作填补了全球经济发展研究中子…

Sql注入 之sqlmap使用教程

一、安装sqlmap 浏览器访问SQLmap官网 即可下载工具;需要说明的是,SQLmap运行依赖于python环境,所以在下载使用前务必在电脑及终端上安装好python环境。 通过网盘分享的文件:sqlmap-master.zip链接: https://pan.baidu.com/s/1YZi…

安宝特案例丨户外通信机房施工革新:AR+作业流技术破解行业难题

在数字化浪潮席卷各行各业的今天,传统户外通信机房建设领域正经历一场静悄悄的变革。作为信息社会的“神经枢纽”,户外机房的质量直接关系到通信网络的稳定性,但长期以来,这一领域却深受施工标准化不足、质量管控难、验收追溯复杂…

在 CentOS 中安装 MySQL 的过程与问题解决方案

MySQL 是一款广泛使用的开源关系型数据库管理系统,在 CentOS 系统中安装 MySQL 是很多开发者和运维人员常做的工作。下面将详细介绍安装过程以及可能遇到的问题和解决方案。 一、安装前的准备工作 在安装 MySQL 之前,需要做好一些准备工作,…

阿里 Qwen3 四模型齐发,字节 Coze 全面开源,GPT-5 8 月初发布!| AI Weekly 7.21-7.27

📢本周AI快讯 | 1分钟速览🚀1️⃣ 🧠 阿里 Qwen3 全系列爆发 :一周内密集发布四款新模型,包括 Qwen3-235B-A22B-Thinking-2507、Qwen3-Coder 和 Qwen3-MT,MMLU-Pro 成绩超越 Claude Opus 4,百万…

C语言第 9 天学习笔记:数组(二维数组与字符数组)

C语言第09天学习笔记:数组(二维数组与字符数组) 内容提要 数组 二维数组字符数组二维数组 定义 二维数组本质上是一个行列式组合,由行和列两部分组成,属于多维数组,通过行和列解读(先行后列&…

使用OpenCV做个图片校正工具

昨天有位兄台给我发了个文件,是下面这个样子的:那一双小脚既没有裹成三寸金莲,又没有黑丝,这图片肯定不符合我的要求。我要的是这个样子的好不好:让他拿扫描仪重新给我规规矩矩扫一个发过来?他要能用扫描仪…

《不只是接口:GraphQL与RESTful的本质差异》

RESTful API凭借其与HTTP协议的天然融合,以资源为核心的架构理念,在过去十余年里构建了Web数据交互的基本秩序;而GraphQL的出现,以“按需获取”为核心的查询模式,打破了传统的请求-响应逻辑,重新定义了前端…

博士招生 | 香港大学 招收人工智能和网络安全方向 博士生

学校简介香港大学创立于 1911 年,是香港历史最悠久的高等学府,QS 2025 世界排名第 17 位。计算机科学学科在 QS 2025 学科排名中位列全球第 31 位、亚洲第 5 位。计算机系(Department of Computer Science)下设系统、人工智能、数…

Linux知识回顾总结----基础IO

目录 1. 理解“文件” 1.1 文件的定义 2. 回顾 C 语言的文件操作 2.1 文件操作 2.2 实现cat 2.3 可以实现打印的几种方式 3. 系统文件的IO 3.2 使用系统的接口 3.3 内部的实现 3.4 重定向 4. 文件系统的内核结构 5. 缓冲区 5.1 是什么 5.2 为什么 5.3 有什么 5.4 见见…

网络:基础概念

网络:基础概念 在计算机发展过程中,最开始每个计算机时相互独立的,后来人们需要用计算机合作处理任务,这就牵扯到了数据交换,所以最开始的网络就诞生了。一开始,网络都是局域网LAN,后来技术成熟…

图像识别边缘算法

文章目录1. 基本概念2. 边缘检测原理边缘类型:3. 常见边缘检测算法3.1 Sobel算子3.2 Canny边缘检测3.3 Laplacian算子4. Canny边缘检测详细流程流程图示例:详细步骤说明:5. 边缘检测算法比较6. 参数调优建议Canny边缘检测参数:Sob…

【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(终)

🧪 测试与质量保证 🔍 全方位测试体系 我建立了企业级的全方位测试体系来确保系统质量: 🧪 测试金字塔模型 #mermaid-svg-u4I8UuUAyxJVjcqs {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…

QT开发---网络编程下

HTTP协议 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的协议之一,用于客户端和服务器之间的通信。默认端口80,传输层使用的是TCP协议特点无连接:HTTP协议是无连接的&#xff…