我一直在用linux,但是我在linux製作pe啟動盤無法實現,windows有很多製作pe啟動盤的軟體,如大白菜,u深度什麼的,但是linux沒有對應的軟體,所以我想寫乙個類似的工具,那麼就有必要研究一下,u盤啟動方面的知識,到目前為止軟體也寫好了
現在無論是電腦還有u盤,他們的啟動方式只有兩種:
1.uefi啟動
2.legacy啟動
1.dg分割槽工具(檢視對應扇區的二進位制資料)
2.bootice(檢視或修改主引導記錄)
點選主引導記錄按鈕 就可以檢視或修改主引導記錄
大白菜啟動盤legacy啟動用的主引導記錄是 grub4dos,占用16個扇區,乙個扇區是512位元組,這種引導方式也是大部分製作啟動盤軟體用的引導,可以啟動windows也可以啟動linux,而且這是個開源專案
為了建立乙個支援legacy啟動的u盤,我使用grub4dos這種引導,可以通過bootice 這個軟體將引導備份成二進位制資料。
然後這個檔案可以儲存下來
中的主引導記錄是windows nt 6.x mbr,所以你要提取出 grub4dos 的主引導記錄,你可以下個大白菜啟動盤製作工具,製作個啟動盤,然後再從u盤中提取主引導記錄。(不過這太傻了,所以我打算把資源放上來,會在文章結束給出鏈結)
然後使用dd工具將grub4dos主引導記錄寫入到新u盤
dd if=mbr.bin of=/dev/sdc bs=446 count=1
dd if=mbr.bin of=/dev/sdc skip=1 seek=1 count=15
1.主引導程式即主引導記錄(mbr)(佔446個位元組)
可在fdisk程式中找到,它用於硬碟啟動時將系統控制轉給使用者指定的並在分割槽表中登記了的某個作業系統。
2.磁碟分割槽表項(dpt,disk partition table)
由四個分割槽表項構成(每個16個位元組)。
負責說明磁碟上的分割槽情況,其內容由磁碟介質及使用者在使用fdisk定義分割槽時決定。(具體內容略)
3.結束標誌(佔2個位元組)
其值為aa55,儲存時低位在前,高位在後,即看上去是55aa(十六進製制)。
也就是我跳過了磁碟分割槽表項和結束標誌,因為如果不跳過寫入的話,新u盤會變成我之前備份u盤的容量大小,比如我重32g u盤備份出來主引導記錄,然後還原到4g u盤裡面,那麼4g u盤也會變成32g,容量錯亂,結束標誌都一樣,所以還原不還原都一樣
另外前446 個位元組是主引導記錄,為什麼grub4dos占用16個扇區呢?
關於這個問題,我詳細的研究了一下,我單獨只還原前 446個位元組不還原後15個扇區的資料,然後用 bootice 軟體是可以識別到引導的,由此推斷前446個位元組可以宣告引導型別,而主引導邏輯寫到後15扇區了,由此我想到了我也可寫乙個類似bootice的軟體(linux平台上的),畢竟linux上還沒有bootice這麼好用的軟體,只判斷前446個位元組的資料,從而識別主引導記錄型別
回歸正題
然後在u盤裡面放乙個 grldr 和乙個 menu.lst 檔案就可以legacy 啟動用到grub4dos引導了
grub4dos 啟動 bootmgr 命令
chainloader /bootmgr
boot
這裡給乙個menu.lst檔案例子:
title start
chainloader /bootmgr
boot
到這裡支援legacy啟動的u盤就已經製作好了,剩下的就是找乙個較好的pe盤映象了
我製作了在linux上一件製作pe啟動盤的軟體
用pyqt5寫的乙個簡單圖形化介面。模擬啟動呼叫的qemu
命令
建立U盤啟動盤
1.要求 2.usb選擇 3.引導選擇和分割槽方案 4.選擇ubuntu iso檔案 5.編寫iso 7.寫警告 8.編寫iso 9.安裝完成 需要 執行以下操作以在rufus中配置usb裝置 啟動rufus 插入usb隨身碟 rufus將更新以在 裝置 欄位中設定裝置 如果所選裝置不正確 也許您有...
linux複製u盤檔案,掛載u盤
1.插入u盤,輸入載入usb模組指令 modprobe usb storage2.檢視u盤的裝置 fdisk l 或者ls dev其中名為sda系列是磁碟裝置,sdb系列是u盤裝置。3.在mnt目錄下建立usb disk資料夾,一會要掛載u盤到這個目錄下。mkdir mnt usb disk4.使用...
linux下u盤使用
方案一 linux不像windows一樣,接上新硬體後可以自動識別,在linux下無法自動識別新硬體的,需要手動去識別。usb移動儲存裝置通常被識別為sda1,具體可以通過fdisk l命令查詢。在使用u盤前,我們先要為外掛程式點新建乙個子目錄,一般外掛程式點的子目錄都是建立在 mnt裡面的,我們也...