# os-x86-iso
**Repository Path**: limingth/os-x86-iso
## Basic Information
- **Project Name**: os-x86-iso
- **Description**: 如何制作u盘启动OS的iso文件
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2023-10-06
- **Last Updated**: 2024-04-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 如何制作u盘启动OS的iso文件
Thanks to
### 下载项目
```
$ git clone https://gitee.com/chenlongos/os-x86-iso.git
Cloning into 'os-x86-iso'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 14 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (14/14), done.
$ cd os-x86-iso/
$ tree
.
├── Makefile
├── README.md
└── src
└── arch
└── x86_64
├── boot.asm
├── grub.cfg
├── linker.ld
└── multiboot_header.asm
```
### 编译生成 iso
```
$ make
mkdir -p build/arch/x86_64
nasm -felf64 src/arch/x86_64/boot.asm -o build/arch/x86_64/boot.o
mkdir -p build/arch/x86_64
nasm -felf64 src/arch/x86_64/multiboot_header.asm -o build/arch/x86_64/multiboot_header.o
ld -n -T src/arch/x86_64/linker.ld -o build/kernel-x86_64.bin build/arch/x86_64/boot.o build/arch/x86_64/multiboot_header.o
$ make iso
mkdir -p build/isofiles/boot/grub
cp build/kernel-x86_64.bin build/isofiles/boot/kernel.bin
cp src/arch/x86_64/grub.cfg build/isofiles/boot/grub
grub-mkrescue -o build/os-x86_64.iso build/isofiles 2> /dev/null
rm -r build/isofiles
$ ls -l build/os-x86_64.iso
-rw-r--r-- 1 root root 9097216 Oct 5 22:56 build/os-x86_64.iso
```
其中最关键的是 grub-mkrescue 这条命令,需要确保环境和版本一致
```
# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
# grub-mkrescue --version
grub-mkrescue (GRUB) 2.06-2ubuntu7.2
# grub-mkrescue -o build/os-x86_64.iso build/isofiles
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.
Drive current: -outdev 'stdio:build/os-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 8820k free
Added to ISO image: directory '/'='/tmp/grub.xHFNxB'
xorriso : UPDATE : 291 files added in 1 seconds
Added to ISO image: directory '/'='/root/rust-osdev/os-x86-iso/build/isofiles'
xorriso : UPDATE : 295 files added in 1 seconds
ISO image produced: 4442 sectors
Written to medium : 4442 sectors at LBA 0
Writing to 'stdio:build/os-x86_64.iso' completed successfully.
# xorriso --version
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.
xorriso 1.5.4
ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program
Copyright (C) 2019, Thomas Schmitt , libburnia project.
xorriso version : 1.5.4
Version timestamp : 2021.01.30.150001
Build timestamp : -none-given-
libisofs in use : 1.5.4 (min. 1.5.4)
libjte in use : 2.0.0 (min. 2.0.0)
libburn in use : 1.5.4 (min. 1.5.4)
libburn OS adapter: internal GNU/Linux SG_IO adapter sg-linux
libisoburn in use : 1.5.4 (min. 1.5.4)
Provided under GNU GPL version 3 or later, due to libreadline license.
There is NO WARRANTY, to the extent permitted by law.
```
### 烧写iso文件到u盘
```
$ sudo dd if=./build/os-x86_64.iso of=/dev/disk3
Password:
17768+0 records in
17768+0 records out
9097216 bytes transferred in 17.312507 secs (525471 bytes/sec)
```