课后作业7.3.4:构造一个自己的 mini 操作系统

本文档详细介绍了如何将bochs虚拟机硬盘文件进行改造,包括将mycat、mysh、myls三个文件编译为可执行文件并移动到相应目录,删除多余文件,修改rc文件,以及在内核代码中替换/bin/sh为/bin/mysh,并设置环境变量PATH=/usr/bin。最后通过启动虚拟机来验证修改的有效性。
摘要由CSDN通过智能技术生成

本关任务是把bochs虚拟机硬盘文件改成以下形式:

第一步

把之前写的mycat.c,mysh.c和myls.c三个文件拷到/root/os/linux-0.11/b/目录下

打开虚拟机,将他们拷进虚拟机,并编译生成可执行文件

[/usr/root]# mdir b:mycat.c
[/usr/root]# mcopy b:mycat.c .
[/usr/root]# mdir b:mysh.c
[/usr/root]# mcopy b:mysh.c .
[/usr/root]# mdir b:myls.c
[/usr/root]# mcopy b:myls.c .
[/usr/root]# gcc mycat.c -o mycat
[/usr/root]# gcc mysh.c -o mysh
[/usr/root]# gcc myls.c -o myls

第二步

按照要求修改文件结构,这里注意,原先的/usr/bin这个文件夹必须最后处理,因为里面包含了我们操作需要用到的命令,如果将它删除,许多命令就用不了了

完成第一步后,文件目录如下:

先把mycat、myls移到/usr/bin下,把mysh移到/bin下:

[/usr/root]# mv mycat /usr/bin/mycat
[/usr/root]# mv myls /usr/bin/myls
[/usr/root]# mv mysh /bin/mysh

再删除多余的文件: 

[/bin]# rm bash fdisk ...(只留下mysh)
[/dev]# rm fd0 ...(只留下tty0)
[/etc]# rm gruop ...(只留下rc)
[/]# rm -r root                     //-r表示递归删除,可用于删除整个文件夹
[/]# rm -r tmp
[/usr]# rm -r include
[/usr]# rm -r local
[/usr/root]# rm a.out mycat.c myls.c mysh.c

注意先别处理/usr/bin

第三步

按要求修改rc文件,利用uemacs命令,这里就不赘述了

第四步

处理/usr/bin,先删除除了mycat,myls,rm,sync的其他命令,然后执行sync命令,保证我们之前的修改都是有效的,再删除sync,这里有一个bug,既然删除了sync,那该如何保证删除sync这条命令以及之后的命令是有效的呢?(其实亲测/usr/bin下留下sync和rm也是可以过关的)最后再删除rm(我删除我自己?)

[/usr/bin]# rm ...
[/usr/bin]# sync
[/usr/bin]# rm sync
[/usr/bin]# rm rm

第五步 

经过以上步骤,文件就处理完了,现在要做的就是修改内核代码,以免运行时报错

用vscode打开版本0内核的main.c文件,修改其中的main函数,把所有的/bin/sh修改成/bin/mysh(现在用的是我们自己写的sh了),同时按照左边教程的提示,增加一个环境变量PATH=/usr/bin(注意envp_rc和envp数组都要改) 

最后启动虚拟机验证即可

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值