U盤,全稱USB閃存盤,英文名“USB flash disk”。 它是一種使用USB接口的無需物理驅動器的微型高容量移動存儲產品,通過USB接口與電腦連接,實現即插即用。U盤連接到電腦的USB接口后,U盤的資料可與電腦交換。而之后生產的類似技術的設備由于朗科已進行專利注冊,而不能再稱之為“優盤”,而改稱“U盤”。后來,U盤這個稱呼因其簡單易記而因而廣為人知,是移動存儲設備之一,F在市面上出現了許多支持多種端口的U盤,即三通U盤(USB電腦端口、iOS蘋果接口、安卓接口)。 menu.lst是什么,menu.lst是DOS工具啟動的菜單界面設置文件,這個文件了解winpe的才知道如何去寫入,不是一般能看得懂的,menu.lst中文意思就是菜單列表的。裝機吧教如何讀懂menu.lst是什么東西:

首先來看一下/boot/grub/menu.lst中的內容:
default=0
timeout=5
#splashimage=(hd0,6)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
root (hd0,6)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
initrd /boot/initrd-2.6.11-1.1369_FC4.img
title Windows XP
rootnoverify (hd0,0)
chainloader +1
其中:
default=0
表示默認啟動的第0號的操作系統,在GRUB中,title定義了啟動的操作系統,從第1個開始,GRUB中是0,而第2個是1,依次類推...
timeout=5
表示的是出現GRUB界面后,無操作情況下進入default設定的操作系統的時間,如果上下移動選擇,則該選項無效
splashimage=(hd0,6)/boot/grub/splah.xpm.gz
表示的是允許出現的GRUB背景的path,顯然(hd0,6)指定了分區(不知能否這么解釋,呵呵),而后邊的則是正常的path(在例子中,用#把它注釋,為一可選項)
hiddenmenu
表示隱藏GRUB的啟動菜單,直接進入由default廟宇的操作系統中去,為一可選項.
linux類
其格式一般為:
title (......)
root (hd[0-n],x)
kernel (......)
initrd (......)
其中:
title行,是定義一個啟動操作系統,而后邊可以自己隨便寫上喜歡的名字,呵,當然最起碼要自己能認出來。
root行,指定相應的linux所有的/boot,如果在寫分區和掛載時沒有單獨掛載,那么就和/在同一個分區中,hd[0-n]表示的是第幾個硬盤,而x則表示的是[第幾個分區-1],即x比分區號小1,特別要注意。
kernel 行,在這里以kernel 起始,指定Linux的內核的文件所處的絕對路徑(通過在終端輸入命令:ls /boot/vmlinuz*來看內核的全名);因為內核是處在/boot目錄中的,而如果/boot是獨立的一個分區,則需要把boot省略,因為 /boot所在的分區在root (hd[0-n],x)中指定了,所以就無需要再指明內核處在哪個分區了;ro 表示只讀;root=LABEL=/ 來表示Linux的根所處的分區。LABEL=/ 這是硬盤分區格式化為相應文件系統后所加的標簽;如果您不了解什么是標簽,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X來表示;就看您的Linux是根分區是在哪個分區了。比如我的是在/dev/hda3, 那這里就可以寫成root=/dev/hda3;
initrd行,如果是/boot獨立一個分區,initrd 一行要把/boot中省略;如果/boot不是處于一個分區,而是和Linux的/分區處于同一分區,不應該省略;我們通過查看/boot中的 initrd的文件名到底是什么來寫這一行代碼,在終端輸入:ls /boot/initrd*
很容易能得到initrd文件名,然后寫入.
在了解了以上情況之后,我們就很容易地理解另一種寫法了:
title (......)
kernel (hd[0-n],y)(/boot)...... ro root=......
initrd (hd[0-n],y)(/boot)......
其實只是省略的root很實在地寫在了kernel和initrd行中去了而已
附:
其 實在GRUB啟動菜單不能工作的時候,進入GRUB命令行(可按CTRL+C鍵)后,我們同樣可以一步一步地把系統啟動起來,其實在menu.lst中, 除title不是指令外,其余的都是GRUB指令,我們只要一步步地輸入它們(錯了要從新開始),中間輸入關于kernel和 initrd要利用
TAB鍵補齊寫好,最后只要boot一下就行了.
用GRUB指令引導windows:
GRUB> rootnoverify (hd0,0)
GRUB> chainloader +1
GRUB> boot
# 1. 直接指定核心開機
既然要指定核心開機,所以當然要找到核心檔案啦!此外,有可能還需要用到 initrd 的 RAM Disk 設定檔案 (通常是放置在 /boot 底下啊!)。但是如前說的, 尚未開機完成,所以我們必須要以 grub 的硬碟認識方式找出完整的 kernel 與 initrd 檔名才行。 因此,我們可能需要有底下的方式來設定才行!
1. 先指定核心檔案放置的 partition,再讀取檔案 (目錄樹),最后才加入檔案的實際檔名與路徑 (kernel 與 initrd);
假設僅有一顆硬碟,且僅劃分出 /dev/hda1 (亦即根目錄為 /dev/hda1)而已:
root (hd0,0) <==代表核心檔案放在那個 partition 當中?
kernel /boot/vmlinuz ro root=/dev/hda1 vga=771
initrd /boot/initrd
# root :代表的是‘核心檔案放置的那個 partition 而不是根目錄’喔!不要搞錯了!
# kernel :至于 kernel 后面接的則是核心的檔名,而在檔名后面接的則是核心的參數,
# 在 kernel 后面接的 root 才是‘根目錄所在的 partition ’,
# 另外,核心還可以外加很多的參數喔,例如 vga 即是一個解析度參數!
# initrd :就是前面提到的 initrd 制作出 RAM Disk 的檔案檔名啦!
2. 直接指定 partition 與檔名,不需要外接 root !
kernel (hd0,0)/boot/vmlinuz ro root=/dev/hda1 vga=771
initrd (hd0,0)/boot/initrd
注意到:kernel 后面其實只要接 ‘核心檔案檔名’與 ‘根目錄 (/) 的所在磁碟代號 (用一般 Linux 磁碟代號) 就可以了。 老實說,以第二個方式來書寫你的 title 的內容會比較好一點~ 不會造成兩個 root 是啥意思的紊亂!上面的案例還很好理解,如果是底下的案例呢? 思考看看:
例題:
我的 Linux 主機僅有一顆硬碟,但為了制作多重開機,所以我將 /boot 獨立出來成為一個 partition, partition 的對應是‘ /boot → /dev/hda2 ’ ‘ / → /dev/hda1 ’,而且我僅有 kernel file, 檔名為 /boot/vmlinuz-2.6.11-1.1369_FC4 請問 grub 當中的 title 要如何寫?
答:
只要列出 kernel 的檔名即可!因為我將 /boot 獨立成為 /dev/hda2 ,因此,整個核心檔案檔名應該是:
/boot/vmlinuz-2.6.11-1.369FC4 –>
(/dev/hda2)/vmlinuz-2.6.11-1.1369_FC4 –>
(hd0,1)/vmlinuz-2.6.11-1.1369_FC4
因為 /boot 是一個完整的 partition 嘛!所以說,整個核心檔案的寫法,可以這樣做:
title FC4 default
kernel (hd0,1)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda1
因為 vmlinuz-2.6.11-1.1369_FC4 這個檔案其實是在 /boot 所在的 partition 上, 而 /boot 是 (hd0,1) ,因此,整個檔名就成為 (hd0,1)/vmlinuz-2.6.11-1.1369_FC4 了! 只要你能夠瞭解這個檔名的來源,那么 grub 對你而言,已經沒有什么大問題了! ^_^
# 2. 利用 chain loader 的方式:
所謂的 chain loader 僅是在將控制權交給下一個 boot loader 而已, 所以 grub 并不需要認識與找出 kernel file ,‘ 他只是將 boot 的控制權交給下一個 super block 或者是 MBR 內的 boot loader 而已 ’ 所以通常他也不需要去查驗下一個 boot loader 的開機磁區。 一般來說, chain loader 的設定只要兩個就夠了,一個是指定開機區的 root partition,另一個則是設定 chainloader 在那個磁區上!所以說,假設我的 Windows 磁區在 /dev/hda1 ,且我又只有一顆硬碟, 那么要 grub 將控制權交給 windows 的 loader 只要這樣就夠了:
[root@linux ~]# vi /boot/grub/menu.lst
….前略….
title Windows partition
root (hd0,0)
chainloader +1
那個 root 代表的就是 Windows 的 C 槽啦!而 chainloader 則是載入 boot loader 的定義值, 那個 +1 代表的是‘第一個 sector ’也可以說成 Super block 啊!這樣說,理解嗎?! 但其實我們的 grub 功能是很強大的!他還可以隱藏某些 partition 呢! 讓您的 Windows 不會去讀取 Linux 的 partition 。∨e例來說,以上面的例子在延伸, 假設我的 /dev/hda5 是 Linux 的磁碟系統,我想將他隱藏,并且把原先隱藏的 /dev/hda2 開啟,并且不去檢查 /dev/hda1 的開機區,所以,會變成:
[root@linux ~]# vi /boot/grub/menu.lst
title Windows partition
unhide (hd0,1)
hide (hd0,4)
rootnoverify (hd0,0)
chainloader +1
makeactive
最后那個 makeactive 是讓開機區的 boot 項目具有 active 的標志而已,有沒有加都可以。
U盤最大的優點就是:小巧便于攜帶、存儲容量大、價格便宜、性能可靠。
|