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
英文地址,請注明出處:http://en.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…