build bootable grub iso image hard disk

news/2024/10/24 19:59:09/

一、pre-work

1. 安装grub-install  grub-mkrescue命令

apt install gub2-common  grub-pc  grub-efi-ia32  grub-efi-amd64:i386 grub-efi-amd64

二、iso image

1. bios iso
#!/bin/shmkdir bios_iso
mkdir -p bios_iso/boot/grubcp grub.cfg bios_iso/boot/grub/grub-mkrescue -o bios.iso ./bios_iso/
2. efi  iso
#!/bin/shmkdir efi_iso
mkdir -p efi_iso/boot/grubcp grub.cfg efi_iso/boot/grub/grub-mkrescue /usr/lib/grub/x86_64-efi -o efi.iso ./efi_iso/

三、hard disk

1.bios hd image
#!/bin/shdd bs=512 if=/dev/zero of=hd.img count=204800losetup /dev/loop12 hd.img  #choose unused loop devicemkfs.ext4 -q /dev/loop12mount -o loop ./hd.img ./hdiskmkdir -p ./hdisk/bootsudo grub-install --boot-directory=./hdisk/boot --force --allow-floppy /dev/loop12echo "copy grub.cfg to ./hdisk/boot && sync && umount ./hdisk && losetup -d /dev/loop12"
2. efi hd image
#!/bin/shmkdir efi_iso
mkdir -p efi_iso/boot/grubcp grub.cfg efi_iso/boot/grub/grub-mkrescue /usr/lib/grub/x86_64-efi -o efi.iso ./efi_iso/dd bs=512 if=efi.iso of=efi_hd.img  #of can be a actual disk device, e.g. /dev/sda

四、qemu运行

qemu-system-x86_64 -drive format=raw, file=hd.img -m 512M -cpu kvm64,smep,smap -sqemu-system-x86_64 -drive format=raw, file=bios.iso -m 512M -cpu kvm64,smep,smap -s# run uefi bios
qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -drive format=raw, file=efi.iso -m 512M -cpu kvm64,smep,smap -s

五、参考:

GNU GRUB Manual 2.12: Top

GNU GRUB Manual 2.12: Making a GRUB bootable CD-ROM

GRUB - OSDev Wiki


http://www.ppmy.cn/news/1541648.html

相关文章

Java全栈经典面试题剖析2】JavaSE面向对象1

目录 面试题2.1 JVM内存划分 a. 静态方法和栈帧 b. 程序计数器 c. 堆和栈中数据的默认值 d.局部变量表 e. 操作数栈 f. 静态解析/动态连接 g.方法出口 扩展(无需背诵) 面试题2.2 heap和stack有什么区别? 面试题2.3 面向对象的基本特征是什么? 面试题2.4 java…

docker-compose-lnmp-wordpress

使用 docker-compose 在 CentOS 7 上编写并部署 LNMP (Linux, Nginx, MySQL, PHP) 环境的 YAML 文章目录 部署步骤:1. 安装 Docker 和 Docker Compose1.1安装 Docker:1.2安装 Docker Compose: 2.创建目录结构3.编写docker-compose.yml4.ngin…

2023 icpc南京(待更新)

文章目录 [I. Counter](https://codeforces.com/gym/104821/problem/I)[C. Primitive Root](https://codeforces.com/gym/104821/problem/C)[F. Equivalent Rewriting](https://codeforces.com/gym/104821/problem/F)[G. Knapsack](https://codeforces.com/gym/104821/problem/…

查看linux的版本

在 Linux 系统中,有多种方法可以查看当前系统的版本信息。以下是一些常用的方法: 1. 使用 uname 命令 uname 命令可以显示系统的内核版本和其他相关信息。 uname -a这个命令会输出类似如下的信息: Linux hostname 5.4.0-88-generic #99-U…

webpack生成的SourceMap更改生成路径

文章目录 一、基本概念二、output.sourceMapFilename三、SourceMapDevToolPlugin 一、基本概念 Source Map 本身是一种文件,它提供了原始文件与编译后的文件之间的映射规则,使得开发者能够调试原始代码,帮助开发人员进行调试和排查。在生成的…

基于docker-compose编排部署微服务快速开发框架

1. 规划节点 节点规划,见表1。 表1 节点规划 IP主机名节点10.24.2.10masterdocker-compose节点 2. 基础准备 Docker和Docker Compose已安装完成,将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。 案例实施 1. 基础环境准备 &#x…

【LeetCode:1160. 拼写单词 + 哈希表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

记录一次局域网内文件共享

#局域网内文件共享 局域网内文件共享 一.背景介绍 需求:在安全需求背景下,实现局域网内文件访问与修改 (即:禁止wx,qq,云server等传输) 作者的实验条件: win11主机,win10虚拟机 二.实验过程…