第四周作业补交

跟踪分析Linux内核的启动过程
一、1 在自己安装的Linux环境下先下载内核源代码,使用命令wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.6.tar.xz,然后进行解压使用命令xz -d linux-3.18.6.tar.xz 和tar -xvf linux-3.18.6.tar解压tar.xz文件(命令中具体的xz 等还没弄懂),使用cd进入linux-3.18.6目录下。
1249774-20171024213145519-1157329241.png

2 进行编译,使用命令make i386_defconfig(这个命令还没弄明白)以及make ,编译的是32位的x86体系结构,编译内核结束
1249774-20171024213513723-2037291460.png
3 制作根文件系统 使用命令 mkdir rootfs,制作根文件系统创建一个目录用于存放根文件系统,git clone https://github.com/mengning/menu.git,这一步是将menu从gitthub上克隆下来,由于电脑上没有下载git,,使用命令sudo apt install git 进行下载
1249774-20171024214319723-1332789469.png
1249774-20171024214844973-1576345735.png

使用cd 进入menu系统,使用命令gcc -o init linktable.c menu.c test.c -m32 -static –lpthread意义是用gcc进行编译成一个32位静态的,lpthread是表示要连接到pthread的库这里省略了lib,使用命令cd ../rootfs,其中..表示当前目录的上级目录。使用命令cp ../menu/init ./把init拷贝到rootfs中,(过程中有一个失误就是把命令打错了,所以出现了没有那个文件或目录)
1249774-20171024215323473-1211717697.png
1249774-20171024215824926-463451950.png
使用命令find . | cpio -o -H newc |gzip -9 > ../rootfs.img,系统启动后会默认启动1号进程init进程,使用cpio方式将rootfs下的所有文件打包成rootfs.img,成为一个镜像文件。则根文件系统的镜像已经完成
1249774-20171024220817410-301458888.png
4 启动,使用命令 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img进行启动,由于我Linux没有安装qemu,在输入命令是显示没有找到该命令使用命令sudo apt-get install qemu,但是不知道为什么依然不可以。于是我使用实验楼完成了以下操作。
1249774-20171024221059254-1621503724.png
二、进入内核根文件系统
输入命令 cd LinuxKernel进入LinuxKernel目录,再通过qemu -kernel linux-3.18.6/arch/x86/bzImage -initrd rootfs.img进行启动,指定内核的bzImag,指定initrd,意思就是指明一个根文件系统,根文件系统为rootf.imag。内核启动加载了根文件系统,那么根文件系统中的可执行文件img执行。
1249774-20171024221218457-314263500.png
三、用gdb进行调试跟踪,
运用命令qemu -kernel linux-3.18.6/arch/x86/bzImage -initrd rootfs.img -s -S启动内核,其中-S目的是在CPU初始化前将其冻结,-s指在gdb tcp::1234创建了一个gdbserver.这个命令使得我们可以通过tcp的1234端口连接gdb进行调试。
1249774-20171024221249863-216539108.png
所以我们打开另外一个窗口, 进入~/LinuxKernel 目录,然后输入gdb回车。
1249774-20171024221816410-835006508.png
使用命令file linux-3.18.6/vmlinux,在gdb界面中将内核镜像表加载进来,令然后输入target remote:1234 连接gdb,但是不知道为什么一直显示连接超时
1249774-20171024222048223-324515593.png
在内核启动的起点设置一个断点,命令为 break start_kernel,没有出现代码。。。因此在使用命令c时也显示没有被运行。
1249774-20171024222408598-1776422146.png
1249774-20171024222420832-2030350940.png

转载于:https://www.cnblogs.com/2017yaya/p/7726251.html

### 回答1: Java课程作业管理系统是一种基于Java语言开发的软件系统,用于帮助教师有效地进行课程作业管理。该系统可以方便教师发布作业、学生提交作业以及教师对学生作业进行批改评分等操作。 首先,教师可以通过系统发布课程作业,包括作业要求、截止日期等信息。学生登录系统后,可以查看到教师发布的作业,并及时了解作业详情。学生可以在规定的时间内提交作业,系统会自动记录每个学生的作业提交时间,确保公平性。 其次,教师可以对学生提交的作业进行下载和查看。通过系统,教师可以轻松地浏览每个学生的作业内容,并在系统中对作业进行批改评分。教师可以根据设定的评分标准进行评分,系统会自动计算每个学生的得分,并生成成绩报表。这样,教师不仅可以高效地批改作业,节约了时间,还可以为学生成绩提供及时的反馈。 此外,该系统还提供了学生作业查重功能,通过系统可以检测学生作业之间的相似度,帮助教师发现可能存在的抄袭行为。这对于维护课堂纪律和学术诚信非常重要。 之,Java课程作业管理系统是一种便捷高效的软件系统,可帮助教师进行课程作业的发布、学生作业的提交、作业批改评分等操作。通过系统的使用,可以提高教学效率,促进学生成绩的提升,并维护课堂的纪律和学术诚信。 ### 回答2: Java课程作业管理系统是一种基于Java语言开发的软件系统,旨在帮助教师和学生更好地管理和完成课程作业。该系统具有以下主要功能: 1. 作业发布与提交:教师可以在系统中发布作业,包括作业名称、截止日期、作业要求等信息。学生可以在规定期限内在系统中提交作业,包括文字、代码、文档等多种形式。 2. 作业批改:教师可以查看学生提交的作业,并对其进行批改和评分。可以根据设定的评分标准,快速评估学生完成作业的质量,并及时反馈给学生。 3. 作业管理:学生可以在系统中查看自己的作业情况,包括已发布的作业、已提交的作业、未完成的作业等。学生可以清楚地了解自己的作业进度,及时补交未完成的作业。 4. 通知与提醒:系统可以通过消息推送功能,向学生发送作业发布、截止日期提醒等通知。同时,教师也可以通过系统向学生发送作业批改结果和评语。 5. 数据分析与统计:系统可以统计和分析学生的作业情况,包括完成情况、得分分布等。教师可以根据这些数据了解每个学生的学习情况,并及时调整教学策略。 6. 权限管理:系统可以设置不同的权限,如管理员、教师、学生等,确保只有具有相应权限的用户才能进行相关操作,增加系统的安全性和可靠性。 Java课程作业管理系统的开发需要熟悉Java开发技术和数据库知识,通过合理的系统设计和设计模式的应用,可以实现一个高效、易用的作业管理平台,提高教师和学生的学习效率和互动性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值