Embedded 版 (精华区)
发信人: Zinux (Linux技工), 信区: Embedded_system
标 题: Embedding Linux in a DiskOnChip(转载)
发信站: 哈工大紫丁香 (2001年10月26日18:31:41 星期五), 站内信件
Embedding Linux in a DiskOnChip
michael chang[本站会员]
Embedding Linux in a DiskOnChip
By Michael Chang (michael.zhang@china.com)
本安装手册的目的是介绍如何在Redhat 7.1上安装一块可以引导的16MB
DiskOnChip,
为了与GPL协议兼容,我们将DOC的驱动程序以模块的方式加载。
安装前的准备:
1. 到艾蒙公司的网站www.m-sys.com下载以下两个驱动程序,
DOC_Linux-4.2.2 (DOC的Linux驱动程序,该驱动支持2.4.X的Kernel)
DOC_Linux-4.2.2 (DOC的Linux驱动程序,该驱动支持2.4.X的Kernel)
DOC-DOS-UTILSver4.2 (DOC的DOS应用程序)
2. RedHat 7.1 安装光盘
3. 一块16MB的DiskOnChip
内容:
-----------------
1. 安装RedHat Linux 7.1
2. 解压缩DOC的Linux驱动程序文件
3. 安装 doc-lilo程序
4. 安装DOC的Linux驱动程序TrueFFS for Linux
5. 编译驱动程序
6. 生成 Initrd 文件
7. 做一张备份启动软盘
8. 测试你的DOC
9. 给DOC分区
10. 将Linux的系统文件拷贝到DOC上
11. 使DOC变成启动盘
12. 测试DiskOnChip能否启动
13. 联系信息
1. 安装RedHat Linux 7.1
1. 安装RedHat Linux 7.1
-----------------
安装RedHat Linux 7.1时,最好采用定制方式安装,选中Development和
Kernel
Development,这样就可以安装
上开发工具和Kernel的源代码,其它的内容根据自己的需要选择安装。
为了保险起见,安装时做一张启动软盘,以备不时之需。
如果你在安装时没有安装Kernel 的源代码,可以按以下方法来安装:
将Redhat Linux 7.1的第二安装光盘放入光驱,切换为root用户身份,运行
命令
#mount /dev/cdrom
加载光盘,然后运行下面的命令来安装Kernel的源代码
#cd /mnt/cdrom/RedHat/RPMS
#ls kernel-source-
#rpm -ivh kernel-source-2.4.2-2.i386.rpm
运行以下命令卸载光驱,取出光盘:
#cd /
#umount /mnt/cdrom
#eject cdrom
2. 解压缩DOC的Linux驱动程序文件
---------------------------------
将我们下载的DOC的Linux驱动程序拷贝到/tmp目录下,运行下列命令:
#cd /tmp
#tar zxvf /tmp/DOC_linux-4.2.2.tgz
会在你的/tmp目录下生成一个doc-linux-4.2.2的目录,这个目录里的内容
就是
DOC的Linux驱动程序。
3. 安装 doc-lilo程序
-------------------
标准的lilo程序不支持DOC,所以我们要用DOC的Linux驱动程序中的lilo来
取代
系统自带的lilo。
系统自带的lilo。
运行下列命令:
#cd /tmp/doc-linux-4.2.2/lilo
#rpm -ivh doc-lilo-0.21-19.i386.rhat62.rpm
将在你的系统中安装下面这两个文件
/sbin/doc-lilo
/boot/doc.b
同时会自动生成/etc/doc-lilo.conf这个文件,我们可以用
#less /etc/doc-lilo.conf
命令来查看该文件。
我们用新的doc-lilo 来取代原有的lilo,运行命令:
#doc-lilo -v -C /etc/doc-lilo.conf
用下面的命令重新启动系统
#shutdown -r now
或者同时按
三个键。
在开机时,你应该看见类似下面的提示符,
dLILO
Low memory: 02CF Kb
如果没有话,就表明你的doc-lilo程序没有正确安装,请按上面的方法重新
安装。
4. 安装DOC的Linux驱动程序TrueFFS for Linux
-----------------------------------
运行下列命令来安装驱动程序:
#cd /tmp/doc-linux-4.2.2/driver
#./patch_linux linux-2_4-patch driver-patch /usr/src/linux-2.4
运行完此命令后,就会在/usr/src/linux-2.4/drivers/block中生成doc这
个目录,?
?
个目录中的文件就是DOC
的Linux驱动程序。
然后运行命令:
./mknod_fl
在/dev/msys目录中生成DOC的设备文件。
5. 编译驱动程序
----------------------------------------
编译Kernel 的源代码和DOC的驱动程序,运行下列命令:
#cd /usr/src/linux-2.4
#make menuconfig
出现选项菜单,可以根据自己的实际需要来选择,这里我们选择以下几项:
Loadable module support
- Enable loadable module support (必需选)
Processor Type and features
- 386 processor family
- 1G Maximum Physical Memory
General Setup
- Kernel support for ELF binaries
Block Devices
- Normal PC floppy disk support
- Loopback device support
- RAM disk support
- M-Systems DOC device support (必需选为模块,选中后按M键即可)
Character devices
- Virtual Terminal
- Support for console on virtual terminal
- Standard/generic (8250/16550 and compatible UARTs) serial
support
Filesystems
- DOS FAT fs support
- MSDOS fs support
- VFAT (Windows-95) fs support
- /proc filesystem support
- /proc filesystem support
- Second extended fs support
Console Drivers
- VGA text console
退出存盘,运行下面的命令编译:
#make dep
#make clean
#make bzImage
#make install
#make modules
#make modules_install
如果发生编译无法通过的情况,可以在运行make dep命令之前先做如下处理
,
#vi /usr/src/linux-2.4/Makefile
找到
HOSTCC = gcc
将其改为
HOSTCC = kgcc
找到
CC = $(CROSS_COMPILE)gcc
将其改为
将其改为
CC = $(CROSS_COMPILE)kgcc
存盘退出,然后重运行上面的命令编译,应该就可以了。
6. 生成 Initrd 文件
----------------------
运行命令:
insmod loop
然后运行命令:
lsmod loop
看是否有loop的显示,如果有的话就代表loop这个模块已经被加载了。
运行下列命令:
#cd /tmp/doc-linux-4.2.2/driver
#./mkinitrd_doc
会在 /etc/lilo.conf-initrd 这个文件中加上
会在 /etc/lilo.conf-initrd 这个文件中加上
initrd=/boot/initrd-2.4.2-2.img
这一行。
运行下面的命令:
#doc-lilo -v -C /etc/lilo.conf-initrd
更新lilo的配置,然后重新启动你的电脑。
7. 做一张备份启动软盘
-------------------------------
为了预防万一,我们做一张DOC的备份启动软盘,运行下列命令:
#cd /tmp/doc-linux-4.2.2
#./mkbootdisk_doc --device /dev/fd0 2.4.2.-2
在盘上贴上标签"Emergency Boot disk - DiskOnChip, doc-lilo".
8. 测试你的DOC
-------------------
将你的DOC插到电脑上,重新开机,你会看到类似下面的几行
Flash disk driver for DiskOnChip2000
Copyright (C) 1998,2000 M-Systems Flash Disk Pioneers Ltd.
Copyright (C) 2000 Lineo
DOC device(s) found: 1
Fat Filter Enabled
fl_init: registered device at major: 100
fl :fl_doc_mount: VOL: 0
fl :debug: entering NFDC 2148 identification routine.
fl :Debug: identified NFDC 2148.
fl :Debug: starting NFTL mount.
fl :Debug: finished NFTL mount.
fla: unknown partition table
partition: 0: start_sect: 0, nr_sects: 7cf0 Fl_blk_size[]:
3e78kb
partition: 1: start_sect: 0, nr_sects: 0 Fl_blk_size[]: 0kb
如果系统运行太快看不清楚的话,可以用
#less /var/log/dmesg
命令查看。
你也可以用命令:
#lsmod
查看是否有TrueFFS 的显示,有的话就代表DOC已经顺利的驱动。
9. 给DOC分区
-------------------------
运行命令:
#fdisk /dev/msys/fla
查看DOC的分区情况,:
p
如果你看见已经有一个DOS分区的话,运行下列命令将其改为Linux分区:
t
1
83
如果显示没有分区的话,运行下列命令创建一个新的分区,你也可以创建多
个分区:
n
p
1
存盘退出:
w
10. 将Linux的系统文件拷贝到DOC上
------------------------------------------
我们把Linux的系统文件拷贝到DOC上,运行命令:
#cd /tmp/doc-linux-4.2.2/build
#./mkdocimg redhat-6.2.files
我们可以根据自己的实际需要编辑redhat-6.2.files 这个文件,添加或删
除
一些文件, 比方如果你不用vi这个文件的话,可以删掉这一行,但在删除
lib
文件时一定要小心。重新启动你的电脑。
11. 使DOC变成启动盘
----------------------------
上面我们已经将Linux的系统文件拷贝到DOC中,现在我们要将DOC做成一个
可
引导的盘。
将我们刚才下载的DOC-DOS-UTILSver4.2 文件在windows下解压缩,然后在
windows下用命令:
C:> format a:/s
制作一张启动软盘。
将解压缩文件中的下列文件拷贝到A盘:
DFORMAT.EXE
DINFO.EXE
DOCxx.EXB
DUPDATE.EXE
DOC42.exb
用这张软盘启动系统,运行命令:
DUPDATE /WIN:{address} /S:DOC42.exb /first
来刷新DOC的firmware部分,使DOC可以启动。在这里,WIN:{address} 是
DOC中
的 8K 驻留内存的起始地址,一般DOC的地址是D000,我们就可以用下面的命
令:
DUPDATE /WIN:D000 /S:DOC42.EXB /first
12. 测试DiskOnChip能否启动
--------------------
重新开机,看系统是否从DOC启动而不是从硬盘启动。如果是从DOC启动,就
代表你已经完成了整个的安装过程。
13. 联系信息
-----------------------
互联网: http://www.m-sys.com
邮件地址:techsupport@m-sys.com
------------------------------------------------------------------------
--------
Copyright 1999,2000, 2001 China Linux Forum
http://www.linuxforum.net/doc/diskonchip.html
--
puke!
技工而已
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.152]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:205.173毫秒