具体问题如下:
[root@localhost wangjian]# xm console 4
rtc: IRQ 8 is not free.
i8042.c: No controller found.
[root@localhost xen]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
CentOS 3 1023 1 -b---- 36.9
Domain-0 0 484 2 r----- 850.1
centos 1 511 1 -b---- 31.7
查看xen的日志vim /var/log/xen/xend.log ,会发现如下的错误:[2013-07-15 06:40:00 xend 3653] DEBUG (blkif:27) exception looking up device number for xvda: [Errno 2] No such file or directory: '/dev/xvda'
解决办法:mknod /dev/xvda b 220 0
这里的220是主设备号,注意这里的主设备号不能和系统已经定义的主设备号重复,系统已定义的主设备号可以通过查看
/usr/src/kernels/2.6.18-348.6.1.el5-xen-i686/include/linux/major.h来获取。
之后便可以通过“xm console centos”(文本)登陆到centos这台虚拟机,但是“xm list”显示虚拟机仍然处于阻塞“b”状态,通过virt-manager观察,虚拟机处于“运行状态”,具体原因还不知道。
注:mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
主设备号是由linux/major.h定义的,如下定义了一个DOC设备:
#define IGEL_FLASH_MAJOR 62
假如有一个命令mknod doc b 62 0 :
其中的doc为定义的名字,b指块设备,0指的是整个DOC。如果把0换为1,则1指的是DOC的第一个分区。2是第2个,对于块设备次设备号就表示该块设备上的分区号,依次类推。
至于mknod console c 5 1 的意思也很相似:
console是设备的名字
c指字符设备
5是该设备在major.h中定义的标记
1是第一个子设备
mknod console c 5 1
console为设备文件名,自己随便取
c是指字符型设备 (可选b,块设备)
5是主设备号 /dev/devices里面记录现有的设备
找个没有用的就可以了
1是次设备号,当你要给两个同样的设备上一个驱动的时候就要分了,从0开始,1就是第二个了
,对于字符设备,次设备号就表示同类型设备的不同设备。