免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1392 | 回复: 0
打印 上一主题 下一主题

FreeBSD中硬盘的添加方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-10 11:21 |只看该作者 |倒序浏览

习惯了windows的人一到FreeBSD的时候,由于还没有领会到unix下的高效和工作方式,往往会觉得FreeBSD下的一些工作非常耐烦,不直
观,不高效,比如硬盘的添加就是其中一项。需要指出的是,这是一种误解,下面我将详细来说明一下FreeBSD下硬盘的准备、文件系统创建等问题。
FreeBSD下添加硬盘一般有三个步骤,即:fdisk disklabel
newfs。如果不需要考虑和别的系统共用一个硬盘那么就只有两个步骤,即:disklabel
newfs。同时为了先删除原来的分区,先要进行一个准备工作。下面将就每一个步骤详细说明:
注意:为了说明方便以一个设备名为ad2的硬盘为例,参数如下:
******* Working on device /dev/ad2 *******
parameters extracted from in-core disklabel are:
cylinders=3618 heads=15 sectors/track=63 (945 blks/cyl)
如果你参照这篇文章进行操作,请把ad2换成对应的设备文件
1、准备步骤
# dd if=/dev/zero of=/dev/ad2 bs=1k count=1
上面这行命令的作用是把一个大小为1k的全为0的文件写入到ad2的第一个扇区中,我们知道第一个扇区是主引导区,运行上面这个命令后就等于把原来的主引导区给删了。删除后的分区表为:
******* Working on device /dev/ad2 *******
parameters extracted from in-core disklabel are:
cylinders=3618 heads=15 sectors/track=63 (945 blks/cyl)
Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=3618 heads=15 sectors/track=63 (945 blks/cyl)
fdisk: invalid fdisk partition table found
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
The data for partition 2 is:
The data for partition 3 is:
The data for partition 4 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 63, size 3418947 (1669 Meg), flag 80 (active)
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 545/ head 14/ sector 63
可以看到要像这个硬盘有一个分区,这个分区覆盖了整个硬盘,这是初始状态,先不用管它。这种效果和使用
# fdisk -I
的效果是一样的。(下面会说到)
2、fdisk
fdisk -I     //创建一个覆盖整个硬盘的FreeBSD分区
fdisk -B     //初始化引导区
      -b    //初始化引导区时用这个指定引导区文件,比如:fdisk -B -b /boot/boot0
fdisk -i    //进行分区
fdisk -t    //测试模式
在fdisk的阶阶段,一般使用
# fdisk -i ad2
进入分区状态,它会一个一个地问你关于四个主分区的设置。在这个阶段比较难的在于计算分区大小和设置分区类型(sysid):
1)计算分区大小
磁盘的总容量=cylinders * heads *  sectors/track
本例中就是 3618 * 15 * 63 = 3419010
每个磁盘中的头64个扇区是引导区,因此:
实际可用容量= 总容量 - 63    //为什么不是64?因为是0 - 63
所以第一个分区要从63开始。以后的各个分区依此类推就可以了。
2)分区类型(sysid)
查看/usr/src/sbin/fdisk/fdisk.c中的130到214行,这里也附上:
0x00    unused
0x01    Primary DOS with 12 bit FAT
0x02    XENIX / file system
0x03    XENIX /usr file system
0x04    Primary DOS with 16 bit FAT (= 32MB)
0x07    OS/2 HPFS, NTFS, QNX-2 (16 bit) or Advanced UNIX
0x08    AIX file system or SplitDrive
0x09    AIX boot partition or Coherent
0x0A    OS/2 Boot Manager, OPUS or Coherent swap
0x0B    DOS or Windows 95 with 32 bit FAT
0x0C    DOS or Windows 95 with 32 bit FAT (LBA)
0x0E    Primary 'big' DOS (>= 32MB, LBA)
0x0F    Extended DOS (LBA)
0x10    OPUS
0x11    OS/2 BM: hidden DOS with 12-bit FAT
0x12    Compaq diagnostics
0x14    OS/2 BM: hidden DOS with 16-bit FAT (= 32MB)
0x17    OS/2 BM: hidden IFS (e.g. HPFS)
0x18    AST Windows swapfile
0x24    NEC DOS
0x3C    PartitionMagic recovery
0x39    plan9
0x40    VENIX 286
0x41    Linux/MINIX (sharing disk with DRDOS)
0x42    SFS or Linux swap (sharing disk with DRDOS)
0x43    Linux native (sharing disk with DRDOS)
0x4D    QNX 4.2 Primary
0x4E    QNX 4.2 Secondary
0x4F    QNX 4.2 Tertiary
0x50    DM (disk manager)
0x51    DM6 Aux1 (or Novell)
0x52    CP/M or Microport SysV/AT
0x53    DM6 Aux3
0x54    DM6
0x55    EZ-Drive (disk manager)
0x56    Golden Bow (disk manager)
0x5c    Priam Edisk (disk manager) /* according to S. Widlake */
0x61    SpeedStor
0x63    System V/386 (such as ISC UNIX), GNU HURD or Mach
0x64    Novell Netware/286 2.xx
0x65    Novell Netware/386 3.xx
0x70    DiskSecure Multi-Boot
0x75    PCIX
0x77    QNX4.x
0x78    QNX4.x 2nd part
0x79    QNX4.x 3rd part
0x80    Minix until 1.4a
0x81    Minix since 1.4b, early Linux partition or Mitac disk manager
0x82    Linux swap or Solaris x86
0x83    Linux native
0x84    OS/2 hidden C: drive
0x85    Linux extended
0x86    NTFS volume set??
0x87    NTFS volume set??
0x93    Amoeba file system
0x94    Amoeba bad block table
0x9F    BSD/OS
0xA0    Suspend to Disk
0xA5    FreeBSD/NetBSD/386BSD
0xA6    OpenBSD
0xA7    NeXTSTEP
0xA9    NetBSD
0xAC    IBM JFS
0xB7    BSDI BSD/386 file system
0xB8    BSDI BSD/386 swap
0xC1    DRDOS/sec with 12-bit FAT
0xC4    DRDOS/sec with 16-bit FAT (= 32MB)
0xC7    Syrinx
0xDB    CP/M, Concurrent CP/M, Concurrent DOS or CTOS
0xE1    DOS access or SpeedStor with 12-bit FAT extended partition
0xE3    DOS R/O or SpeedStor
0xE4    SpeedStor with 16-bit FAT extended partition 1024 cyl. or LANstep
0xFF    Xenix bad blocks table
2、disklabel
这个阶段是和windows最不一样的。其实这就是FreeBSD下的分区工具,没有什么神秘的。
这里需要搞清楚的是,fdisk的分区和disklabel的分区,fdisk分的区是磁盘的分区,而disklabel的分区是在fdisk的分区中再分出FreeBSD的分区。
在disklabel中分区,相当于在一个文件中把你要怎么分区写好,也就是所谓的“磁盘标签”。一般在两个步骤:
1)为每个fdisk分区创建disklabel
# disklabel -w ad2s1 auto
后面的auto是指磁盘的类型,如果不很少见的硬盘,就象上面一样直接指定为auto就可以了。
2)分区
# disklabel -e ad2s1
# /dev/ad2:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  3419720        0    4.2BSD     2048 16384 28552
  c:  3419720        0    unused        0     0         # "raw" part, don't edit
上面就是我的ad2的disklabel,我只分了一个区。说明如下:
一个fdisk分区里只能分8个区,也就是a b c d e f g h,所以在指定分区字母的时候,不要超出这个范围。
size:不用说了,就是指分区的大小,最大不要超过c中的数值。
offset:偏移量,说白了,就是说明这个分区从什么地方开始的,这个数值是相对于这个fdisk分区来说的,是一个相对量,可认从0开始。
fstype:有四种选择
    unused:一般就用在c上,不用于真正的文件系统。
    4.2BSD:文件系统都需要使用这个选项。
    swap:交换区
    vinum:做RAID用的
后面的fsize等用默认值就可以了,如果定要知道的话man disklabel
3 newfs
这就是所谓的创建文件系统。
# newfs -U /dev/ad2s1    //加上-U是加是softupdate支持
如果要使用fat32分区
# newfs_msdos -F 32 /dev/ad2s1
ok就是这样,不难吧!!!!
               
               


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/2809/showart_7782.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP