ChinaUnix首页 > 精华文章 > SCO UNIX > 正文

[原创] 在sco unix5.0.X下如何用u盘代替软盘


http://www.chinaunix.net 作者:yousiliang  发表于:2008-04-11 16:25:14
发表评论】 【查看原文】 【SCO UNIX讨论区】【关闭

在sco unix5.0.X下如何用u盘代替软盘
在sco unix 5.0.x下,由于软驱结构和软盘的质量问题,使得软盘读写速度非常慢,容量小,而且软盘非常容易损坏,因此使用u盘代替软盘,势在必行。本文通过将金田公司u盘驱动程序作为sco unix 5.0.x下通用驱动程序,简单介绍一下如何在不修改原程序情况下,使用u盘代替软盘,轻松进入sco unix 下u盘时代。
 u盘驱动采用sco unix 5.x通用优盘程序(金田公司的GF03系列U盘的驱动程序,感谢金田公司)
   安装步骤:
        1)将驱动拷贝到dcc主机(最好不要拷贝到/tmp目录),如果你安装了 rs506a补丁,你需要卸载usb支持,在安装 pkgadd -d /install/scousb.pkg (驱动包scousb.pkg放在/install),选择 1 即可安装完驱动。
        2)使用 mkdev hd ,选择 4 安装 usb 硬盘,id 号,和 lun 号都输入 0 ,其它输入"y",再重启主机。
        3)进入cmos,看看是否有usb2.0控制开关,有的话你必须disable它,否则插入u盘会死机的,如我们的联想M4700就必须将usb2.0 diable。
        4)插上u盘,以root用户进入系统,再用 mkdev hd 命令 ,再选择 4 usb disk,再输入 id 号0,lun 号 0, 并记住设备号如 "Disk already configured as disk number 1 (/dev/dsk/1s0)",表示设备名为 1sa(设备号一般为1sa,如果你的机器有两个硬盘的话,应该是2sa,0sa是你的unix主机硬盘,下面的fdisk和divvy 都选择q退出,注意u盘最好将它格式化为2G以下的fat分区否则可能有问题,该驱动大部分u盘都能正确识别,目前测试的有 红叶,apacer ,朗科,前两个都很正常,但是朗科每读写一次,需要重新插拔一次。
        5)由于待发工资使用的设备名是/dev/fd0,我们只需要将/dev/fd0备份后删除,用u盘设备文件覆盖/dev/fd0即可:copy /dev/dsk/1sC /dev/fd0 (注意1sC还是2sC,取决于你上面第4步显示的设备名),这样你的 待发工资就可以用u盘了。如果你怕系统有的地方不是用/dev/fd0表示A盘,那么你可以继续修改,将文件/dev/install,/dev/rfd0135ds18备份后删除,copy /dev/dsk/1sC /dev/install,copy /dev/dsk/1sC /dev/rfd0135ds18,如果你要使用软驱,你就使用你先前备份的 fd0,install,rfd0135ds18设备名即可(可以通过/etc/default/msdos,/etc/default/tar,将A软驱定义B,假设你的A驱设备文件备份名为:/dev/fa0 ( major:2 minor:64),在/etc/default/msdos中将B=/dev/install1,修改为B=/etc/fa0,在/etc/default/tar文件中修改即可将archive0=/dev/rfd048ds9,修改为archive0=/dev/fa0,你就可以通过doscp b:拷贝A驱dos文件,tar xv0驱读取A驱unix文件 )
系统稳定性:系统稳定性不用担心,因为驱动实际上是厂家从linux移植过来的。朗科的很讨厌,反正我试的时候,每读写一次,都需要重新插拔一次。容量多少无所谓,只要有FAT分区就行,我把三星的移动硬盘分了个2G的fat空间,读写都很正常,牌子上反正我现在测试过的红叶和apacer 1G u盘,40G三星移动硬盘都很合作, 但是如果你要使用usb延长线,你必须使用质量好的,否则会发生写错误,u盘会报空间不足,然后u盘死锁,这时如果你强行拔掉u盘的话,unix立马死机,所以在你没有好的延长线之前,你只能直接插到主机后面的usb接口。
提示:
1)由于驱动安装后/opt/K/SCO/Unix/5.0.6Ga/bin/ls 会被修改,所以/bin/ls和/bin/lf显示会不大爽,象在用linux,aix一样,如果你备份了的话,恢复ls就可以了,没有的话ftp一个把 /opt/K/SCO/Unix/5.0.6Ga/bin/ls覆盖就ok了。
2)/dev/install 和 /dev/fd0必须是块设备,字符设备的话,假如你的应用程序有使用 doscp $HOME/print/cjmx* /dev/fd0 格式的话,写u盘会失败。因为字符设备不支持这种命令格式,我们只能用“doscp $HOME/print/cjmx* /dev/fd0:."格式才会成功,如果我们不能去修改程序的话,就只能改设备格式。
3)/dev/install 和 /dev/fd0,读写权限必须赋予普通用户。
如:brwxrwxrwx 1 dos sysinfo 44, 48 Mar 5 11:20 install
    brwxrwxrwx 1 bin bin 44, 48 Mar 4 16:44 fd0
4)由于块设备速度较慢,通常u盘格式化时分配的单元大小多是5120字节(5k),这样在unix 下使用起来速度很慢,感觉象在用软盘,因此你可以将u盘的单元大小格式化为32K(当然分区类型必须是FAT分区,大小在2G 以下)。这样你会发现u盘速度提高很快,有点象硬盘啦,我们终于可以将该死软盘软驱扔进垃圾桶了。

                                                     四川泸州  游思良  2008/3/5

             附驱动: [attach]237295[/attach]

scousb.rar



 光速 回复于:2008-03-07 13:02:58

我前段时间费了九牛二虎之力才买到一款软区:em03:


 vboy 回复于:2008-03-07 15:32:53

收藏学习下下:wink:


 sdccf 回复于:2008-03-07 17:46:18

如果能支持当前市面上各个品牌的U盘就好了。

[ 本帖最后由 sdccf 于 2008-3-7 17:48 编辑 ]


 光速 回复于:2008-03-07 18:36:15

引用:原帖由 sdccf 于 2008-3-7 17:46 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8052365&ptid=1062163]
如果能支持当前市面上各个品牌的U盘就好了。 


是呀!


 xiao_lin 回复于:2008-03-08 07:51:28

金士顿U盘支不支持呢?


 yousiliang 回复于:2008-03-08 12:21:58

我手头上有的4种品牌的优盘,除了朗科的每读写一次需要重新插拔一次外,其它几个牌子包括
划分有fat分区的40G移动银盘都没有问题,大家手里有的它牌子的u盘,只有大家测试,反正这款驱动程序是最兼容的unix5.0.X通用u盘驱动了。有问题可以大家可以发邮件到[email]yousiliang@sina.com[/email],欢迎大家探讨提高.


 xxhe 回复于:2008-03-08 21:56:25

这个比较有用,收下了


 xiao_lin 回复于:2008-03-10 10:28:02

我的金士顿U盘认了,开机信息都有看到,请问:我不想修改软驱及其它,该如何访问U盘呢?要mount设备名吗?该是那一个呢?

[ 本帖最后由 xiao_lin 于 2008-3-10 10:33 编辑 ]


 xiao_lin 回复于:2008-03-10 11:02:45

我使用mount /dev/dsk/1sC /mnt  或 mount /dev/dsk/1s0都提示:

mount: can not stat '/dev/dsk/1sC':No such device or address (error 6)

除了改软盘设备名(fd0)我没做,之前的步聚都做了啊???


 xiao_lin 回复于:2008-03-10 13:18:30

另外:可能:是这里的问题,我mkdev hd一切顺利到最后有提示:“/etc/badtrk: cannot open /dev/rdsk/1sa for ioctl"
这怎么解决呢???


我在win2000下将U盘格式化为FAT格式,容量是512MB。 
设备号是/dev/dsk/1s0  两个U口都插过了8行呀!

badtrk扫描磁盘这个为什么8行呀?

[ 本帖最后由 xiao_lin 于 2008-3-10 13:26 编辑 ]


 yousiliang_ 回复于:2008-03-10 14:58:37

不好意思密码忘记了,换了个用户名.
该驱动的io控制不支持 badtrk ,你的问题出在fat分区上,可能是你在做fdsk的时候,选择过创建unix分区.
你最好再做一次 mkdev hd,在fdsk的时候选择删除所有分区,再到win2000下,进入磁盘管理创建分区卷,然后到dos下,用format
/fs:fat /a:32k u盘盘符,重新格式化再试.


 xiao_lin 回复于:2008-03-10 17:03:26

试了一下,还48行啊???

提示:mount: can not stat '/dev/dsk/1sC' :No such device or address (error 6)


 yousiliang_ 回复于:2008-03-10 18:14:39

mkdev hd一切顺利,就表示fdisk,divvy都通过了,如果系统没有找到usb硬盘,你在mkdev hd就会报“can not stat '/dev/dsk/1sC' :No such device or address (error 6)”。
说明一下,该驱动可以通过设备名/dev/dsk/1sC进行读写,如dosdir /dev/dsk/1sc 列u盘文件,doscp /dev/dsk/1sC:/test . 拷贝u盘的
test 文件到当前目录。但是u盘是不能被mount的,一mount就会报core 失败。

[ 本帖最后由 yousiliang_ 于 2008-3-10 18:16 编辑 ]


 zpdd 回复于:2008-03-10 21:28:53

有时间试一下,谢谢!:handshake


 空中大侠 回复于:2008-03-11 09:38:06

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶这样好的帖子不顶顶什么样的帖子!!


 xiao_lin 回复于:2008-03-11 09:47:11

引用:原帖由 yousiliang_ 于 2008-3-10 18:14 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8061162&ptid=1062163]
mkdev hd一切顺利,就表示fdisk,divvy都通过了,如果系统没有找到usb硬盘,你在mkdev hd就会报“can not stat '/dev/dsk/1sC' :No such device or address (error 6)”。
说明一下,该驱动可以通过设备名/dev/d ... 




查了一下5.0.7的U盘使用方法,在mkdev hd 最后一步应该是:

Do you wish to specify an active UNIX partition? (y/n) n

scsi version = 1
vendor = KINGSTON
product = USB DRIVE
Can't read bad block table: No such device or address

Hard disk initialization procedure completed. 




而我的(我的系统是5.0.6),则提示:

Do you wish to specify an active UNIX partition? (y/n) n
/etc/badtrk: cannot open /dev/rdsk/1sa for ioctl

Hard disk initialization procedure completed.

#
mount不上,
用dosdir /dev/dsk/1sC
dosdir: can't open /dev/dsk/1sC

就是不成功,:emn53: 


:emn53: LZ大哥提到5.06不能打那个补丁包,我印象中没打过(怎么看系统是否打了补丁呢?)重装一遍驱动行不行?用不用先卸载啊???


 yousiliang_ 回复于:2008-03-11 12:43:30

1.检查核心是否识别到u盘: hwconfig -h
如: 
adapter        -        -   -  ha=0 type=usb_msto UDI SCSI HBA
disk      0x170-0x177  15   -  type=W1 unit=0 cyls=4863 hds=255 secs=63
usb_ehci       -        9   -  PCI bus=0 dev=29 func=7
usb_uhci       -       11   -  PCI bus=0 dev=29 func=0
usb_uhci       -       10   -  PCI bus=0 dev=29 func=1
usb_uhci       -       11   -  PCI bus=0 dev=29 func=3
disk           -        -   -  type=S ha=0 id=0 lun=0 bus=0 ht=usb_msto unit=0
Sdsk           -        -   -  cyls=30960 hds=2 secs=32 unit=0 fts=d
Sdsk-0         -        -   -  Vnd=Netac Prd=OnlyDisk Rev=1100

正常的应该有Sdsk-0 类似的显示(我的是朗科的优盘)    

2.用fdisk命令再选择1  检查是否dos设备分区
# fdisk -f /dev/rdsk/1sC

        1. Display Partition Table
        2. Use Entire Disk for UNIX
        3. Use Rest of Disk for UNIX
        4. Create UNIX Partition
        5. Activate Partition
        6. Delete Partition
        7. Create Partition

Enter your choice or 'q' to quit: 1

Current Hard Disk Drive: /dev/rdsk/1sC

        +-------------+----------+-----------+---------+---------+---------+
        | Partition    | Status  | Type      |   Start  |     End |    Size |
        +-------------+----------+-----------+---------+---------+---------+
        | 4               | Active   | DOS (32)  |       1 |   61749 |   61749 |
        +-------------+----------+-----------+---------+---------+---------+

Total disk size: 61920 tracks (3 reserved for masterboot and diagnostics)

Press <Return> to continue

注意: Partition  和 type ,Partition,必须有数字,type 必须有 dos(*)字样,没有就说明的fat分区有问题。
例如:
1. Display Partition Table
        2. Use Entire Disk for UNIX
        3. Use Rest of Disk for UNIX
        4. Create UNIX Partition
        5. Activate Partition
        6. Delete Partition
        7. Create Partition

Enter your choice or 'q' to quit: 1

Current Hard Disk Drive: /dev/rdsk/1s0

        +-------------+----------+-----------+---------+---------+---------+
        | Partition   | Status   | Type      |   Start |     End |    Size |
        +-------------+----------+-----------+---------+---------+---------+
        | 4           | Inactive | TYPE 14   |       1 |   62975 |   62975 |
        +-------------+----------+-----------+---------+---------+---------+

Total disk size: 62976 tracks (3 reserved for masterboot and diagnostics)

Press <Return> to continue
1. Display Partition Table
        2. Use Entire Disk for UNIX
        3. Use Rest of Disk for UNIX
        4. Create UNIX Partition
        5. Activate Partition
        6. Delete Partition
        7. Create Partition

Enter your choice or 'q' to quit: q
WARNING: There is no ACTIVE UNIX partition.

Do you wish to specify an active UNIX partition? (y/n) n
/etc/badtrk: cannot open /dev/rdsk/2sa for ioctl

Hard disk initialization procedure completed.

你可以用:
  1.#fdisk -d 4 -f /dev/rdsk/1s0 删除分区,注意不要搞错哈
  2.#fdisk -c 4 1 62975 -t DOS_32 -f /dev/rdsk/1s0  创建FAT分区 
(注:我的优盘大小62976 tracks,你的优盘大小可以通过 fdisk -p -f /dev/dsk/1s0,察看)
  3.#dosdir /dev/dsk/1sC
 Volume in drive /dev/dsk/1sC has no label
 Directory of /dev/dsk/1sC:/

ACE          <DIR>    12-27-07   6:28p
        1 File(s)  1025458176 bytes free

你会发现你终于成功了

[ 本帖最后由 yousiliang_ 于 2008-3-11 13:21 编辑 ]


 xiao_lin 回复于:2008-03-11 13:50:51

引用:原帖由 yousiliang_ 于 2008-3-11 12:43 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8064021&ptid=1062163]
1.检查核心是否识别到u盘: hwconfig -h
如: 
adapter        -        -   -  ha=0 type=usb_msto UDI SCSI HBA
disk      0x170-0x177  15   -  type=W1 unit=0 cyls=4863 hds=255 secs=63
usb_ehci       ... 




我我终于成功了,太谢谢yousiliang_您了,为什么MOUNT不行呢?这我已经很知足了,谢谢您.


 xiao_lin 回复于:2008-03-11 14:08:30

奇怪,我的VI编缉在普通用户下不能用了:

vi filename
vi: error creating a temporary file in the directory /tmp/Ex00582: Permission denied (error 13)

出什么事了?所有普通用户都这样,root好使,我动哪了?在帮帮我吧。


 xiao_lin 回复于:2008-03-11 15:16:01

不知为什么/tmp目录其它用户没有写权限了,加上就好了,奇怪根本没动它呀


 yousiliang_ 回复于:2008-03-11 15:39:27

你是在普通用户下还是root用户下,检查/tmp权限


 unixzyy 回复于:2008-03-11 18:19:06

楼主是建行的吧.


 xiao_lin 回复于:2008-03-12 09:21:58

再一次特别感谢楼主无私提供这么好的东西,软盘我已不用了。


 yousiliang_ 回复于:2008-03-12 09:40:06

朋友,这能看出来吗?

[ 本帖最后由 yousiliang_ 于 2008-3-12 09:44 编辑 ]


 yousiliang_ 回复于:2008-03-12 09:42:47

不用客气,曾经我也是苦苦寻觅。驱动是别人提供的,我也只是谈谈使用心得,哈哈


 aqnhlzl 回复于:2008-03-13 14:52:55

这个比较有用,收下了


 kangji 回复于:2008-03-15 21:24:46

学习下


 xiao_lin 回复于:2008-03-20 14:59:12

在次请教楼主,出了一个问题,就是:从windows往U盘里拷了两个目录,这两个目录下都有二十几个文件,结果在SCO下dosdir查看目录下的文件只有6、7个文件,doscp拷出来也是一样,少了那么多文件哪去了???,而且我把U盘无论拿到win下或linux下查看都正常,一个都不少,奇怪了,这些文件都是.txt文本,没什么特别的,奇怪了,您试试有没有这个问题啊!!!?


更正一下:要是使用通配符就如上面所说的,要是指定文件又可以列目录拷贝了,这对于我们的要求不行的。还望指点指点,谢谢

[ 本帖最后由 xiao_lin 于 2008-3-20 15:20 编辑 ]


 yousiliang_ 回复于:2008-03-21 15:44:03

dosdir 确实有问题,不过你可以将u 盘mount 到指定目录上,原来以为mount会不成功,还来才发现只要将分区u盘在windows下格式划后
都可以正常mount. 格式化命令为:  format /fs:fat /a:32k  u盘符号,mount后你用unix命令列文件吧


 jxxfjun 回复于:2008-03-22 09:41:40

呵呵,我以为我是世界上最后一个使用SCO5的人了,有意思:mrgreen: :mrgreen:


 刘世伟 回复于:2008-04-06 22:09:11

文中提到, 金田公司从linux移植u盘驱动到 sco,
这是证据确凿的侵犯GPL的行为。 看来不是linux侵权,而是sco侵权。哈哈。


 yousiliang 回复于:2008-04-11 16:25:14

不好意思,金田公司的部分驱动代码是不是从linux移植,仅是个人的猜测,也有可能来源于unixware,或则人家完全独立开发,但无论如何我们都得感谢他。有得用就行了,哈哈!




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=1062163
转载请注明作者名及原文出处