先介紹一個工具
uNetBootin
這是一個可以幫你把 .iso 或 .img 燒到 USB 內, 讓你做出可開機的 USB
而且它看起來更新的很快, 連 Ubuntu 12.04 LTS 出來沒多久, 它也支援了
並且同時支援 Window / Linux / Mac 三種平台, 真的是很方便
網路上還有其它類似的工具, 不過目前覺得這個最齊全, 彈性也最大,
未來如果要做出來不同 OS 的 Bootable USB stick 也可以利用這個
所以最簡單的方式, 就是在 Distribution 的地方選擇 FreeDos, 就可以做出來了
所以最簡單的方式, 就是在 Distribution 的地方選擇 FreeDos, 就可以做出來了
pjack@ubuntu:/media/3AB3-4AAD$ ll total 1569 drwx------ 2 pjack pjack 4096 Jan 1 1970 ./ drwxr-xr-x 3 root root 1024 May 5 09:00 ../ -r--r--r-- 1 pjack pjack 32768 May 5 00:48 ldlinux.sys -rw-r--r-- 1 pjack pjack 60928 May 5 00:48 menu.c32 -rw-r--r-- 1 pjack pjack 145 May 5 00:48 syslinux.cfg -rw-r--r-- 1 pjack pjack 1474560 May 5 00:48 ubninit -rw-r--r-- 1 pjack pjack 25244 May 5 00:48 ubnkern
可以看的到裡面放了 uNetBootin 自己做的 ubninit/ubnkern, 接下來你可以再放進去你要更新的 Bios, 開機之後選擇進入 C:\ 就可以看到了
補: uNetBootin 在 Linux 目前只支援32-bit, 所以安裝前會需要安裝 ia32-libs 以及 p7zip
Bootable Image
不過故事還沒結束, 有時透過 BMC 內的 ikvm 遠端操作, 會受限只能使用 .img/.iso 來做出虛擬 USB, 那該怎麼做出 .img 呢?
第一個方式, 把剛剛做好的 bootable USB, 直接 dd 出來!
這個方式有個小缺點, 如果你的 USB 很大, 做出來的 image 就會很大, 聽說有方法可以縮小,
但因為手邊有一個很舊的 32M USB, 這對我來說就不是個問題
我也試過拿個 2G 的 USB, 但暴力只取前面 32M, 竟然也可以成功 ( dd if=/dev/sdc of=freedos256M.img bs=1M count=32 )
所以暫時就不想去了解要怎麼縮小了
你也可以把做的 image mount 起來, 但必須要了解一件事, 這個 image 的前面一小段是 boot sector
是無法用任何 file format 來解讀, 所以必須要跳過它
但是這樣做出來的 image 雖然可以開機, 但我發現有很多指令都不被包含在裡面, 這個單純只是為了開機使用
可以透過 kvm 來看一下他開機的畫面及狀況
virt-install --name freedos32M --ram 128 --disk path=freedos32M.img --import
Install FreeDOS on KVM
如果有更進一步的需求, 就必須要做的很完整, 直接把 FreeDOS 安裝起來, 你可以透過實體機器直接把它裝在 USB 上面, 也可以像我這樣裝在 KVM 上, 然後做出來 image。做出來的 image 就又可以透過 uNetbootin 燒進 USB, 又或者直接 dd 進去
首先到官網下載安裝的 .iso 檔
http://www.freedos.org/freedos/files/
剩下的部份就只剩安裝了, 過程就不貼圖了, 網路上很多相關的文章, 有留一些連結在下方, 有需要看的可以看看
Bootable Image
不過故事還沒結束, 有時透過 BMC 內的 ikvm 遠端操作, 會受限只能使用 .img/.iso 來做出虛擬 USB, 那該怎麼做出 .img 呢?
第一個方式, 把剛剛做好的 bootable USB, 直接 dd 出來!
pjack@ubuntu:~$ dd if=/dev/sdc of=freedos32M.img pjack@ubuntu:~$ file freedos32M.img freedos32M.img: x86 boot sector; partition 1: ID=0xb, active, starthead 1, startsector 63, 3947016 sectors, code offset 0x31
這個方式有個小缺點, 如果你的 USB 很大, 做出來的 image 就會很大, 聽說有方法可以縮小,
但因為手邊有一個很舊的 32M USB, 這對我來說就不是個問題
我也試過拿個 2G 的 USB, 但暴力只取前面 32M, 竟然也可以成功 ( dd if=/dev/sdc of=freedos256M.img bs=1M count=32 )
所以暫時就不想去了解要怎麼縮小了
你也可以把做的 image mount 起來, 但必須要了解一件事, 這個 image 的前面一小段是 boot sector
是無法用任何 file format 來解讀, 所以必須要跳過它
pjack@ubuntu:~/kvm$ fdisk -l -u 'sectors' freedos32M.img Disk freedos32M.img: 33 MB, 33554432 bytes 255 heads, 63 sectors/track, 4 cylinders, total 65536 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x16419fdb Device Boot Start End Blocks Id System freedos32M.img1 * 63 3947078 1973508 b W95 FAT32 # 從這邊可以知道是從 63 開始, 所以要跳過 63 * 512 bytes = 32256 pjack@ubuntu:~$ mount -o loop,offset=32256 freedos32M.img /mnt pjack@ubuntu:~$ ll /mnt total 1569 drwxr-xr-x 2 root root 4096 May 5 09:25 ./ drwxr-xr-x 26 root root 1024 May 4 22:28 ../ -r-xr-xr-x 1 root root 32768 May 5 00:48 ldlinux.sys* -rwxr-xr-x 1 root root 60928 May 5 00:48 menu.c32* -rwxr-xr-x 1 root root 145 May 5 00:48 syslinux.cfg* -rwxr-xr-x 1 root root 1474560 May 5 00:48 ubninit* -rwxr-xr-x 1 root root 25244 May 5 00:48 ubnkern* # 接下來你就可以丟東西到 /mnt, 更新你的 image 檔案內容, 最後記得要 umount
但是這樣做出來的 image 雖然可以開機, 但我發現有很多指令都不被包含在裡面, 這個單純只是為了開機使用
可以透過 kvm 來看一下他開機的畫面及狀況
virt-install --name freedos32M --ram 128 --disk path=freedos32M.img --import
Install FreeDOS on KVM
如果有更進一步的需求, 就必須要做的很完整, 直接把 FreeDOS 安裝起來, 你可以透過實體機器直接把它裝在 USB 上面, 也可以像我這樣裝在 KVM 上, 然後做出來 image。做出來的 image 就又可以透過 uNetbootin 燒進 USB, 又或者直接 dd 進去
首先到官網下載安裝的 .iso 檔
http://www.freedos.org/freedos/files/
# 先生成一個大小適中的 image, 其實這件事透過 virt-install 自動生成也可以 # 但因為它的單位是用 g, 這也太大了, 所以還是透過最老的方法來做事 pjack@ubuntu:~/kvm$ kvm-img create test.img 32M Formatting 'test.img', fmt=raw size=33554432 pjack@ubuntu:~/kvm$ virt-install --name test --ram 128 --disk path=test.img --cdrom fd11src.iso --boot cdrom
剩下的部份就只剩安裝了, 過程就不貼圖了, 網路上很多相關的文章, 有留一些連結在下方, 有需要看的可以看看
Reference:
fdos:
freedos:
沒有留言:
張貼留言