使用Linux系統安裝grub2到u盤並啟動系統或者iso鏡像文件


一、使用fdisk命令對u盤進行分區

1、fdisk -l 查看那個設備時u盤 (現在以/dev/sdc為例)

2、fdisk /dev/sdc 對u盤分區   p:查看當前分區  d:刪除當前分區   n:新建分區    w:保存

二、使用mkfs 將u盤格式化為fat32格式,fat32  通用性比較好

mkfs.vfat -F 32 /dev/sdc1  或者   mkfs -t vfat /dev/sdc1

三、將grub2安裝到u盤

1、sudo grub-install --boot-directory=/media/u /dev/sdc     問題:--boot-dircetory  和 --root-dircetory  的區別  或:grub-install --no-floppy --boot-directory=/mnt/img /dev/sdc

2、 sudo update-grub

3、sudo grub-mkconfig -o /media/u/boot/grub/grub.cfg

以上代碼中的/dev/sdc是U盤對應設備,/media/u是U盤的掛載點。

經過上面的操作,grub2被安裝到u盤的mbr上了,生成了默認的啟動菜單/grub/grub.cfg,通過u盤啟動就能看到grub2的引導界面了,完全可以引導電腦硬盤上的操作系統了。

四、使用grub命令行啟動系統 啟動linux系統(本文的grub指的全部是grub2)

1、set root=(hd1,msdos1)   (hd1,msdos1)是啟動分區。  (在輸到"("之后,按一下tab,我的能自動填充hd1,之后,再按一下tab鍵,可以顯示出磁盤分區,在我的電腦上顯示出了2個ext分區,以及這些分區的基本信息,我的安裝在hd1,msdos1)

2、linux /boot/vmlinux-xxx-xxx  root=UUID=xxxxxxxxx  或者 linux /boot/vmlinuz-***** -generic root=UUID=******     (root=后可以使用uuid也可使用 /dev/sda1 掛載分區,但是 本人個人暫時無法獲取是sda1還是sdb1,所以用UUID,第一步tab補全顯示磁盤分區詳情時會顯示分區的uuid號)

3、initrd /boot/initdxxx(按tab補全)

4、boot  啟動

五、grub可以直接啟動grub4dos

1、下載grub4dos工具到u盤(http://grub4dos.chenall.net/categories/downloads/)

2、配置 grub.cfg

menuentry "Grub4dos"{
    set root='hd0,msdos1'
    linux16 /grub/grub4dos/grub.exe

 boot

}

六、grub啟動winpe

1、消災鏡像文件到u盤

2、配置grub.cfg

menuentry 'winpe'{
  set root='hd0,msdos1'
  insmod lvm
  insmod xfs
  insmod memdisk
  insmod part_msdos
  echo 'loading memdisk...'
  linux16 /grub/memdisk iso raw
  echo 'loading iso...'
  initrd16 /grub/dabaicai.iso
}

七、grub4dos啟動winpe(grub啟動winpe有時候會失敗所以使用grub4dos啟動)

修改grub4dos下的menu.lst文件(menu.lst文件最好拷貝到根目錄或者boot目錄,要不然系統可能找不到)

title find and boot dabaicai.ISO
fallback 6

root (hd0,0) (系統默認是在當前磁盤,如果iso和grub4dos在同一個磁盤分區可以不用寫這一句)
find --set-root /grub/dabaicai.iso
map /grub/dabaicai.iso (0xff) || map --mem /grub/dabaicai.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2

 

命令解釋

set: 設置環境變量,如果不帶參數,則是顯示當前所有的環境變量。

linux: 從文件中加載Linux內核image。該行的其余內容則直接作為內核的命令傳遞,在使用了這個命令之后必須使用initrd命令。

intird: 為Linux內核image加載初始的ramdisk,並在內存中的Linux安裝區域中設置適當的參數,這只能在linux命令后使用。

boot: 引導已經加載的操作系統或鏈式加載程序。

chainloader:  作為一個鏈式加載程序來加載一個文件,如我在前文所述,當我用此命令加載了一個windows的efi文件之后,便能順利地引導win10系統的啟動了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM