轉自我的獨立博客:alanslab.cn
先吐個槽,早知道windows越用越慢,沒想到太久不用還會壞。。。
昨天就遇到了這樣一件事,電腦的光驅早拆了換硬盤托架了,只好翻出來以前手機的sd卡開刀,網上參考了一些用dd做安裝u盤的文章,很多不靠譜,最終還是在英文資料里找到了需要的東西。這里留個筆記,順便看誰需要也可以省點力氣。
參考網址(感謝原作者分享!):
http://serverfault.com/questions/6714/how-to-make-windows-7-usb-flash-install-media-from-linux
http://www.techrepublic.com/blog/linux-and-open-source/drive-and-partition-backups-with-dd/
dd的簡介我就省了,一搜一大把。
網上流行的一種做法是把u盤分成一個區,格式化成fat,然后 dd if=/xxx.iso of=/dev/sdx,似乎是有成功的人,但這里缺少了制作引導這一步,至少在我這里是沒能搞定。
linux下制作引導可以用 ms-sys 或 lilo -M命令,我用的是后者,主要是因為在源里直接有,而且之前用過lilo有親切感。。。
sudo apt-get install lilo,用ms-sys的話自行搜索。
注意:選擇安裝lilo的話不要執行它的配置向導,否則會頂替掉你電腦現在用的引導(grub之類)
開始之前用df或別的什么辦法搞清楚你的u盤是哪個,這里以我自己的情況為例/dev/sdd
使用 cfdisk /dev/sdd 或 fdisk /dev/sdd分區,刪除所有分區,然后創建一個新的分區,占用全部空間,把type設置成NTFS(就是在修改type的地方改成7),標記為bootable。
新的分區將會是/dev/sdd1
用NTFS格式化:mkfs.ntfs -f /dev/sdd1
寫入 windows 7 的 MBR 到u盤上(windows 8 也一樣):
ms-sys -7 /dev/sdd 或 sudo lilo -M /dev/sdd mbr
然后掛載 ISO 和 USB:
mount -o loop win7.iso /mnt/iso
mount /dev/sdd1 /mnt/usb
復制ISO所有文件到U盤: cp -r /mnt/iso/* /mnt/usb/
等復制完就完工,圖形化界面操作應該也一樣的。
現在的情況是,你有了一個一切准備就緒的win7安裝u盤,再回想之前最開始的時候那個不完全的做法,我們可以發揮一下,用dd把當前可以引導的u盤整個備份下來,以后再用時就可以用之前的辦法直接還原了。
dd if=/dev/sdd of=/win7.img
這樣我們就有了一個直接恢復到u盤上就可以進行usb安裝的鏡像文件了,可能不同的U盤容量上還會有一些麻煩,必須要跟這個U盤一樣或者更大,dd是連沒用到的空間都一起保存了的。
備份分區以及壓縮備份文件
最簡單的備份分區方式跟上文一樣,就是dd if=/dev/sda1 of=/path/to/backup.img,但前文提到過dd會把空白字節也一起復制了,對U盤來說還能接受,但備份硬盤分區也這樣就實在是離譜了,我們可以在備份完成后對img進行壓縮,或在備份過程中即時完成:
dd if=/dev/sda1 | bzip2 -9f >/path/to/backup.img.bz2
還原時,如果你沒有壓縮:
dd if=/path/to/backup.img of=/dev/sda1
用前文方式壓縮了的話:
bunzip2 -dc /path/to/backup.img.bz2 | dd of=/dev/sda1
