curl > dev/sda

⭐⭐⭐⭐ Linux 系统安装 Unix哲学

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...