lab-1(mit-6.828)
Exercise 3
At what point does the processor start executing 32-bit code? What exactly causes the switch from 16- to 32-bit mode?
从这一行开始执行32行代码
开启保护模式,开启32位模式
What is the last instruction of the boot loader executed, and what is the first instruction of the kernel it just loaded?
bootloader执行的最后一行代码
kernel的第一条指令
Where is the first instruction of the kernel?
同上
How does the boot loader decide how many sectors it must read in order to fetch the entire kernel from disk? Where does it fin ...
linux搭建dosbox环境
dosbox能够让我们在现代os上使用早期dos环境。
dos环境下的汇编是比较友好的,dos本身简单的机制也有利于我们对系统有初步的理解。
下面我们来在linux环境中搭建dosbox和其汇编环境。
安装dosbox
我们直接使用包管理工具安装dosbox即可。
1$ sudo apt install dosbox # ubuntu
安装完成以后我们需要修改一些配置。
我们需要挂载一个宿主机的位置到dosbox的d盘,这样可以实现两者之间文件的互通。
我们找到dosbox的配置文件~/.dosbox/dosbox-[version].conf,添加如下内容:
12mount d 需要被挂载的位置d:
汇编环境搭建
在本博客中我们使用nasm来作为编译器。
我们先下载nasm和debug工具,点击下面的链接下载。
https://sky-public-resource.oss-cn-hangzhou.aliyuncs.com/nasm-dos.tar.gz
下载完成以后我们将压缩包中的内容解压到我们挂载的目录,这样就大功告成了。
ubuntu美化macos主题
最近突然想美化一下自己ubuntu的风格,想试一试macos风格的ubuntu,本博客记录这次的美化过程。
视频参考:
https://www.bilibili.com/video/BV1gT411m7FF/?spm_id_from=333.337.search-card.all.click
此外先下载一下需要的文件:
https://sky-public-resource.oss-cn-hangzhou.aliyuncs.com/ubunmac.zip
下面是美化过程
12$ sudo apt update && sudo apt upgrade$ sudo apt install gnome-tweaks gnome-shell-extensions -y
打开火狐浏览器,在插件搜索gnome shell并安装
然后进入gnome插件下载网址下载gnome插件
https://extensions.gnome.org/
下载插件
User Themes
解压之前下载的WhiteSur-gtk-theme-master.zip
进入到目录执行以下命令
12$ . ...
tmux使用教程
在传统的终端使用中,一个终端窗口是与一个会话绑定的,会话是与终端中启动的进程是连接在一起,这就意味着如果你关闭了一个终端,那么其内部的进程也会终止,而tmux就是一个可以将终端与会话解绑的工具,在此基础上,tmux可以对终端进行各种各样的操作。
快速开始
Tmux一般需要自己安装,用包管理工具直接安装即可
12345678# Ubuntu 或 Debian$ sudo apt-get install tmux# CentOS 或 Fedora$ sudo yum install tmux# Mac$ brew install tmux
我们输入tmux,就可以进入tmux窗口
1$ tmux
按下exit可以退出tmux
1$ exit
我们在tmux窗口中输入tmux detach可以将会话与终端分离,然后退出tmux
1$ tmux detach
然后我们可以在需要的时候重新接入会话
1$ tmux attach -t 0
会话管理
3.1 新建会话
第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。
使 ...
vim的基本用法
vim是一款Linux下的文本编辑器,当我们需要在终端环境下编辑文本时,vim就是我们最好的选择。vim看起来似乎对初学者不太友,但是想要上手使用vim并不困难。
认识vim
我们先来宏观的认识vim,vim常用的有四个模式:
正常模式(Normal-mode)
插入模式(Insert-mode)
命令模式(Command-mode)
可视模式(Visual-mode)
正常模式
当我们启动vim时,vim就处于正常模式,在正常模式下我们不能直接编辑文件,只能通过命令的形式使用复制,粘贴,剪切等操作来编辑文件。
在其它任何模式下,我们都可以通过按下Esc键来返回正常模式(如果不行就按两下),其它模式都需要在正常模式下按下相应的键位触发。
插入模式
在正常模式下我们按下一些键位就可以进入插入模式,这些按键较多,我们在基本操作中详细介绍这一部分的内容。
比较常用的是i健,按下i之后我们就可以进入插入模式,此时我们可以像平时编辑文件一样操作我们的文件。
命令模式
在按下/或者:键之后vim会进入命令模式,在命令模式下我们可以执行vim提供给我们的指令,具体的指令会在下面介绍。
...
搭建riscv32环境
hdu给我们提供的虚拟机非常庞大,而且放在百度网盘上😋,极大的占用了我们的时间,金钱还有本地空间,虽然不清楚学校的虚拟机到底提供了多少东西,但实际上riscv32所需的环境并不算太多,既然如此,为什么不在本地自己搭建一个呢?
以下操作均在ubuntu 22.04下执行。
要搭建环境,我们需要编译riscv32的环境和运行riscv32的环境,下面我们就分两个部分来搭建环境。
riscv-gnu-tool
在实验中我们需要riscv32的汇编,反汇编等操作,这一部分的环境由riscv-gnu-tool提供,这一部分的工具我们可以直接下载。
https://github.com/riscv-collab/riscv-gnu-toolchain/releases/tag/2023.06.02
下载解压后即可
qemu模拟器
我们通过qemu来提供riscv32的运行环境,首先我们下载qemu的源代码
12$ wget https://download.qemu.org/qemu-8.0.2.tar.xz$ tar xvJf qemu-8.0.2.tar.xz
下载一些依赖
12345 ...
lab2-编译内核并添加系统调用
在开始之前,请现配置好基本的环境,请你先完成下面博客中的qemu和busybox部分
编译x86_64 linux并运行在qemu上
因为内核需要添加系统调用,我们需要重新编译。
本实验均在ubuntu 22.04下进行,编译的内核版本是5.19(低版本内核会在添加系统调用时略有不同)。
添加系统调用
linux-5.19/arch/x86/entry/syscalls/syscall_64.tbl
添加
1335 64 mysetnice sys_mysetnice
linux-5.19/include/linux/syscalls.h
添加
1asmlinkage long sys_mysetnice(pid_t pid, int flag, int nicevaluse, void __user* prio, void __user* nice);
linux-5.19/kernel/sys.c
在最后一个#endif前加上下面的代码
12345678910111213141516171819202122232425262728293031323334 ...
编译x86_64 linux并运行在qemu上
本节内容将会告诉你如何自己编译内核并且将这个内核运行在qemu模拟器上。在成功运行之后,我们可以自由的修改并验证我们的内核,以下操作均在Ubntun 22.04下完成。
在开始之前我们有一些需要注意的东西:
在编译过程中,你会遇到各种各样的环境问题,造成的原因可能是多样的,尤其是在遇到这样比较复杂的任务时,所以你现在最好就做好长时间作战的心理准备,更重要的是会自己使用搜索引擎(还在用baidu的赶紧埋了😭),不要想着跟着做就能解决问题,下面我列出了一些高频的环境问题,当你遇到问题时可以回头过来看看:
当你在编译内核时出现编译错误,大概率是缺少某个包,这个时候去网上搜索,安装对应的包一般就能解决问题了。
粗心导致的错误,这是一个漫长的过程,你极有可能在某一步输错了内容而导致整个内容的崩坏,这个一般难以检查,只能更加细心,尽量使用复制而不是自己输入。
…
不要完全相信教程,一方面是教程本身的问题,一方面是我们的环境并不完全相同。
为了完成我们的目标,我们需要编译完成三个项目:
linux:提供内核
qemu:提供模拟环境
busybox:提供根文件系统和一些基本的系统工具
...
在u盘中安装ubuntu
你是否因为经常使用不同的电脑,但是编程环境不同而苦恼呢,今天的文章会教你把ubuntu装入移动固态中,现在SSD的价格已经很便宜了,这里我会用1T的移动固态为例,教会你如何将ubuntu装入移动其中(同时支持UEFI和BIOS)。
在开始之前,有几点需要提醒:
操作不当可能会导致数据损失,严重的操作失误甚至可能破坏你的电脑,所以要慎重操作。
每一步都要经可能谨慎的操作,一个粗心可能就会导致前功尽弃。
建议有一定基础的人来完成。
使用Vmware
首先安装vmware,https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
虽然是收费的,但是网上激活码简直不要太多,这里自己搜索解决。
(如果之前没有使用虚拟机或者安装系统的经验接下来操作要更加小心)
在安装完成之后,我们用管理员权限打开vmware(在左下角的搜索栏中找到vmware,右键点击后用管理员打开),创建虚拟机,除了下面出现的内容,其他的都选择默认即可。
选择稍后安装操作系统,我们需要后面自定义的配置
使用 ...
如何阅读一本书
阅读的四个阶段
基础阅读
检视阅读
分析阅读
主题阅读
阅读中我们应该对下面四个问题有自己的答案
整体来说,这本书在谈什么
作者说了什么,是怎么说的
这本书说的有道理吗,是部分有道理还是全部有道理
这本书和你有什么关系吗
基础阅读
基础阅读就是有着阅读的基本能力
检视阅读
用于判断一本书是否应该精读,如果判断一本书有精读的价值,就继续采用下面的阅读方法。
首先整本书采用粗读的方法,对整本书有一个整体的了解,然后遵循下面6个步骤
了解书籍的主题
了解书籍架构
了解关键词目
了解作者介绍
了解章节重点
了解逻辑线索
在判断一本书值得精读以后,我们执行分析阅读
分析阅读
一阶段
给书分类
找到书的骨架
为书拟大纲
发现作者意图
一阶段总结回答问题1——整体来说,这本书在谈什么
二阶段
判断作者主旨
书中的各种定义
理解作者想让你关注的
本书如何推导
作者自己的观点是怎么样的
总结回答——作者是如何讨论清楚一个问题的
三阶段
公正的评价一本书
主题阅读
通过多本书相同主题的横向比较来加深理解。
自己的理解
阅读一章或者一段之后要总结,刚开始阅读可以粗读或者说 ...