- 論壇徽章:
- 0
|
具體問題是這樣的:
在ubuntu14.04上面安裝xen4.4,然后啟動(dòng)了一個(gè)同樣的ubuntu14.04的虛擬機(jī);
之后修改了虛擬機(jī)內(nèi)核的task_struct 結(jié)構(gòu),添加了一個(gè)指針元素,具體修改如下:
struct struct_syscall_uniq{
unsigned long syscall_ret;
wait_queue_head_t requeue_wq;
int syscall_len;
int syscall_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;
編譯通過,使用新內(nèi)核重啟以后,虛擬機(jī)就是花屏的,鼠標(biāo)不能用,網(wǎng)絡(luò)不能用:
2015-04-17 09:40:36 的屏幕截圖.png (1.2 MB, 下載次數(shù): 38)
下載附件
2015-04-17 09:42 上傳
但是命令行和鍵盤可以用:
2015-04-17 09:42:03 的屏幕截圖.png (771 KB, 下載次數(shù): 33)
下載附件
2015-04-17 09:44 上傳
開始我在task_struct中添加了幾行出現(xiàn)這個(gè)問題以為是占用空間太大,于是改成了添加一個(gè)指向結(jié)構(gòu)體的指針的形式,還是有這個(gè)問題,實(shí)在不知道什么原因。
另外我在編譯內(nèi)核的過程中出現(xiàn)類似:
buffer size 1040 is bigger than 1024
之類的warning,不知道會(huì)不會(huì)有關(guān)系 。
還有修改task_struct或者files之類的結(jié)構(gòu)體對(duì)內(nèi)核會(huì)造成什么樣的影響呢???因?yàn)槲沂莿傞_始接觸linux內(nèi)核,所以很多原理不太懂,也不知道改了會(huì)有啥后果,希望各位大神幫忙分析下。
|
|