HIT-oslab遇到的问题

在HIT-oslab实验中遇到了GDB无法正常停在main函数、Docker挂载Minix镜像时的权限问题以及编译时的奇怪错误。解决方案包括在Windows上使用Putty和调整Docker启动参数,以及在遇到编译问题时探索替代方法。在用户态调用内核函数时,发现可能存在问题,需要寻找正确的进程切换点进行调试。
摘要由CSDN通过智能技术生成

HIT-oslab遇到的问题

Error: Can’t open display:

windows下用cmd或者powshell都会出现debug1: X11 forwarding requested but DISPLAY not set,stackoverflow上的方法都试了,还是无法解决!

  1. 用putty连接!!!,putty里设置:
    在这里插入图片描述
  2. 似乎在windows上添加了系统环境变量之后,ps或者cmd直接连接也可以xclock了
    在这里插入图片描述

GDB调试出现无法正常停在main函数的情况

猜测可能是直接用apt安装的gdb的版本问题,我从https://gitee.com/cn-guoziyang/oslab/下载了他的gdb,然后出现缺少动态库,这个gdb是32位的,所需的库也都是32位的。所以要开启32位软件源的支持:

sudo dpkg --add-architecture i386 && sudo apt update
apt install  libexpat-dev:i386 lib32ncurses5 lib32z1

依旧还是:

Program received signal SIGTRAP, Trace/breakpoint trap.
0xffff0000 in ?? ()
(gdb)
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
0xffff0000 in ?? ()
(gdb)
Continuing.

6.6更新:直接用apt下载的gdb也可以,但是需要设置 调试模式是32位,"targetArchitecture":"x86",这是vscode的设置方法,直接gdb设置没有找。


挂载minix镜像:

$ mount -t minix -o loop,offset=1024 ./hdc-0.11.img ./hdc
mount: ./hdc: mount failed: Operation not permitted.

losetup -f查看loop device 发现没有

$ losetup -f
losetup: cannot find an unused loop device: No such device

Solution:
docker 访问系统的device时需要加上特殊权限:
docker启动的时候加上--privileged=true
加上之后,在Ubuntu虚拟机中的Docker里,可以成功挂载了,但是Windows下的Docker里还有新的错误:

$ ./mount-hdc
mount: unknown filesystem type 'minix'

听说wsl2不支持挂载minix镜像,so,还没有解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值