curl > dev/sda
Author: astrid | Source: astrid.tech
核心概念
可以直接把下载的磁盘镜像直接pipe到磁盘设备,无需先保存到文件:
curl https://something.example/foo.img > /dev/sda
为什么能工作?
/dev/sdX、/dev/nvmeX等磁盘可以直接从文件系统访问,遵循古老的Unix概念——"一切皆文件"。写入/dev/sdX就是直接写入磁盘!
EFI自动发现
大多数EFI机器无需任何efibootmgr命令,因为EFI固件会自动发现新的EFI系统分区!
演进历程
第1步:正常方式
wget -O disk.img https://www.raspberrypi.com/whatever
sudo dd bs=1M if=disk.img of=/dev/sdx
第2步:更懒
curl https://www.raspberrypi.com/whatever | sudo dd bs=1M of=/dev/sdx
第3步:更更懒
sudo -i
curl https://www.raspberrypi.com/whatever > /dev/sdx
第4步:直接在线安装
在VPS上直接用rescue模式:
ssh root@myhost
wget -O- > /dev/sda
在运行中的系统上写入?
实验结果:会crash!
作者尝试在运行的系统上直接写入磁盘,结果在77.8%处panic。因为正在运行的OS相关代码被覆盖了。
解决方案:Rescue镜像
大多数Linux发行版的安装盘都自带rescue工具。Arch、NixOS、Fedora的安装盘都可以!
作者使用Contabo的Debian rescue镜像启动,然后:
wget -O- > /dev/sda
终极问题
能否完全从内存运行来实现原地OS替换?把需要的工具复制到内存 unmount所有其他东西 从内存写入磁盘?
To be continued...