一、问题提出

硬盘越做越大,然我喜欢让我忧。10年前就遇到过在586电脑BIOS不认识超过8.4G容量硬盘的问题,以及Windows Nt操作系统不认大硬盘(容量超过8.4G)的问题,对于Linux 通过LILO启动的时候也不能突破硬盘8.4G容量的限制。

原因主要是这样,过去的BIOS使用的是8位寻址方式编号从0到7,故他表示的范围是0-255之间变化,硬盘容量大小的计算方法是:512X磁头数X柱面数X每磁道扇区数,每个扇区的大小是512字节,所以最大寻址范围是: (1024 * 255 * 63 * 512/1024/1024)=8.4G 。

目前的电脑主板BIOS普遍采用48位寻址,早已解决了137G硬盘的限制,最近我们机房服务器升级更换批旧服务器,需要把UNIX系统更换到新机器上,机房到了一批新Dell OptiplesGx755 PC,配置有120G硬盘,用作UNIX Server,操作系统为Sco UNIX Open Server 5.0.6。

先按默认参数在其上安装UNIX,安装完毕后发现,进入UNIX后只能找到8G的硬盘空间。因为这批机器是专门配置为在UNIX下工作的,剩下约112G无法利用,硬盘的利用率只有7%,资源浪费极大。我们就开始做实验继续尝试不同的方法解决问题。

二、一组实验结果

为了攻克这一课题,我们用代替法反复实验,在HP,IBM,多款120G硬盘的PC上,采用了不SCO 提供的大容量硬盘安装模式,在biosgeom指定参数安装Sco OpenServer 5.0.6,发现下列情况:

(a)在IBM、HP多款PC上安装UNIX等正常引导,但发安装OS的硬盘,拆到DELL机器上,却不能正常引导,开机显示“NO OS";

(b)在dell pc上安装120G的UNIX,改用大硬盘安装参数时,不能正常引导,开机显示“NO OS”,使用默认方式只能认到8G磁盘空间,浪费极大。所以我认为,Dell Optiplex Gx755 pc 应该可以支持Unix,否则8G的UNIX也不能用。

三、分析原因

根据上述情况,我认为关键问题出在硬盘的主引导扇区(位于整个硬盘的0磁道0柱面1扇区)上,再深入分析一下,硬盘的主引导扇区的组成为主引导记录(1BEH byte)+分区表(40H byte)+结束标志(2H byte)。

UNIX系统的安装程序会把硬盘参数写入主引导记录:第一次安装UNIX时,由于原硬盘上的主引导记录不是UNIX格式,安装程序会想硬盘写入UNIX格式的主引导记录;以后用缺省参数重装UNIX;如果原有主引导记录已经是UNIX格式,则安装程序不再修改主引导记录;如果采用biosgeom指定参数安装,UNIX的安装程序将重写主引导记录。

默认安装UNIX时,安装程序识别硬盘最多有1024个Cylinder,当硬盘实际Cylinder数量小于1024,安装程序在主引导记录写入实际的Cylinder,Head,Sectors数(磁盘大小=cylinders x heads x sectors per track x 512);当大于1024时,安装程序在主引导记录中标记硬盘的cylinder数为1024,连同head,sectors数一起写到

硬盘的主引导记录,这些参数表示硬盘的总容量大小,而UNIX分区大小则在分区表中定义。在UNIX引导时系统显示的Cylinder,Head,Sectors数就是从主引导记录中读取的。Dell P c引导UNIX时,如果主引导记录中的Cylinder数超过1024,将导致BIOS 引导程序无法找到操作系统,而显示“NO OS"。

四、解决方法

现在市面上的硬盘的硬盘控制器内部安装了一个地址翻译器,早已突破了1024柱面的限制,但我们在安装系统的时候还是要注意,一定要在BIOS中将硬盘设置成LBA模式。下面我们解决问题的思路是这样的,可以假设在安装了120G的UNIX的硬盘上,主引导记录换成能正常引导8G的UNIX硬盘的主引导记录,引导系统时,应该可以找到操作系统,只要机器能够引导,UNIX就能够找到的空间由分区表确定。真正有价值的东西不会轻易退出历史的舞台,Debug就是这样的经典作品之一,但到了关键时刻还得请他出马。

操作步骤:

(a)安装一台可以正常引导8G UNIX的Dell Pc;

(b) 做一张DOS引导U盘,要带Debug.exe工具,在BIOS设置第一引导设置为USB-HDD模式(U盘制作启动盘方法参考其他文章)。

(c)在安装8G UNIX的Dell Pc上用软盘引导,进入Debug,提取硬盘的主引导记录,保存在U盘上。

-a 100
CS:0100 mov ax 201
CS:0103 mov bx,200
CS:0106 mov cx,1
CS:0109 mov dx,80
CS:010C int 13
CS:010E int 20
CS:0110
-g=100
-rcx,
:1be
-n A:UBOOT.8G
-w 200
Writing 1be bytes
-q

(d)重新安装UNIX系统,在出现的boot:后面输入defbootstr biosgeom=(15665,255,63)安装过程中,选择把整个硬盘给UNIX系统。上述的15665,255,63分别表示为硬盘的C ylinders数、Heads数、sectors-per-track数,head=255:表示LBA模式。

(e)再次用U盘引导安装了120G UNIX的PC,用步骤三中提取的主引导记录替换现有的主引导记录。

-a 100
CS:0100 mov ax 201
CS:0103 mov bx,200
CS:0106 mov cx,1
CS:0109 mov dx,80
CS:010C int 13
CS:010E int 20
CS:0110
-g=100
-n A:UBOOT.8G
-l 200
CS:0100 mov ax,301
CS:0103
-g=100
q

经过这样处理后,Dell Gx755 pc 能正常引导120G UNIX

五、结束语

(a).系统引导时,显示的柱面数为1024,实验表明,不影响使用;

(b).进入UNIX系统,用df -v命令查看硬盘空间为110G,属于正常现象,硬盘的格式化容量比标称容量小;另外还可以用用dkinit /dev/rhd00(或rhd01)看到系统使用了所有的柱面信息。 这里hd00代表整个物理硬盘hd01代表第一个分区,在UNIX系统里硬盘是字符设备所以文件名以”r”开头。

(c).按这种方法安装UNIX,主引导扇区只要一次提取,可多次使用。是个成熟稳定的解决方案;

(d).另外对于硬盘参数的获取一可以把磁盘拆下来看,还可以直接用工具软件如Diskman 、PowerMax来测出其值。

本文出自 “李晨光原创技术博客” 博客,请务必保留此出处http://chenguang.blog.51cto.com/350944/749771

突破极限 解决大硬盘上安装Unix新思路的更多相关文章

  1. 突破极限 解决大硬盘上安装Sco Unix新思路

    突破极限 解决大硬盘上安装Sco Unix新思路 [url]http://os.51cto.com/art/200809/89750.htm[/url]       硬盘越做越大,然我喜欢让我忧.10 ...

  2. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  3. Linux 桌面玩家指南:11. 在同一个硬盘上安装多个 Linux 发行版以及为 Linux 安装 Nvidia 显卡驱动

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  4. centos5安装在大硬盘上面的问题

    硬盘空间大小: 3TB 原始硬盘是GPT格式的,系统安装现象如下: 此时按 ctrl + alt + F2 ,进入命令行界面,输入如下: 发现 用parted修改硬盘分区格式为msdos,报错!基本可 ...

  5. windows下IIS+PHP解决大文件上传500错问题

    linux下改到iis+php后,上传大于2M就出500错,改了php.ini中的upload_max_filesize也不行,最后解决如下: 第一步:修改php.ini 上传大小限制 (以上传500 ...

  6. 20160113006 asp.net实现ftp上传代码(解决大文件上传问题)

    using System;using System.Configuration;using System.Data;using System.Linq;using System.Web;using S ...

  7. VS 2013 professional版在win10上安装出错的解决方法

    VS 2013 professional版在win10上安装出错的解决方法 win10上安装完VS 2012 professional和VS 2017 professional后,由于项目的需要,要在 ...

  8. js解决大文件断点续传

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  9. java大文件上传解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

随机推荐

  1. PostgreSQL 批量生成数据

    create table user_info(userid int,name text,birthday date,crt_time timestamp without time zone,); in ...

  2. 51Nod 最长的循环节(打表预处理)

    正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数.     1/6= ...

  3. jdk--rpm.bin文件安装, zip解压与创建

    3,执行命令赋予安装文件777权限: # cd /usr/java(mkdir java –此目录需要创建) ①jdk-1_5_0_16-linux-i586-rpm.bin文件安装 # chmod ...

  4. Chromium Graphics: Compositor Thread Architecture

    Compositor Thread Architecture <jamesr, enne, vangelis, nduca> @chromium.org Goals The main re ...

  5. session 存入 memcahce

    <?php header('content-type:text/html;charset=utf-8'); class RedisSessionHandler{ public $ttl; //失 ...

  6. bzoj1293 [SCOI2009] 生日礼物 队列

    题目描述 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩珠也可以出现在 ...

  7. 【IDEA】Error: java: Compliance level '1.6' is incompatible with target level '1.8'. A compliance level '1.8' or better is required解决办法

    在运行的时候常常出现如下错误: Error: java: Compliance level '1.6' is incompatible with target level '1.8'. A compl ...

  8. 紫书 例题 10-6 UVa 1635 (二项式定理+唯一分解定理)

    首先可以发现按照题目的算法最后得出来是一个杨辉三角 如果ai的系数是m的倍数,那么i即为答案 因为这个系数可能很大,而我们只需要判断倍数 所以我们就把m分解质因数,然后判断每一个系数 的质因数的幂是不 ...

  9. 紫书 例题 10-17 UVa 1639(数学期望+分数处理+处理溢出)

    设当前有k个,那么也就是说拿到其他图案的可能是(n-k)/n 那么要拿到一个就要拿n/(n-k)次 所以答案就是n(1/n + 1/(n-1) ......1/2 + 1 / 1) 看起来很简单,但是 ...

  10. Unity 给FindGameObjectsWithTag排序

    GameObject[] patrol = GameObject.FindGameObjectsWithTag ("Player").OrderBy (g => g.tran ...