【在linux下】制作可安装linux系统的u盘【【原创】】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【在linux下】制作可安装linux系统的u盘【【原创】】
之前一直用grubinst_gui.exe 来制作安装系统的u盘,它仅限于在windows(nt/2k/xp)下, 每次都要启动虚拟机,而且还要将镜像通过虚拟机复制到u盘上。
对于使用ubuntu的我,这可真是够麻烦了,很低效。
我一直在找方法在linux下实现,曾经尝试过(1)直接在ubuntu下安装grub到u盘,但是ubuntu现在用的是grub2,写grub的menu.lst很复杂,而且安装过程在 u盘产生很多无用的内容,于是放弃。
(2)在虚拟机的rhel下安装grub,menu.lst简单了,不过也产生无用内容,而且这还不如在虚拟机xp下弄方便。
放弃。
(3)在ubuntu下重新编译grubinst,但是编译过程出错。
后来,细细读了下grubinst的文档,发现原来可以用代替,而且是完全用c写的,可以直接在linux下执行于是,此方法就诞生了,经过测试,正常!如下(以下测试均在ubuntu10.04下完成):
一、格式化u盘(假设u盘识别为/dev/sdb,这个以你的计算机上实际情况为准):
null@null:~$ sudo fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p
Disk /dev/sdb: 4013 MB, 4013948928 bytes
124 heads, 62 sectors/track, 1019 cylinders
Units = cylinders of 7688 * 512 = 3936256 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcad4ebea
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1019, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1019, default 1019):
Using default value 1019
Command (m for help): p
Disk /dev/sdb: 4013 MB, 4013948928 bytes
124 heads, 62 sectors/track, 1019 cylinders
Units = cylinders of 7688 * 512 = 3936256 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcad4ebea
Device Boot Start End Blocks Id System
/dev/sdb1 1 1019 3917005 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
null@null:~$ sudo mkfs.vfat /dev/sdb1
mkfs.vfat 3.0.7 (24 Dec 2009)
二、用安装grub到u盘mbr:
null@null:~$ sudo ./ --no-backup-mbr --mbr-disable-osbr /dev/sdb
Disk geometry calculated according to the partition table:
Sectors per track = 62, Number of heads = 124
Success.
三、复制grldr、menu.lst到u盘根目录。
null@null:~$ mkdir /tmp/udisk
null@null:~$ mount /dev/sdb1 /tmp/udisk/
null@null:~$ sudo cp ./grub_test/grldr /tmp/udisk/
null@null:~$ sudo cp ./grub_test/menu.lst /tmp/udisk/
至此,u盘已经可以从grub引导启动了。
下面尝试从u盘安装linux系统(以rhel5.3为例子)。
############################################# #############
四、将rhel5.3的iso镜像中的images下的boot.iso提取复制到u盘根目录。
将rhel5.3的dvd镜像复制到u盘根目录。
五、编辑menu.lst文件,添加以下内容并保存。
title RedHat Linux AS5up3 Install
find --set-root /boot.iso
map --mem /boot.iso (hd32)
map --hook
chainloader (hd32)
至此,可以将u盘插到到机器上启动,并在出现grub界面时选择“RedHat Linux AS5up3 Install“,然后就会出现linux安装光盘启动画面,此时输入linux method然后回车,出现选择安装方式的时候选择hardisk,然后选择u盘的盘符即可开始安装。
附:
is a DOS/Linux utility for installing grldr.mbr to MBR.
The whole grldr.mbr is embedded in the body of the utility, so
can be used independently. See below.
*************************************************************** ***************
*** - Install GRLDR.MBR bootstrap code to MBR ***
*************************************************************** ***************
installs GRLDR.MBR boot record to the MBR of a harddrive or of a
harddrive image file, or to the boot sector of a floppy or a
floppy image.
Usage:
[OPTIONS] DEVICE_OR_FILE
OPTIONS:
--read-only do everything except the actual write to the specified DEVICE_OR_FILE.
--restore-mbr restore the previous mbr.
--mbr-no-bpb do not copy BPB in the boot sector of the leading FAT partition to MBR.
--no-backup-mbr do not copy the old MBR to the second sector of
DEVICE_OR_FILE.
--force-backup-mbr force the copy of old MBR to the second sector
of DEVICE_OR_FILE.
--mbr-enable-floppy enable the search for GRLDR on floppy.
--mbr-disable-floppy disable the search for GRLDR on floppy.
--mbr-enable-osbr enable the boot of PREVIOUS MBR with invalid
partition table(usually an OS boot sector).
--mbr-disable-osbr disable the boot of PREVIOUS MBR with invalid
partition table(usually an OS boot sector).
--duce disable the feature of unconditional entrance to the command-line.
Normally one can unconditionally get the
command-line console by a keypress of `C',
bypassing all config-files(including the
preset-menu). This is a security hole. So we
need this option to disable the feature.
DUCE is for Disable Unconditional Command-line
Entrance.
--chs-no-tune disable the feature of geometry tune.
--boot-prevmbr-first try to boot PREVIOUS MBR before the search for
GRLDR.
--boot-prevmbr-last try to boot PREVIOUS MBR after the search for
GRLDR.
--preferred-drive=D preferred boot drive number, 0 <= D < 255.
--preferred-partition=P preferred partition number, 0 <= P < 255.
--serial-number=SN setup a new serial number for the hard drive.
SN must be non-zero.
--time-out=T wait T seconds before booting PREVIOUS MBR. if
T is 0xff, wait forever. The default is 5.
--hot-key=K if the desired key K is pressed, start GRUB before booting PREVIOUS MBR. K is a word
value, just as the value in AX register
returned from int16/AH=1. The high byte is the
scan code and the low byte is ASCII code. The
default is 0x3920 for space bar. See "int 16
keyboard scan codes" below.
--floppy if DEVICE_OR_FILE is floppy, use this option.
--floppy=N if DEVICE_OR_FILE is a partition on a hard drive, use this option. N is used to specify
the partition number: 0,1,2 and 3 for the
primary partitions, and 4,5,6,... for the
logical partitions.
--sectors-per-track=S specifies sectors per track for --floppy.
1 <= S <= 63, default is 63.
--heads=H specifies number of heads for --floppy.
1 <= H <= 256, default is 255.
--start-sector=B specifies hidden sectors for --floppy=N.
--total-sectors=C specifies total sectors for --floppy.
default is 0.
--lba use lba mode for --floppy. If the floppy BIOS has LBA support, you can specify --lba here.
It is assumed that all floppy BIOSes have CHS
support. So you would rather specify --chs.
If neither --chs nor --lba is specified, then
the LBA indicator(i.e., the third byte of the
boot sector) will not be touched.
--chs use chs mode for --floppy. You should specify --chs if the floppy BIOS does not support LBA.
We assume all floppy BIOSes have CHS support.
So it is likely you want to specify --chs.
If neither --chs nor --lba is specified, then
the LBA indicator(i.e., the third byte of the
boot sector) will not be touched.
--fat12 FAT12 is allowed to be installed for --floppy.
--fat16 FAT16 is allowed to be installed for --floppy.
--fat32 FAT32 is allowed to be installed for --floppy.
--vfat FAT12/16/32 are allowed to be installed for
--floppy.
--ntfs NTFS is allowed to be installed for --floppy.
--ext2 EXT2 is allowed to be installed for --floppy.
--install-partition=I Install the boot record onto the boot area of
partition number I of the specified hard drive
or harddrive image DEVICE_OR_FILE.
DEVICE_OR_FILE: Filename of the device or the image file. For DOS, a BIOS drive
number(hex 0xHH or decimal DDD) can be used to access the drive. BIOS drive
number 0 is for the first floppy, 1 is for the second floppy; 0x80 is for the
first hard drive, 0x81 is for the second hard drive, etc.
Note: writes only the boot code to MBR. The boot code needs to
load GRLDR as the second(and last) stage of the GRUB boot process. Therefore
GRLDR should be copied to the root directory of one of the supported
partitions, either before or after a successful execution of .
Currently only partitions with filesystem type of FAT12, FAT16, FAT32, NTFS,
EXT2 or EXT3 are supported.
Note 2: If DEVICE_OR_FILE is a harddisk device or a harddisk image file, it
must contain a valid partition table, otherwise, will fail. If
DEVICE_OR_FILE is a floppy device or a floppy image file, then it must contain
a supported filesystem(i.e., either of FAT12/FAT16/FAT32/NTFS/EXT2/EXT3).
Note 3: If DEVICE_OR_FILE is a floppy device or a floppy image file, and it
was formated EXT2/EXT3, then you should specify --sectors-per-track and
--heads explicitly.
Important!! If you install GRLDR Boot Record to a floppy or a partition, the
floppy or partition will boot solely grldr, and your original
IO.SYS(DOS/Win9x/Me) and NTLDR(WinNT/2K/XP) will become unbootable. This is
because the original boot record of the floppy or partition was overwritten.
There is no such problem when installing GRLDR Boot Record
onto the MBR.
Update: Some NTLDR/IO.SYS/KERNEL.SYS files can be directly chainloaded in the
latest GRUB4DOS.
Tip: If the filename begins in a dash(-) or a digit, you may prefix a dirname
(./) or (.\) to it.
Examples:
Installing GRLDR boot code to MBR under Linux:
/dev/hda
Installing GRLDR boot code to MBR under DOS:
0x80
Installing GRLDR boot code to a harddisk image under DOS or Linux:
hd.img
Installing GRLDR boot code to floppy under Linux:
--floppy --chs /dev/fd0
Installing GRLDR boot code to floppy under DOS:
--floppy --chs 0x00
Installing GRLDR boot code to a floppy image under DOS or Linux:
--floppy --chs floppy.img
cannot function well under Windows NT/2000/XP/2003. It is expected
(and designed) to run under DOS/Win9x and Linux. Update: For image FILES,
function well under Windows NT/2000/XP/2003. For devices,
will not work under Windows NT/2000/XP/2003 because
is a DOS utility and Windows NT/2000/XP/2003 does not allow to
access devices.。