天天看點

u盤MBR誤删除,但是有MBR的16進制備份,如何恢複優盤MBR

需求描述:

             自己的U盤是裝的有個slax系統,開機能自己啟動。

      我估計就是這個原因,在我進入windows後,pqmagic識别不了我的優盤。而現在我有需求需要把U盤的fat32分區,

      resize一下,就是想把U盤分成兩個區。

---------------------------------------------------我是華麗的分割線-------------------------------------------------------------

問題描述:

      當時,就為了讓PQ能認我的U盤,我自己手動用,winhex把U盤的MBR給删除了,不過還好,我先把MBR拷貝了,不過不是

正常拷貝,而是拷貝的hex value,這個就導緻了我無法通過正常途徑恢複MBR。真是個悲劇阿。。。

---------------------------------------------------我是華麗的分割線-------------------------------------------------------------

解決途徑:

      其實一開始,就有一個辦法,那就是用vim打開我儲存的MBR的16進制數值,然後看着它,一個一個的用winhex手動寫回U盤,

不過這個太慢了,太費眼睛了,也不是咱學計算機的幹的。

      就在我寫這篇文章的時候,突然想起來,我真笨,可以編個C程式的,既然有了16進制的資料,用vim把每byte前面加個0x,

比如FA31,改為0xFA0x31,然後把這串資料直接write回去,就可以了...

      好了,開始說自己用的方法。就是用winhex在U盤MBR的位置,随便寫幾個資料,然後copy,不過這次要正常copy,儲存為mbr。

然後用vim編輯mbr,轉換為16進制,然後儲存。然後再用ultraEdit編輯轉換後的mbr,用列編輯的方式,把之前自己儲存的MBR的16進制資料copy過去,然後儲存。接着再用vim打開mbr,下面就需要修改幾個位元組,不然轉換回去後,資料會多幾個位元組,這是因為用byte=0a的緣故,mbr裡有幾個byte是0a,當你用vim轉換回去的時候,0a就變成0d0a了,多出來個0d,你再轉換成16進制就會發現這個問題了。

   解決這個小問題的方法就是先把0a改成一個數,我改成了31,也就是10進制的1。0a都改成31後,用vim轉換回去。然後再用winhex打開mbr,打開後,把31該回原來的0a,然後正常copy,再粘貼到MBR的位置就ok了。

---------------------------------------------------我是華麗的分割線-------------------------------------------------------------

  此方法适用于不想程式設計解決。不知道别人能看懂不,說的有些羅嗦,不過感覺,還算清楚~

  主要還是自己備忘~