Note: after restoring image-file via dd command, remember to repair the disk (main partition table) ================================================================================= Issue description --------------------------------------------------------------------------------- 使用dd command將製作好的OS image file還原至USB時,發現無法使用也無法掛載的情況,如下:  Root cause analysis --------------------------------------------------------------------------------- ### 使用gdisk分析 安裝 Command: `sudo apt install gdisk` 執行 Command: `sudo gdisk /dev/"target disk"`  根據圖中訊息可以得到以下訊息:  `重要:備份分割表標頭檔無效用,然而其主要分割標頭檔有效;從主要分割表中重新生成主要分割標頭檔` `警告:主要分割表與備份分割表並不一致` 判斷是使用dd command進行檔案還原時,**會出現主要分割表並未寫入的狀況**,導致無法識別分割磁區,進而無法掛載並操作;而備份分割表因為分別寫入多個區塊(block),故能夠成功寫入 主要分割表/備份分割表/主要磁區關係如下:  生成主要磁區標頭檔流程如下: ```flow start=>start: 執行gdisk,發現主要分割標頭檔有效,而備份分割標頭檔無效 cache_1=>operation: 讀取主要分割標頭檔(舊)->主要分割表 cache_2=>operation: 讀取備份分割標頭檔(新)->備份分割表 cache_3=>operation: 比對主要(舊)/備份(新)分割表(CRC) if_loop=>condition: 是否一致? yes=>operation: 自動再生成主要分割標頭檔 no=>operation: 提示訊息:需要修補主要分割標頭檔/主要分割表(舊->新) end=>end: 自動生成/修補後生成主要分割並讀取磁區 start->cache_1->cache_2->cache_3->if_loop if_loop(yes)->yes if_loop(no)->no no->end yes->end if_loop->end ``` 根據以上流程圖可以得知,**USB中的主要分割標頭檔/主要分割表,還是維持在執行dd command之前的狀態**,所以產生錯誤 Issue recurrence --------------------------------------------------------------------------------- ### 製作一OS USB,模擬GPT分割表缺損的狀況(sdb)  ### 使用dd command還原image file command: `dd bs=512 if=/path to image.img/ of=/path to target USB/`  ### 製作完成,因為GPT分割表缺損,無法掛載   Solution --------------------------------------------------------------------------------- ### 使用gdisk修復 執行 command: `sudo gdisk /dev/"target disk"`  ### 選擇"r"進入修復選項 輸入"?"提示符可詳列出所有選項  ### 輸入"b"提示符以選擇"載入備份GPT分割表標頭檔(重建主要分割表)",再輸入"w"寫入指令 選擇"Y"提示符確認  ### 修復完成,重新啟動後使用  Result --------------------------------------------------------------------------------- 可辨識和掛載磁區  Ref. --------------------------------------------------------------------------------- [gdisk command](https://github.com/eZioPan/Learning_Linux/blob/markdown/07%E8%A1%A52%E3%80%81gdisk%20%E5%91%BD%E4%BB%A4.adoc) [gdisk command in chinese](https://www.cnblogs.com/ywb123/p/17483703.html) [Details about GPT & MBR](https://www.h1ya.com/mbr%E5%92%8Cgpt%E5%88%86%E5%8C%BA%E8%A1%A8%E7%9A%84%E7%BB%93%E6%9E%84%E5%8F%8A%E6%81%A2%E5%A4%8D%E6%96%B9%E6%B3%95) [GUID Partition Table (GPT) Disk Layout](https://uefi.org/specs/UEFI/2.10/05_GUID_Partition_Table_Format.html) [Retrieve data from disk after dd](https://askubuntu.com/questions/1376645/retrieve-data-from-disk-after-dd)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up