# cat x.iso > /dev/sdX 启动原理
---
## 前言
---
之前在U盘装系统的时,“刻录”U盘常用命令cat xx.iso > /dev/sdX(其实用dd也可以),xx.iso为要“刻录”的系统,sdX为U盘在系统中的设备文件名。执行命令后,U盘变为一个自带引导,包含iso内内容的操作系统安装盘。个人觉得能自带引导比较神奇,于是有了本文。
## 原理分析
---
ISO是一种文件系统格式,其他的如ext4、ntfs、fat。ISO格式可以作为一种镜像文件,文件系统自身可带引导功能。cat/dd命令只是将文件系统镜像拷贝到U盘设备上。
ISO文件自身的引导,可由特殊工具创建的,比如说isohybrid,可将引导程序写入镜像文件前几个扇区,iso9660标准一般不会使用开始的几个用来引导的扇区,使iso镜像可以有引导功能。这也解释通了光盘为什么可以引导(光盘自身是ISO格式)。任何设备在Linux中都被抽象为文件,cat xx.iso > /dev/sdX将ISO中的内容输出重定向到设备上,从而完成了拷贝。在这个过程中,cat对iso文件没有任何处理,仅仅是数据拷贝。
同理,也可以创建一个ext4格式的文件镜像然后cat ext4file > sdX 完成对sdX硬盘的格式化和数据写入。 ## 参考文献 --- - https://unix.stackexchange.com/questions/31537/how-why-does-cat-write-a-bootable-iso-to-a-device - https://unix.stackexchange.com/questions/48267/what-happens-when-i-do-cat-debian-iso-dev-sdx
ISO文件自身的引导,可由特殊工具创建的,比如说isohybrid,可将引导程序写入镜像文件前几个扇区,iso9660标准一般不会使用开始的几个用来引导的扇区,使iso镜像可以有引导功能。这也解释通了光盘为什么可以引导(光盘自身是ISO格式)。任何设备在Linux中都被抽象为文件,cat xx.iso > /dev/sdX将ISO中的内容输出重定向到设备上,从而完成了拷贝。在这个过程中,cat对iso文件没有任何处理,仅仅是数据拷贝。
同理,也可以创建一个ext4格式的文件镜像然后cat ext4file > sdX 完成对sdX硬盘的格式化和数据写入。 ## 参考文献 --- - https://unix.stackexchange.com/questions/31537/how-why-does-cat-write-a-bootable-iso-to-a-device - https://unix.stackexchange.com/questions/48267/what-happens-when-i-do-cat-debian-iso-dev-sdx