将U盘分为1个区,文件系统格式为vfat格式
1、查看计算机存储设备信息
[root@localhost ~]# fdisk -l
...
Disk /dev/sdb: 4008 MB, 4008706048 bytes
255 heads, 63 sectors/track, 487 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb4 * 1 488 3914689 c W95 FAT32 (LBA)
Partition 4 has different physical/logical endings:
phys=(486, 254, 63) logical=(487, 91, 53)
[root@localhost ~]# ls /dev/sd* | grep "sdb"
/dev/sdb
/dev/sdb4
这里U盘是/dev/sdb,只有一个分区/dev/sdb4
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): d # delete the old partition(s)
Selected partition 4
Command (m for help): n # create new partition(s)
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-487, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-487, default 487):
Using default value 487
Command (m for help): w # 提交修改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 # no /dev/sdb
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 /dev/sdb /dev/sdb1
[root@localhost ~]# mkfs.vfat /dev/sdb1
mkfs.vfat 2.11 (12 Mar 2005)
mkfs.vfat: /dev/sdb1 contains a mounted file system.
此时分区已经被挂载,要格式化应先卸载分区
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# mkfs.vfat /dev/sdb1
mkfs.vfat 2.11 (12 Mar 2005)
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): a
Partition number (1-4): 1 # /dev/sdb1作为可引导分区
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# df -l
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda7 40631956 3154200 35380472 9% /
tmpfs 1036808 0 1036808 0% /dev/shm
/dev/sdb1 3904152 4 3904148 1% /media/disk
/dev/sda5 52427180 33302524 19124656 64% /mnt
[root@localhost ~]# grub-install --root-directory=/media/disk --no-floppy /dev/sdb1
The file /media/disk/boot/grub/stage1 not read correctly.
错误:The file /media/disk/boot/grub/stage1 not read correctly.
出现这个问题的原因是/dev/sdb1的格式为vfat格式,这里不支持将 grub 安装在 vfat 格式的分区中
将U盘分为2个区,第一个区为vfat格式,第二个区为ext2格式,grub安装到第二个区,将第二个区作为可引导区
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): d
Selected partition 1
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-487, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-487, default 487): +3072M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (375-487, default 375):
Using default value 375
Last cylinder or +size or +sizeM or +sizeK (375-487, default 487):
Using default value 487
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 /dev/sdb /dev/sdb1 /dev/sdb2
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# umount /dev/sdb2
[root@localhost ~]# mkfs.vfat /dev/sdb1
mkfs.vfat 2.11 (12 Mar 2005)
[root@localhost ~]# mkfs.ext2 /dev/sdb2
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
113568 inodes, 226918 blocks
11345 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=234881024
7 block groups
32768 blocks per group, 32768 fragments per group
16224 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): a
Partition number (1-4): 2
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# fdisk -l
...
Disk /dev/sdb: 4008 MB, 4008706048 bytes
255 heads, 63 sectors/track, 487 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 374 3004123+ 83 Linux
/dev/sdb2 * 375 487 907672+ 83 Linux # 可引导分区
[root@localhost ~]# df
...
/dev/sdb2 893388 904 847104 1% /media/disk
/dev/sdb1 2998248 4 2998244 1% /media/disk-1
[root@localhost ~]# grub-install --root-directory=/media/disk --no-floppy /dev/sdb2
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /media/disk/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sda
(hd1) /dev/sdb
[root@localhost ~]# grub
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd1,
Possible partitions are:
Partition num: 0, Filesystem type unknown, partition type 0x83
Partition num: 1, Filesystem type is ext2fs, partition type 0x83
grub> root (hd1,1)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> quit
注意:上述方案并不一定能启动硬盘中的 Linux, 笔者测试的一个U盘就不行
未知品牌 U 盘(4G) | ||
分区1 | 分区2 | 能否启动硬盘中的 Linux |
vfat(3G) | ext2(grub) | 不能 |
ext2(grub, 512M) | vfat | 能 |
Kingston(4G) | ||
分区1 | 分区2 | 能否启动硬盘中的 Linux |
ext2(grub, 512M) | vfat | 能 |
ext2 | 无 | 能 |
Booting from USB, http://wiki.linuxquestions.org/wiki/Booting_from_USB
安装GRUB到U盘,http://bbs.chinaunix.net/thread-2295595-1-1.html