將分區號從 sda1 更改為 sda2
我有一個有兩個分區的磁碟:sda1 和 sda2。我想將 sda1 的數量更改為 sda2,將 sda2 的數量更改為 sda1。
這是可能的,但我不記得過程。即我的第一個分區將是 sda2 和第二個 sda1,所以我需要指定手動順序,而不是像 fdisk -> x -> f 中的自動排序。
如何更改訂單?也歡迎連結到手冊或教程。
謝謝。
原因:我有一個應用程序需要從 sda1 讀取數據,但數據在 sda2 中。更改分區表是解決此問題的最快方法。該系統並不重要,但我不想讓系統停止太長時間。
更新:OpenBSD 的 fdisk 版本包含此功能。
僅供參考,這是一個壞主意,您可能會失去一切。如果您仍然想這樣做,請執行以下步驟:
- 不要這樣做。如果這沒有幫助,那麼:
- 使用
sfdisk
工具:首先,使用備份分區表sfdisk -d /dev/sda > sda.out
然後去吧:
sfdisk /dev/sda -O sda-partition-sectors.save
你會看到這樣的東西
Checking that no-one is using this disk right now ... OK Disk /dev/sda: 1018 cylinders, 124 heads, 62 sectors/track Old situation: Units = cylinders of 3936256 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sda1 0+ 5 6- 23063+ 83 Linux /dev/sda2 6 1017 1012 3890128 83 Linux /dev/sda3 0 - 0 0 0 Empty /dev/sda4 0 - 0 0 0 Empty Input in the following format; absent fields get a default value. <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s> Usually you only need to specify <start> and <size> (and perhaps <type>). /dev/sda1 :
現在它要求您提供“sda1”分區的新詳細資訊。所以你必須在這裡給出 sda2 的數量。所以,我在這裡輸入“6 1012”並按 Enter:
/dev/sda1 :6 1012 /dev/sda1 6 1017 1012 3890128 83 Linux /dev/sda2 :
現在檢查按 Enter 後列印的數字是否與之前為 sda2 列印的數字**完全相同。**如果沒問題,繼續為 sda2 提供新數字:
/dev/sda2 :0 /dev/sda2 0+ 5 6- 23063+ 83 Linux /dev/sda3 :
這次在我的例子中輸入“0”就足夠了——但你必須確保你的數字沒有弄亂。
接下來,以相同的方式繼續處理其他分區。如果您已經到達磁碟的末尾,按 Enter 就足夠了。最後,再次檢查所有數字是否正常並保存分區表(或不保存)。如果您搞砸了,請查看
man sfdisk
“-d”、“-O”和“-I”選項的描述。另請注意,一旦您進行了瘋狂的更改,您可能需要執行“同步”,以便在嘗試掛載分區之前重新讀取分區。
我只是以一種更簡單的方式做到了這一點:
# sfdisk -d /dev/sdb > sdb.bkp
為安全起見留下一份副本
# cp sdb.bkp sdb.new
現在編輯 sdb.new 僅更改行順序和分區號,如我的情況:
從
# partition table of /dev/sdb unit: sectors /dev/sdb1 : start= 1026048, size=975747120, Id=83 /dev/sdb2 : start= 2048, size= 204800, Id=83 /dev/sdb3 : start= 206848, size= 819200, Id= b /dev/sdb4 : start= 0, size= 0, Id= 0
到
# partition table of /dev/sdb unit: sectors /dev/sdb1 : start= 2048, size= 204800, Id=83 /dev/sdb2 : start= 206848, size= 819200, Id= b /dev/sdb3 : start= 1026048, size=975747120, Id=83 /dev/sdb4 : start= 0, size= 0, Id= 0
然後扔回磁碟分區表?
# sfdisk /dev/sdb < sdb.new
在我縮小並向右移動唯一的分區 (sdb1) 以使用
gparted
.如果最後一個命令不起作用,例如我的情況,請將其更改為:
# sfdisk --no-reread -f /dev/sdb < sdb.new