構建MenuOS系統
1.將指定文件拷貝到本地:
git clone https://github.com/mengning/linuxnet.git
此過程可能需要輸入github賬號和密碼。
2.進入目錄linuxnet
,使用make
命令編譯根文件系統:
cd linuxnet
make rootfs
3.在Makefile
文件中有一條指令用於開啟menu系統(不需要自己輸入):
qmenu -kernel ../../linux-3.18.6/arch/x86/bzImage -initrd ../rootfs.img
測試QEMU
1.在QEMU中完成TCP客戶端和服務器發送和接收hello/hi以驗證MenuOS正常工作:
MenuOS>> replyhi
# Please input hello...
MenuOS>> hello
- 結果顯示TCP客戶端和服務器正常工作,打印出了預期的信息
2.修改Makefile內容,rootfs
標簽下啟動QEMU的命令尾部添加-s
3.重新make rootfs
,啟動QEMU
4.啟動調試,連接到server
gdb
(gdb) file ../../linux-3.18.6/vmlinux
(gdb) target remote:1234 # 連接到gdbserver
5.設置斷點,驗證gdb對start_kernel
和sys_socketcall
這兩個內核函數的跟蹤是否可行
(gdb) break start_kernel
(gdb) break sys_socketcall
- 結果顯示gdb可以追蹤到
start_kernel
函數,斷點在init/mian.c
的501行;也可以追蹤到sys_socketcall
函數,斷點在net/socket.c
文件的2492行