修改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内核,所以很多原理不太懂,也不知道改了会有啥后果,希望各位大神帮忙分析下。
都没有人知道吗:'(:'(
页:
[1]