2007/02/12

grub on usb disk - 快速製作開機隨身碟

上週貼了一篇關於 qemu 啟動開機系統影像檔的文章後,今天又試了一段,可以做到快速將 grub 安裝到隨身碟的方法。不屬於正統作法,但是可以工作。

首先,要有 Linux 系統,且是安裝 grub(不保證 lilo 能工作), 也就是要有一台用 grub 來當 boot loader 的系統。另外,可以準備一台隨身碟,否則用影像檔也是類似原理。底下先以影像檔當範例。


  1. # dd if=/dev/hda of=dd.grub bs=512 count=63
    上述是將硬碟的開機磁區備份下來,根據 fdisk -l 的資訊,每個磁軌(track)含 63 個磁區(sectors), 每個磁區 512 bytes, 第一個磁軌也就是 bootloader 所在地,因此備份下來。
    ps: 若是隨身碟,可以先將它分割好,假設該裝置是 /dev/sda, 且只有一個分割區,則以 dd if=/dev/hda of=/dev/sda bs=512 count=63來寫入隨身碟
  2. # dd if=/dev/zero of=dd.zero bs=512K count=####
    上面需視你的需求而更改 count。若是要安裝到隨身碟,這兩部份加起來的大小要 >= 隨身碟的大小。假設要寫入隨身碟,則此步可改成 dd if=/dev/zero of=/dev/sda1 bs=512K count=####,或者直接跳過下一步繼續進行格式化
  3. # cat dd.grub dd.zero > myDisk.img
    這一步是將上面兩個合成一個,若是隨身碟可以略過此步。之後要將之設定到虛擬裝置: losetup -o 32256 /dev/loop0 myDisk.img
  4. # mkfs.ext3 /dev/loop0
    格式化第一個磁區。若是隨身碟,則是 mkfs.ext3 /dev/sda1
  5. # mount /dev/loop0 /mnt/myDisk; cp -a /boot /mnt/myDIsk
    將 /boot 複製到第一個磁區。若是隨身碟則為: mount /dev/sda1 /mnt/myDisk; cp -a /boot /mnt/myDisk
  6. 接下來就是將您的檔案放到 /mnt/myDisk 中即完成。


以上做法並非傳統做法,對會使用 grub-install 的人來說也不見得較快,但是卻對不熟悉的人來說方便許多。

0 意見: