zhangweijuan008 发表于 2015-04-18 10:08

求助:修改task_struct以后重启,虚拟机花屏,鼠标不能用,但是键盘可以用,什么原因

这个问题卡了几天了,求助!

具体问题是这样的:

在ubuntu14.04上面安装xen4.4,然后启动了一个同样的ubuntu14.04的虚拟机;

之后修改了虚拟机内核的task_struct 结构,添加了一个指针元素,具体修改如下:

struct struct_syscall_uniq{

      unsigned longsyscall_ret;
      wait_queue_head_trequeue_wq;
      intsyscall_len;
      intsyscall_block_flag;
};

struct task_struct {

      struct struct_syscall_uniq *syscall_point;

      .........................
}

然后在fork.c中的copy_process中添加如下几行来初始化添加的变量:

      p->syscall_point = kmalloc(sizeof(struct struct_syscall_uniq),GFP_KERNEL);
      init_waitqueue_head(&p->syscall_point->requeue_wq);
      p->syscall_point->syscall_ret = 0;
      p->syscall_point->syscall_len = 0;
      p->syscall_point->syscall_block_flag = 1;

编译通过,使用新内核重启以后,虚拟机就是花屏的,鼠标不能用,网络不能用:


但是命令行和键盘可以用:


开始我在task_struct中添加了几行出现这个问题以为是占用空间太大,于是改成了添加一个指向结构体的指针的形式,还是有这个问题,实在不知道什么原因。

另外我在编译内核的过程中出现类似:
buffer size 1040 is bigger than1024
之类的warning,不知道会不会有关系 。

还有修改task_struct或者files之类的结构体对内核会造成什么样的影响呢???因为我是刚开始接触linux内核,所以很多原理不太懂,也不知道改了会有啥后果,希望各位大神帮忙分析下。
更多 0
页: [1]
查看完整版本: 求助:修改task_struct以后重启,虚拟机花屏,鼠标不能用,但是键盘可以用,什么原因