活动介绍
file-type

run_qemu脚本使用指南:Linux内核镜像快速启动

下载需积分: 42 | 22KB | 更新于2024-12-05 | 125 浏览量 | 0 下载量 举报 收藏
download 立即下载
用户必须拥有一定的Linux操作知识,包括命令行操作,以及对内核编译和虚拟化技术有一定了解。该脚本的主要运行条件包括安装了必要的软件包和库,以及对系统权限的适当管理。接下来,我们将详细解释该脚本的安装、使用要求、配置过程和运行方式等知识点。" 知识点详细说明: 1. QEMU虚拟化技术: QEMU是一个开源的模拟器和虚拟化器,可以模拟各种处理器架构,允许用户在一台机器上运行另一个架构的操作系统。QEMU广泛用于测试、开发和教育目的。脚本run_qemu正是利用QEMU的功能,使得用户能够使用本地构建的Linux内核在虚拟机环境中运行。 2. mkosi工具: mkosi是一个用于创建系统镜像的工具。它可以用来构建最新的或指定版本的Linux发行版镜像,并可以配置各种定制选项。该脚本run_qemu中提到了mkosi的安装,表明它在创建操作系统映像时扮演关键角色。 3. argbash参数解析器: argbash是一个生成shell脚本参数解析器的库。当脚本需要处理命令行参数时,argbash可以简化参数处理的代码编写。脚本run_qemu通过调用parser_generator.m4生成参数解析器,这有利于规范脚本的输入方式,使用户更易理解和使用。 4. sudo权限管理: 脚本提到首选nopasswd sudo,或者需要以root身份运行,或者在提示中多次输入密码。这表明run_qemu脚本在执行过程中需要较高的系统权限,可能涉及到对系统配置的修改、启动虚拟机等操作。 5. PATH环境变量: 在Linux系统中,PATH环境变量列出了系统搜索可执行文件的目录路径。脚本提到需要将run_qemu.sh脚本符号链接到PATH环境变量中的某个位置,这意味着用户需要具有一定的环境变量配置知识,以便正确执行脚本。 6. 符号链接(Symlink): 脚本提到了对符号链接的操作,这是Linux系统中一种重要的文件操作技术,允许一个文件或目录的链接存在于文件系统的不同位置,而不占用额外的磁盘空间。脚本强调了在使用符号链接时,支持文件必须与脚本位于相同位置,仅仅复制脚本本身是不足够的。 7. bash-completion命令自动补全: 脚本提到如何找到bash的命令自动补全完成目录,这涉及到提高用户在命令行环境中工作效率的方法。通过配置bash-completion,可以增强用户使用run_qemu脚本的体验。 8. Linux内核树的顶层操作: 在使用说明中,要求用户从Linux内核树的顶层运行run_qemu脚本。这表明用户需要有编译和操作Linux内核的基本能力。 9. 脚本安装和使用: 用户需要将run_qemu.sh脚本复制或符号链接到适当的位置,并确认支持文件的位置正确,以确保脚本能够正常工作。这是一个涉及文件管理、权限设置和系统配置的过程。 总结上述知识点,run_qemu脚本是一个强大的工具,它结合了QEMU的虚拟化功能、mkosi的镜像创建能力、argbash的参数解析功能以及bash-completion的命令行辅助,帮助用户在Linux环境下高效地创建和运行自定义的Linux操作系统映像。为了正确使用该脚本,用户需要具备Linux基本操作知识和一定的shell脚本使用经验。

相关推荐

filetype

操作系统任务描述 本关任务:修改 Linux 0.11 内核程序,将系统启动时显示的字符串由原来的Partition table ok.变为Hello, world!。 通过本关任务,可以熟悉 Linux 0.11 内核实验环境,掌握内核程序的编辑、编译和测试方法。 相关知识 为了完成本关任务,你需要: 1.了解实验环境; 2.测试内核是否正常; 3.查看内核源码; 4.修改内核源码; 5.重新编译内核; 6.测试新内核是否正常。 1.了解实验环境 本课程将会在 Ubuntu 16.04 下进行学习,Ubuntu 属于Linux衍生出来的以桌面应用为主的Linux操作系统,Linux操作系统的使用与Windows基本上不同,所以最初会觉得无法理解,但是本质上还是差不多的。 本实验将使用 Bochs 模拟硬件环境,在完成对代码的修改或编译之后将使用run去启动新的虚拟机,环境都是准备好,可以直接使用的,只需要使用脚本去启动就行了。 本实验中已经给出了完整的linux 0.11内核文件放在/root/os/linux-0.11-lab/0/linux中,可以直接使用。 本课程的实验在目录~/os/linux-0.11-lab下进行,此目录下的内容如下: 其中各目录和文件的含义是: 脚本文件run*:以不同模式运行虚拟机,脚本 run 采用正常模式,脚本 rundbg 采用 bochs 调试模式(汇编级),脚本 rungdb 采用 gdb 调试模式( C 语句级),这三个模式都用于内核测试。 用于启动虚拟机的内核映像文件是cur/linux/目录下的Image; 虚拟机的根文件系统是images文件夹下的rootimage-0.11; 目录0:存放有 Linux 0.11 内核的源代码及其 Source-Insight 工程文件,本实训中使用 VSCode 代替 Source-Insight ,不需要使用到 Source-Insight ,只需要使用到linux文件夹中的源码; 目录conf:存放有虚拟机的配置文件,这些配置文件描述了虚拟机的硬盘、软盘、内存大小等参数; 目录images:包含虚拟机的硬盘(根文件系统)和软盘的映像文件; 其中映像文件hdimage-devel用作应用开发模式的硬盘,里面包含应用程序编译所需的 gcc 等软件。脚本run、rundbg和rungdb用软盘作为启动盘,对应的软盘映像文件是cur/linux/Image。 cur是一个符号链接,指向当前分析的内核目录,现在指向目录0,可以当作是一个快捷方式。 2.测试内核是否正常 运行run脚本就会使用在~/os/linux-0.11-lab目录下的内核映像cur/linux/Image启动 Linux 0.11 。 虽然这个虚拟机的硬盘容量只有 1 MB ,但它目前可以满足内核分析的需要。 3.查看内核源程序 关闭虚拟机,然后使用 VSCode 打开源码所在文件夹,选择 File ,然后选择 Open Folder ; 找到linux文件夹,然后确认打开; 可以看到文件夹下所有的源码都已经被导入了,可以在这里开始对源码进行修改了。 4.修改内核源码 在源码中可以修改很多东西,例如修改开机画面中的字符串Loading system ...,将其修改为Loading linux 0.11,这里需要注意一点,不能太长而影响生成的目标文件的大小。 使用搜索功能,搜索关键词Loading,在结果中找到Loading system ...,将其修改为Loading linux 0.11。 如果知道文件的具体位置,也可以在命令行中使用vim对配置文件进行修改,只需要找到文件中对应的地方进行修改,和在 VSCod 里面修改结果都是一样的。 修改完毕之后点击 File 然后选择 Save All ,保存所有修改即可。 5.重新编译内核 在内核源码目录~/os/linux-0.11-lab/0/linux中使用make命令重新编译内核; 下图是编译输出的结果,可以看到被修改的文件bootsect.s已经重新编译成功,这是只编译修改过的文件,有时为了可靠也可以完全编译; 完全编译需要将旧的编译文件清除,使用make clean命令清除编译文件,然后重新使用make命令编译,只不过完全编译的时间相对较长; 上图是编译之后的结果,Image 即为生成的完整内核映像,包含引导代码;tools 目录下有内核的主体可执行文件 system ,其符号文件是 System.map ,包含变量和函数的地址,其链接时的详细布局信息在文件 System.map.2

KINSLAUGHTER
  • 粉丝: 37
上传资源 快速赚钱