# 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) ```