|
1、环境说明
BOOK:CLFS-1.0.0-sparc.pdf
目标机:QEMU 0.10.2,qemu-system-sparc
2、构建过程的问题和解决办法
(1)第7.5节,E2fsprogs-1.39软件包
make失败,LD test_icount时无法连接到dlopen/dlclose/dlsym等外部函数。
解决办法:出错处位于test目录,猜测是test suit,只用于软件包的测试目的,所以决定忽略这个错误。将test目录改名为test--ignore,重新make。
(2)第7.10节,ELFtoaout-2.3软件包
make失败,提示/usr/include/asm/system.h中的类型定义有错误。
解决办法:怀疑是交叉编译的头文件设置错误,决定不编译,待目标机BOOT到临时系统时再编译。
(3)第7.13节,Silo-1.4.11软件包
因为需要ELFtoaout软件包的elftoaout,所以无法编译。
解决办法:待目标机BOOT到临时系统时再编译。
3、内核中的设备驱动程序的配置
QEMU文档中说明了sparc虚拟机的外设类型:
- IOMMU or IO-UNITs
- TCX Frame. buffer
- Lance (Am7990) Ethernet
- Non Volatile RAM M48T02/M48T08
- Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard and power/reset logic
- ESP SCSI controller with hard disk and CD-ROM support
- Floppy drive (not on SS-600MP)
- CS4231 sound device (only on SS-5, not working yet)
它们的设备驱动程序在内核的配置如下:
(1)图形:Device Drivers --> Graphics support --> Support for frame. buffer devices --> SBUS and UPA framebuffer --> TCX (SS4/SS5 only) support
(2)网卡:Device Drivers --> Network device support --> Ethernet (10 or 100 bit) --> Sun LANCE support
(3)键盘:Device Drivers --> Input device support --> Keyboards --> Sun Type 4 and Type 5 keyboard
(4)硬盘:Device Drivers --> SCSI device support --> SCSI disk support , SCSI CDROM support , SCSI low-level drivers --> Sparc ESP SCSI Driver
(5)串口:Device Drivers --> Character devices --> Serial drivers --> Sun Zilog8530 serial support --> Console on Sun Zilog8530 serial port
(6)RTC:Misc Linux/SPARC drivers --> Mostek real time clock support
(7)prom支持:Misc Linux/SPARC drivers --> /dev/openprom device ; General machine setup --> Openprom tree appears in /proc/openprom
4、init脚本的调整
在QEMU目标机中,CLFS的init初始化脚本运行不正常,因此要新建 /init 脚本文件,并在Linux 内核命令行中增加 init=/init 参数,即
-append " ... init=/init "
/init 脚本的内容是:
#!/bin/sh
for n in 0 1 3 5
do
/etc/rc.d/rcsysinit.d/S${n}0* start
done
exec /sbin/init
同时,将/etc/inittab 文件中的SI开头的一行注释掉。
5、向目标机部署临时系统
参考http://linuxman.blog.ccidnet.com/blog-htm-do-showone-uid-60710-type-blog-itemid-1472386.html设置目标机与host 的网络连接
参考http://linuxman.blog.ccidnet.com/blog-htm-do-showone-uid-60710-type-blog-itemid-268379.html,用NFS方式向目标机部署临时系统。注意:用fdisk对目标机硬盘分区时,会提示创建sun disk label,请选择custome类型,相应的参数都使用缺省值。然后,fdisk自动生成硬盘分区,即:sda1是linux分区、sda2是swap分区、sda3是whole disk
6、遗留问题
向目标机部署临时系统后,重新编译ELFtoaout和silo软件包,成功。然后执行
silo -f
命令设置虚拟硬盘boot sector。但是,目标机从硬盘启动时,silo读取配置文件出错,无法引导系统。怀疑是QEMU的虚拟硬盘处理有问题。
规避方法:使用QEMU的 -kernel 参数指定内核文件,直接引导,不使用silo从虚拟硬盘引导 |
|