文章

無法從linux掛載windows硬碟

我的linux又有問題了,是啊,到底是為什麼呢

無法從linux掛載windows硬碟

我的系統

我用的是archlinux搭配KDE桌面,在同一顆硬碟裡面同時安裝了windows11。
要掛載硬碟不難,只要點開dolphin,點側欄想掛載的硬碟就好。如果是windows的NTFS格式的硬碟,需要安裝NTFS-3G,在掛載時需要輸入密碼。
不過某天突然掛載不了了,顯示的錯誤訊息大概是:

1
wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.

不過在使用的當下因為沒什麼心情debug,就直接把檔案丟到其他掛載得了的硬碟。
用完就當作沒事,後來才開始找處理方式。

處理方式

總之我先從StackExchange上面找到這篇文
前面提供的方式會把磁碟內容清掉,但我不可能清掉,畢竟他是我的windows耶,所以我參考了其他答案。

  1. 首先先用lsblk查看硬碟。
    我是以分區的大小來判斷哪個是我的windows硬碟。
  2. 如果看得到那顆硬碟,用fdisk -l看看系統有沒有辦法用他。
    在這邊就可以看到最右邊有寫類型,寫著Microsoft,很清楚能知道這是我的windows了。
  3. 再來輸入fsck /dev/sda1修理損壞的區域(/dev/sda1改成你自己的硬碟)
    有些人到這邊就結束了,很可惜不是我:(
    我在第三步遇到問題,之後又去查了其他方法。

是說後來才知道,這是給linux的指令,不知道這樣對NTFS格式的硬碟有沒有用……


於是我來到了reddit的這篇文章,裡面的回答帶著我到了archlinux的維基
請讓我直接把維基頁面截過來這邊吧。

使用dmesg會幫你判斷這個情況,好巧不巧他回得真的跟上面說得一模一樣耶。

1
sdb1: volume is dirty and "force" flag is not set!

然後就用了ntfsfix--clear-dirty
使用方式是ntfsfix /dev/sda1 --clear-dirty(/dev/sda1改成你自己的硬碟,請參考以下圖片)

問題就這麼解決了,真是開心:D(記得指令用不了的話就加上sudo)

所以我說那個dirty硬碟是怎麼一回事

看到的時候我也很疑惑,髒的硬碟到底是什麼?
StackExchange的這篇文章底下的回答說,這代表這個分區的metadata不一致,如果在讀寫模式使用他,可能會造成資料遺失。
通常會在windows裡用chkdsk來處理,用ntfsfix不會處理不一致的問題,只是把髒的標誌刪除。

在windows執行chkdsk

我直接以管理員身份執行cmd,輸入chkdsk

在階段三發現問題,要輸入chkdsk -scan,我在想可能是因為最前面寫到的,沒有指定-F參數,所以正在以唯讀模式執行chkdsk。

跑完之後,他說沒有找到問題,不需要進一步的動作,所以這樣應該就OK了。

參考文章

本文章以 CC BY-NC-ND 4.0 授權