Linux9.01 不能识别 SATA 硬盘
作者&投稿:野贴 (若有异议请与网页底部的电邮联系)
如果是自己做实验的话,完全可以使用VMware workstation或者virtualbox来安装,是一样的,没必要非在PC上安装,因为linux对PC的支持不是很好。
楼上的回答好像不大对吧,LVM只是个逻辑卷管理器,没有它照样可以管理多块硬盘的。Linux的文件系统结构和Windows完全不一样,前者是有一棵目录树,所有的设备都被挂载到树上的某一个结点上;而后者是面向设备的,用C、D、E这样的标识符来确定不同的设备。楼主可以先学一下Linux的文件系统结构。 由于楼主提供的资料不全,所以可以试一下:命令行切换到根用户$ su -password:# 挂载第二块硬盘到/mnt# mount /dev/sdb1 /mnt如果没有错误提示,说明已经把第二块硬盘的C分区挂载到了/mnt下,这时候可以cd进去看了。如果想挂载D盘,就# mount /dev/sdb5 /mnt注意是sdb5,不是sdb2,通常情况下sdb2是扩展分区,sdb5是第一个逻辑分区。E盘就是sdb6sda是第一块硬盘,sdb是第二块。挂载完之后卸载:# umount /mnt
可以多关注《Linux就该这么学》这本书,我都是从这里面学到的
希望它在对任何有兴趣把Linux操作系统安装到外部设备的人有所帮助。
原始的网址http://www-128.ibm.com/developerwor...l-fireboot.html
从火线设备上启动Linux
可移动驱动器上安装Linux操作系统
难度等级:中等
Martyn Honeyford(martynh@uk.ibm.com) IBM英国实验室 软件工程师
宣可达(austin.dada@gmail.com)翻译 webzi@linuxsir
2004年7月15日
2005年7月26日开始翻译,7月28日完成。
翻译经验不多。如有不妥,欢迎EMAIL交流。
使用一个外部驱动器是一个极棒的方法,能给你的老硬件带来新生和让你在你不能(或者不想)改变内置硬盘的计算机上使用Linux系统。
假设你想使用Linux在一个双启动环境,但是你的计算机硬盘又没有任何空余的空间。一种解决方法是使用"live"的linux发行版本象是Knoppix,他们这能直接从CD启动运行。 对于偶尔使用,这是一种可行的办法,但是它有若干的劣势:
*你将会仍然需要些固定文件存储。如果你只是操作少量的文件,一张1.44MB的磁盘就可以胜任,或者一个USB闪存棒适合中等量的文件,但是这些都不够理想。
*当使用一个LiveCD 的时候,最困难、最糟糕、最不可能的是安装你自己的应用程序或者定制现存的程序。
*使用LiveCD在性能上的牺牲,在启动初所有的设备检测时尤为明显,同样发生使用中(所有的文件从 CD 载入通常是比从硬盘中载入慢的多)。
的确,还有其他可选方案。举例来说,你可以买额外的内置驱动器并且在此安装Linux操作系统。但是常常,你可能没有任何空闲的扩展阜。(这特别容易发生在笔记本上,通常他们只允许一个内置硬盘。)
或者,你可以使用一个较大的硬盘取代当前的硬盘, 获得额外空间用于安装 Linux操作系统。 然而,这的确是一个耗费大量时间的方案,需要你重新安装现有的操作系统在新的硬盘, 重新安装和配置你所有应用程序, 和恢复所有数据。
更好的解决方案是购买一个外置硬盘并安装 Linux操作系统。 这样使得你在想使用Linux系统时候不必涉及现有的硬件和软件而只是简单连接外部驱动器。
可选的可移动设备
可用于安装Linux操作系统设备涵盖磁盘驱动器、USB-闪存设备、通过USB/火线连接的硬盘等等。
在一个小容量的设备中安装linux是可行的,例如在一个1.44MB的磁盘或者一个32MB的USB棒中,他们通常(必须)为特定目的定制,采用裁减的发行版本,例如,拯救中断的安装过程。
外置的硬盘在为使用一个常规目的的linux系统提供最大的灵活性同时,带来一个合理的成本。
许多不同的厂商提供许多种不同容量的外置的驱动器。 (Maxtor, 西西部数据, 等等)。这些驱动器还会包含一个外置盒子,用于固定标准的 3-1/2 寸或 2-1/2 寸 IDE 硬盘。 然后这些驱动器经由 USB 或 IEEE1394(火线) 连接到计算机。
USB 受到在二个主要的版本中的影响,1.1 和 2.0. 1.1 版速度为12 Mbit/ s(每秒1Mbit) ,而 2.0 版支持最高达到 480 Mbit/s 的传输速度。 大多数2.0相容的驱动器也向后兼容1.1,通常建议尽量不要采用1.1接口除非没有其他的选择(因为其低速不适应此环境。)
火线标准也定义若干不同的速度, 实际上,大部分人所指的FireWire ,是“FireWire400”标准 ,支持最大传输速度为 400 Mbit/s 。
USB2.0和火线在速度上不分伯仲: 虽然 USB 2.0 有比较高的传输速度, 但是实际中因为协议的不同两者速度十分的接近。 如果你的计算机拥有2种接口, 最好使用USB而非火线(理由我将后将解释), 但是如果只有火线接口,当然你就选择它了。为了实现最大的灵活性, 可以选择众多同时支持 USB 2.0 和火线的驱动器中的一种。(像我稍后将在这一个文章中使用的那个一样。)
对于那些没有必须的接口, PCI(对于桌面) 和 PCMCIA(对于笔记本型电脑) ,现在火线和USB 2.0扩展卡也并非贵不可及: 举例来说, 我稍后将在文章中提及PCMCIA火线扩展卡大约为10英镑.($20 美元以下)
为了达到本文的目的,我已经购买 5-1/4寸外置驱动器的硬盘盒。 这是一件非常灵活的硬盘盒,并没提供驱动器而且能固定任何的标准 IDE 设备,包括 3-1/2 寸驱动器和像CD-RW/DVD-RW等5-1/4 寸 IDE 设备 。硬盘盒兼有 USB 2.0 和火线接口。
为了把硬盘盒连接到我的IBM Thinkpad T30笔记本电脑,我也购买了一个 PCMCIA 火线转接卡。 ( 因为内置的USB 接口只支持USB 1.1)
硬盘盒和火线转接卡相对比较便宜。 (大约分别为50英镑和10英镑。)
测试期间, 我把一个手边闲置的13 GB 3-1/2 寸 IDE 硬盘放进硬盘盒——对于真实情况,我会买一个较大的容量驱动器, 现在另购一个硬盘相当低廉( 大约每个50英镑!)
Linux 支持
正如你所期待,linux对这些硬盘盒支持的确非常好。任何遵从SBP(串行总线协议)标准的大储存设备在linux中使用非常简单。
大体上, 使对这些装置的支持你能够将会需要在你的核心中支持某些选项( 或直接地编译或通过模块。)
对于USB和火线,SBP 装置通过SCSI模拟来实现-- 也就是说,Linux会把他们当作SCSI硬盘来处理 。 这是在 Linux 世界里面使用存储设备的一个常规方法。 ( 举例来说, IDE CD/DVD设备通常通过SCSI模拟来连接)。基于以上原因,下列的选项需要被内核支持:
* SCSI support
* SCSI emulation
* SCSI disk support
除此之外,不同连接方式需要一下的内核支持:
* 针对火线:
* IEEE1394 support
* OHCI1394 support
* RAW1394 support
* SBP-2 support
* 针对USB:
*(host-side) USB support
* OHCI support
* UHCI support
* USB mass-storage support
明显地,你还必须为其他的硬件 ( 如显卡等等)编译常规的支持, 而且可能需要一些额外的模块,取决你的具体硬件。
举例来说,我正在使用 PCMCIA(cardbus) 火线转接卡,因此,我还需要增加:
* PCMCIA support
* cardbus support
安装
现在我们有很完美外置驱动器,我们将开始安装在其安装Linux美妙之旅。
目前最简单的安装linux方法(当然仅个人意见) , 是连接你的所有硬件;(我的情况是,插入火线转接卡,连上转接线盒驱动器,然后打开驱动器的电源) 然后从你选择的发行版安装CD上启动你的计算机。
我采用的发行版是Gentoo(资源详见链接),因此,我用了最新的 “通用”x86 LiveCD。 (2004.1) 其他的发行版本必须的步骤大致和此相似。
一旦你使用安装CD启动,要藉由一点运气让他要辨认出你的驱动器。 磁盘应该出现在/dev/sdX, X 是一个小写字母从“a”开始。 在我的系统上,外置硬盘被当做 /dev/sda, 但是如果你有其他的 SCSI硬盘,这数字将会改变;( 或模拟了SCSI硬盘) 那种情况下,它可能是 /dev/sdb 或一些其他的字母。 如果你的驱动器不能被自动检测到, 就需要进一步采取措施 -- 举例来说,你可能必须打开启动选项使用火线或者PCMCIA接口, 或你可能必须手动装载一些内核模块 , 或其他一类选项。 (资源详见故障发现与维修指导链接)
一旦驱动器被辨认出来,安装过程种其运作起来就像一个内置的硬盘。然后就你可以对其分区并且用常规方法安装linux。
有一句话我着重要提醒,小心选择何处安装boot loader(通常是GRUB和LILO)--我建议不要装到主引导记录(MBR)中( 通常是默认值) 而是装到外置驱动器的根分区 ( 或/boot分区,如果你单独分了一个话)。
既然我们已经安装 Linux 在这个设备上,我们想要从上面启动它。 事情到此开始变的有点复杂了。
启动
在我前讨论在如何的新驱动器上面启动,我要讲解一些boot loader的小知识。
boot loader程序通常安装在计算机的第一个硬盘的MBR上。 当boot loader被调用 (BIOS自动地运行MBR里的代码),它通常显示一份可启动操作系统的菜单。以便选择一个给定的操作系统启动计算机。
两件细节在这个章节中应该注意:
* 操作系统选择菜单(通常)从磁盘中载入。
*为了启动有关的操作系统, boot loader 需要从磁盘中读取相关的内核。
在操作系统被装载之前 ,以上各步骤已经执行,这意味着所有的磁盘读取在BIOS调用时。 这是一个必须的前提,即,为了直接启动磁盘,你的 BIOS必须支持通过火线或USB被连接的磁盘。通常能在BIOS中看到关于从这些设备上启动选项。 火线BIOS支持现在的确非常的少见,但是 USB 支持正在变得相当的平常。 因此,如果你正在使用一部相对比较新的计算机上的USB接口,应该可以直接启动驱动器进Linux。
当经由 USB 连接,在安装外部的驱动器的 MBR 的幼虫之后,我能够直接地启动它。 当以被连接的磁盘片启动的时候,只是进入 BIOS 装备公用程序。 外部的磁盘片将会出现如一个一般的硬盘: 移动它,如此它在启动次序中的内在驱动器之前。
我也能够在一个内置的硬盘的MBR上安装一个boot loader而且使用其启动USB硬盘(在GRUB中被成为hd1)。 如果你正在使用火线, 有可能你的 BIOS 将会无法直接地启动硬盘,而且你需要更多一点步骤。
幸运的是,由于 Linux 的多样性,这有非常容易解决,如果你不能直接地启动,( 我就是这样的情况,使用一个PCMCIA转接卡!) 你能运行初始启动步骤,来自一个支持的设备 , 像是一台软驱,CD-ROM,USB棒,或在主硬盘上的小分区, 然后使用外部的驱动器继续其他步骤。
创建一个启动镜像
我们有2种方法启动:
*单阶启动
内核启动, 挂载根分区文件系统, 接着调用初始化教本继续初始化( 通常是/sbin/init)
*双阶启动 (initrd)的启动
内核启动,挂载一个初始ram disk (initrd),进一步运行定制的初始化, 然后挂载根分区文件系统继续初始化(同样, 通常调用/sbin/init)
每种方法都有它自己的优点和缺点。
单阶启动
为了要使用一个单阶的启动,我们需要建立一个内核包含挂载一个根分区文件系统所需的所有驱动程序。( 任何其他的驱动能作为模块编译并在根分区载入时候进行常规初始化。)
如果我们正在从像软盘这样的一个非常小的装置尝试启动, 最好的方式是创建的一个正合适内核,编译进所有挂载根外部分区系统所需驱动 -- 而且编译其他的作为模块。 举例来说,我的内核编译进了SCSI支持, PCMCIA 支持, IEE1394 , SBP ,和其他相似的支持, 但是其他的(包括显卡支持,网络设备支持,等等)当做模块编译并储存在根分区上(在外部的驱动器的),而不是存储在软盘上。
这种方法的主要问题是需要我们给内核源代码打补丁-- 那是一种最糟糕的痛苦(当新的内核发布),而真正的问题是如果补丁没有在维护,这样就不能跟上内核的变化。
你可能以为如果计算机BIOS支持USB和火线直接启动,我们能避免发生以上的2个问题。 不幸地,事情不是这样:这一个方法使用BIOS在启动时调用磁盘,一旦内核开始初始化, BIOS就失去了作用,而且使用内核驱动来调用磁盘-- 所以你仍然会碰到同样的问题。
二阶启动
内核2.0.X版本 ,添加了一个有趣的功能到内核 -- 使用“initial RAM disk(初始内存磁盘)”(or initrd)来实现二阶启动。
简言之,内核一概既往的启动;挂载一个创建在内存里迷你的根分区文件系统取代挂载“真正”的根分区系统。 无论任何命令都在这个初始环境中执行在“真正”的根分区系统被挂载之前直到我们切换到真正的根分区文件系统并销毁初始内存磁盘(initial RAM disk)。
这点在各种环境中都非常有用,但是我们的目标仅仅是简单的利用我们的迷你环境去重新扫描SCSI总线,等待外部驱动器识别,然后用它切换到我们真正的根而后继续启动。
使用这种方法,我们需要创建2个文件,一个内核和一个初始镜像文件。
内核仅是一个内建启动镜像(initrd)支持常规内核。 initrd 镜像是一个包涵我们迷你根分区系统的环路(loopback)文件系统镜像。 (该镜像可以有选折地使用gzip压缩来减小它的大小)。
你能在资源章节里找到关于如何创建和定制你自己的初始镜像的更多信息。
在镜像文件里,有一个linuxrc的文件。当镜像给载入时,该文件自动运行,所以请确定其有运行权限!为了达到我们的目的,linuxrc文件非常的简单:
列举 1. initrd linuxrc
#!/bin/sh
REAL_ROOT=/dev/sda1
# mount the /proc filesystem
mount -t proc none /proc
#for scsi-emulation (SCSI模拟)
# modprobe sd_mod
#for pcmcia (PCNCIA卡)
# modprobe pcmcia_core
#for FireWire (火线)
# modprobe ieee1394
# modprobe ohci1394
# modprobe raw1394
# modprobe sbp2
#for USB (USB)
# modprobe usbcore
# modprobe ohci-hcd
# modprobe uhci-hcd
# modprobe usb-storage
# loop rescanning the scsi bus + rerunning devfsd
retries=5
i=1
until [ -e $REAL_ROOT ]
do
if [ $i -gt $retries ]
then
echo "Unable to mount real root ($REAL_ROOT) - Giving up!"
/bin/ash
exit
fi
echo "Real root ($REAL_ROOT) not found, retrying ($i)"
sleep 1
echo "scsi add-single-device 0 0 0" > /proc/scsi/scsi
echo "scsi add-single-device 1 0 0" > /proc/scsi/scsi
echo "scsi add-single-device 2 0 0" > /proc/scsi/scsi
/bin/devfsd /dev -np
i=$((i+1))
done
#umount /proc as it will be remounted by the normal init process
(解除挂载/proc分区当它会给常规的INIT进程重新挂载)
umount /proc
#now we simply exit, and the normal boot process should continue
(现在我们可以退出了,常规的启动进程将会继续)
exit 0
我们正在做的是载入适当的模块去支持外部驱动器: 请按需注视相应行。 (我把所有需要的支持编译进内核,因此不需要模块)。 然后循环, 再扫描 SCSI 总线 (回应一个命令到/proc虚拟文件系统下一个特别文件并调用devfsd程序) 直到根分区设备出现(我的情况是/dev/sda1 )。在我的情况,被访问的火线模拟SCSI总线是1 0 0,但是并不影响尝试部分其他的总线 -- 如果你知道将会使用哪一个,你可以裁减这个教本。 同时, 如果你有其他的 SCSI 设备 (或模拟 SCSI设备), 驱动器可能有一个不同的字母。(例如,/dev/sdb1) 而且如果你没有使用外置驱动器上的第一个分区, 你将会需要使用一个不同的数字。( 例如,/dev/sda2)
现在我们需要做的全部是复制相关的文件进initrd镜像.( 你能够使用mount -o loop 命令挂载未压缩的镜像)尤其,我们需要确定我们有 linuxrc 文件、所有被用到的命令和其依赖的库。 这个(未挂载的)镜像可以有选折的压缩。
复制内核 (bzImage) 和 initrd 镜像 (initrd.gz)到磁盘。
最后的步是在磁盘上安装一个boot loader, 而且用下列的选项启动内核: kernel bzImage root=/dev/sda1 initrd=initrd.gz.
你现在应该可以使用磁盘来启动了:它会从软盘中载入内核,载入initrd镜像入内存,然后从那里继续常规启动。这点以后,磁盘就可以拿开了。
如果磁盘不合适 ( 例如,计算机没有软驱),任何设备在BIOS能用于启动都可以使用。 个人而言,我就使用一个小小的32MB的USB棒来达到这个目的。
参考资料:
http://www.linuxsir.org/bbs/showthread.php?t=211021
9.01太老了,随便你怎么改都一样
为什么不装红帽子最新的FC5呢,直接支持SATA2.5硬盘。
linux内核要2.4.27以上版本才能完美支持SATA的……
楼上的都太多废话了而且都没有用.一般的XP装不上的..去买适合SATA接口系统如:番茄花园 V2.7
学习!
支持的~ 可能是没设置好,linux要设置必须支持大硬盘才行
linux内核要2.4.27以上版本才能完美支持SATA的……
戴和阿立: 新手建议安装:Ubuntu 没有安装盘,可以从网上下载,然后刻盘.或者在官网免费订购CD.redhat9相当于windows世界里面的win95,你想想学它干嘛.sata驱动都是内核自带的,不用自己装.
九江县13991746713: 件或目录/WINNT/TASKS/SA.DAT已损坏且无法读取.请运行CHkdsk工具? - ?
戴和阿立: 开始--运行--输入CMD,然后出现命令提示付,输入 chkdsk/f 然后有提问的话都选择Y,就可以了
九江县13991746713: 数据库sa无法设置、、、什么情况?求解决?
戴和阿立: 重装一遍数据库算勒,设置登陆模式的时候选Windows身份验证就行了,选Sa真麻烦
九江县13991746713: SQL的数据库连接错误 指定用户名sa不能连接上怎么解决 - ?
戴和阿立: 你填写密码了吗??服务器地址正确吗??刚刚安装完的一般SA用户没有启用或者没有权限,你可以先用WINDOWS的身份验证登陆进去后,在系统数据库那找到安全性,然后将SA账户启用就可以了,记得启用的时候设置密码哈~!
九江县13991746713: 为什么我的电脑玩不成sa??
戴和阿立: 赛车? 你的这个虽然是Intel的集成显卡,但是也还算可以 检查一下你是否安装了directX9.0以上版本,开始-》运行-》输入 dxdiag 查看directX版本
九江县13991746713: vb与数据库连接不上 用户sa登陆失败 - ?
戴和阿立: 这个有可能是你在安装SQL SERVER2005的时候验证模式没有设置好.1.选中服务器(右键)->属性->安全性->服务器身份验证修改为"SQL SERVER和WINDOWS身份验证模式"2.展开服务器上的"安全性"->登陆名->选中SA登陆帐号(右键)->状态->登陆修改为启用.
九江县13991746713: 文件或目录/WINNT/TASKS/SA.DAT已损坏且无法读取.请运行CHkdsk工具? - ?
戴和阿立: 从别人的机器上拷贝一个SA.DAT文件就可以了
九江县13991746713: 总是显示“用户sa登录失败”,请教可能是什么原因 - ?
戴和阿立: 1、数据库需要允许远程连接; 2、数据库服务器要开放1433端口; 3、根据2,数据库服务器的防火墙必须允许你连接1433端口.
九江县13991746713: 用户'sa'登录失败,为什么 - ?
戴和阿立: 先检查: 一、用户名sa的权限是否为:SQL Server 身份验证 二、用户名sa的权限是否为:是否允许连接到数据库引擎 三、用户名sa是否有登录权限 四、看看你的sqlserver服务是不是启动了. 然后使用“windows身份验证”登陆. 登陆成功后,在“安全性”--》“登录名”---》“sa”,右键. 一在“常规”中修改“密码”和“确认密码”,记得把下面的“强制实施密码策略”前的“对勾”去掉. 二在“状态”中设置 “是否允许连接到数据库引擎”里选择“授予”,登陆里选择“启用”. 三单击“确定”. 把sql服务重新启动一次, 即可