2008-11-13

「手把手」你裝Ubuntu要幾分?我從硬碟裝只要「20」分

有時候要實驗看看新版的Ubuntu或Kubuntu,常常抓好都要燒起來,雖說能用複寫片燒錄,可以節省光碟片,我都把光碟片亂亂丟常常找不到XD,找到有時之前沒放好磨損到,燒錄起來會讀不完整或讀不到。

加上用 Live CD試用或者安裝,光讀取光碟就會花費不少時間,總想看看能不能把ISO檔放在硬碟讀取,應該會比放在光碟機會來的快很多。

網路上大都是教你從Windows用Grub4DOS修改開機選單,由於我電腦上都沒裝Windows,加上本來就有安裝Ubuntu可以直接修改Grbu選單,那就參考了Windows的硬碟安裝方式,瞭解他要做什麼事情懂了在試驗修改Grub選單就來的容易點。




首先當然是下載ISO檔囉,你可以到Ubuntu Wiki安裝光碟下載點列表挑選你要試用的版本,我是下載Ubuntu 8.10 DVD I386版來使用。
wget http://tw.archive.ubuntu.com/ubuntu-dvd-releases/releases/8.10/release/ubuntu-8.10-dvd-i386.iso

下載後把ISO檔放在/home底下
sudo mv ubuntu-8.10-dvd-i386.iso /home/

在用fdisk -l來查看磁碟分割
sudo fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x27e1de7a

所用裝置 Boot Start End Blocks Id System
/dev/sda1 * 1 2550 20482843+ 83 Linux
/dev/sda2 2551 2805 2048287+ 82 Linux swap / Solaris
/dev/sda3 2806 19457 133757190 83 Linux

Disk /dev/sdb: 400.0 GB, 400088457216 bytes
255 heads, 63 sectors/track, 48641 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0004f556

所用裝置 Boot Start End Blocks Id System
/dev/sdb1 1 1530 12289693+ 83 Linux
/dev/sdb3 1531 48641 378419107+ 83 Linux



我有兩顆硬碟sda1是/根目錄,根目錄下本來就有vmlinuz,如果覆蓋到的話就不能開機了,我把ISO檔放到sda3也就是/home底下,如果我把ISO檔放在sdb3的話,等於安裝時又要讀取又要安裝,沒試過這樣裝要幾分,我想會比放在sda3來的慢點這樣裝只要20分就好了。

在來掛載ISO檔取出initrd.gz和vmlinuz檔案,等會需要用到
sudo mkdir /media/iso
sudo mount -o loop /home/ubuntu-8.10-dvd-i386.iso /media/iso
sudo cp /media/iso/casper/initrd.gz /home/ && sudo cp /media/iso/casper/vmlinuz /home/


先備份一下grub選單需要的時候可以還原
sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.back

如需要還原的話就這樣做
sudo cp /boot/grub/menu.lst.back /boot/grub/menu.lst

打開grub檔先來看一下原本的結構
cat /boot/grub/menu.lst

title Ubuntu intrepid (development branch), kernel 2.6.27-5-generic #選單顯示的標題
root (hd0,0) #由此可得root根目錄在第1顆第1個分割區,每個人的可能不太一樣安裝方法不同
kernel /boot/vmlinuz-2.6.27-5-generic root=UUID=5c7b72be-36b1-40c0-b82a-a86ab2b27af4 ro quiet splash #kernel核心通常都放在/boot底下
initrd /boot/initrd.img-2.6.27-5-generic #initrd也是放在/boot底下


皆下來就修改grub選單了
sudo gedit /boot/grub/menu.lst

打開後把以下這段插入到最下面或適合的地方

title Ubuntu 8.10 Live
root (hd0,2)
kernel /vmlinuz boot=casper locale=zh_TW.UTF-8 iso-scan/filename=/ubuntu-8.10-dvd-i386.iso
initrd /initrd.gz


root
記得嗎我ISO檔是放在sda3也就是第1顆硬碟的第3個分區,那就是要改成root (hd0,2)囉,如果照原本的是(hd0,0)他會找不到開機檔而出現錯誤
krnel
在看krnel這一行你要裝中文版的話,就要加入locale=zh_TW.UTF-8否則試用時,沒有可選擇語系的選單只能用英文版,iso-scan/filename=為你的ISO檔,當選則Ubuntu 8.10 Live開機時,ISO是在/根目錄下面不是在/home路徑要寫對哦

都寫好後存檔重開機試試看吧!成功的話以後就不用在找光碟來燒錄,可以從硬碟執行很有快感的哈!

進階惡搞法XD

如你已經可以從硬碟執行Live CD的話,可以像我一樣把他改成Ubuntu跟Kubuntu都從硬碟執行

建立/home/iso/U、/home/iso/K資料夾,把iso資料夾擁有者改為你,hepha:hepha取代為你的使用者跟群組
sudo mkdir -p /home/iso/U && sudo mkdir /home/iso/K
sudo chown -R hepha:hepha /home/iso

把剛剛下載的ubuntu-8.10-dvd-i386.iso與取出來的initrd.gz、vmlinuz搬到/home/iso/U/
mv ubuntu-8.10-dvd-i386.iso /home/iso/U/ && mv vmlinuz /home/iso/U/ && mv initrd.gz /home/iso/U/

在去Ubuntu Wiki下載kubuntu-8.10-dvd-i386.iso,其它跟剛剛一樣把從Kubuntu取出的vmlinuz、initrd.gz與kubuntu-8.10-dvd-i386.iso放在/home/iso/K
如你要卸除剛掛載的ISO檔指令為
sudo umount /media/iso


在來修改grub選單
sudo gedit /boot/grub/menu.lst

把剛剛新增的刪掉或者修改為

title Ubuntu 8.10 Live
root (hd0,2)
kernel /iso/U/vmlinuz boot=casper locale=zh_TW.UTF-8 iso-scan/filename=/iso/U/ubuntu-8.10-dvd-i386.iso
initrd /iso/U/initrd.gz

title KUbuntu 8.10 Live
root (hd0,2)
kernel /iso/K/vmlinuz boot=casper iso-scan/filename=/iso/K/kubuntu-8.10-dvd-i386.iso
initrd /iso/K/initrd.gz



  • 如果移除舊核心或安裝新核心的時候,用新產生的grub開機選單,Live CD選項不見要重建比較麻煩,你可以這樣做
先建立一個Live CD選項範本
gedit /home/iso/menu
把兩個Live CD選項的程式碼貼進去後存檔

需要還原Live CD選項時執行這個,就會把你剛建的範本直接寫入grub選單了
cat /home/iso/menu | sudo tee -a /boot/grub/menu.lst


注意:Live CD選項不見在執行,否則grub選單會多Live CD選項,你還要自已修改回去

後記

  1. 沒有限制檔案一定要放在根目錄底下,如果路徑對的話也是可以正確執行的
  2. 我只有試Ubuntu跟Kubuntu,Kubuntu不能加locale=zh_TW.UTF-8,試用時選單會出不來,只能先裝英文版重開機後在裝中文語系﹙我沒裝只有試用﹚
  3. 放ISO檔那個分割磁碟區會被鎖住,你無法使用那個分割磁碟區

2008.12.04
  • 解決鎖住硬碟的問題


按Alt+F2輸入以下指令後按run
sudo umount -l /isodevice



就解除鎖定囉


16 則留言:

  1. 關於後記第三點,根據我試的結果,它應該是將放該iso檔的整個硬碟機鎖住,而不是只有鎖住該partition而已。我找了老半天找不到解除這個限制的方法,您能夠提供嗎?這樣我就可以從同一個硬碟的第三個 partition 安裝到第二個 partition.,如此就方便多了.

    回覆刪除
  2. 劍是啥米?
    sudo umount -l /isodevice
    這樣就能解除鎖定囉,從簡體中文站看來的:)

    只有一個hd會鎖單個partition嗎?我沒遇過,不過我兩個hd他會鎖住來源那顆:(

    回覆刪除
  3. 今天參考了這篇文章,想要用硬碟開機的方法試玩Ubuntu 8.10(現在用8.04)
    menu.lst的設定如下:

    8.04:
    title Ubuntu 8.04.2, kernel 2.6.24-23-generic
    root (hd0,5)
    kernel /boot/vmlinuz-2.6.24-23-generic root=UUID=6be428d3-638d-41d7-ba4e-ea78115653f7 ro quiet splash locale=zh_TW
    initrd /boot/initrd.img-2.6.24-23-generic
    quiet

    8.10 iso:
    title Ubuntu 8.10 Live
    root (hd0,5)
    kernel /u81/vmlinuz boot=casper locale=zh_TW.UTF-8 iso-scan/filename=/u81/ubuntu-8.10-dvd-i386.iso
    initrd /u81/initrd

    8.10的iso我放在8.04同一個分割區裡面的/u81資料夾
    initrd我把initrd.gz解壓縮了(沒解壓縮也是不能啟動)
    8.04可以正常的啟動,不過試著進入8.10跑了一些文字之後([1.****].....這類的訊息),停在一個輸入指令的畫面,大概是這樣:「(......)」,沒有$或是#,可以下一些基本指令如ls、cd之類

    請問我是遇到了什麼問題呢?如何解決?
    謝謝

    回覆刪除
  4. UGP
    你試試看cd版…8.10我用dvd版時也有點問題,不過忘了是什麼問題,以全新安裝來講cd版會比較快,不過建議安裝時不要讓網路連線,之後自己在把語言套件補起來就好。
    對了要檢查md5。

    回覆刪除
  5. 我是用8.10 LiveCD,只是想用用看硬碟方式的8.10 LiveCD,沒有要安裝
    已經有裝8.04了
    不過嘗試進去8.10的選項就是連選單(適用、安裝、RAM檢查等)都沒有
    MD5計算沒有問題,VirtualBox可以開機...

    回覆刪除
  6. UGP你kernel後面加上ro quiet splash試試:o

    硬碟執行live的確沒有選單,執行成功直接進入試用!

    還不行的話你把畫面拍上來我瞧瞧看

    回覆刪除
  7. 加上了之後的確有跑出圖形化載入,不過之後就停止了,顯示如下畫面:
    http://img212.imageshack.us/img212/3913/live810.png

    目前設定:
    title Ubuntu 8.10 Live
    root (hd0,5)
    kernel /u81/vmlinuz boot=casper iso-scan/filename=/u81/ubuntu-8.10-dvd-i386.iso ro quiet splash locale=zh_TW.UTF-8
    initrd /u81/initrd

    有嘗試改成「locale=zh_TW」,不過也是顯示這張圖的畫面

    回覆刪除
  8. UGP
    沒遇過…不過找到解決方試你試試看

    Ubuntu 很忙 : 解決 8.04 LTS 安裝時掉進 BusyBox 的問題
    http://metamuse.blogspot.com/2008/04/ubuntu-804-lts-busybox.html

    安裝Ubuntu 8.04 Beta desktop 出現busyBox 請幫忙> < [內詳]
    http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=flat&topic_id=8718&forum=1

    回覆刪除
  9. 嗯,還是不行 囧
    iso是放在Ext3的,還是說一定要在CD檔案系統才能開啟?

    回覆刪除
  10. 我也是一樣放在ext3呀@@
    跟你建立一樣路徑沒問題可以用@@

    title Ubuntu 8.10 Live CD
    root (hd0,0)
    kernel /u81/vmlinuz boot=casper locale=zh_TW.UTF-8 iso-scan/filename=/u81/ubuntu-8.10-desktop-i386.iso ro quiet splash xforcevest noacpi
    initrd /u81/initrd.gz

    這是我目前的
    title Ubuntu jaunty (development branch), kernel 2.6.28-11-generic
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.28-11-generic root=UUID=5c7b72be-36b1-40c0-b82a-a86ab2b27af4 ro quiet splash vga=794
    initrd /boot/initrd.img-2.6.28-11-generic

    回覆刪除
  11. http://tw.archive.ubuntu.com/ubuntu/dists/intrepid/main/installer-i386/20080522ubuntu23/images/cdrom/
    死馬當活馬醫試試看官方提供的initrd.gz、vmlinuz,這是386的amd64要改成 installer-amd64

    回覆刪除
  12. 進去了之後他會出現鍵盤設定的畫面(中文文字介面),設定完之後會說找不到光碟,不能繼續安裝,沒有試用的選項,看來官方的檔案好像只能在用光碟開機的時候使用...

    回覆刪除
  13. 剛剛重新想起這件事,再去看了一次設定
    發現了一件驚人的事情:
    iso檔名搞錯了,改成.../u81/ubuntu-8.10-desktop-i386.iso...
    開機成功 (死)

    回覆刪除
  14. 剛剛重新想起這件事,再去看了一次設定
    發現了一件驚人的事情:
    iso檔名搞錯了,改成.../u81/ubuntu-8.10-desktop-i386.iso...
    開機成功 (死)

    回覆刪除
  15. UGP …
    把我的青春還給我><

    回覆刪除
  16. hepha您好^^
    您這篇文章我引用到自己的blog上解答這篇文的問題
    http://lobstershia.blogspot.com/2009/02/usbubuntu.html
    謝謝您的分享,也謝謝你放了ubuntu的banner,
    看到自己做的banner有人放好開心^0^

    回覆刪除