ΠΠ΅Π½Π½Π°ΡΡ ΠΠΎΡΡΠ΅ΡΠΈΠ½Π³ (Lennart Poettering) ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ systemd ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π€Π‘, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ c Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Ρ ΠΎΡΡΠ° ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ HTTP. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ systemd Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΏΠΎ HTTP Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½ΠΎ ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π·, ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Ρ Π±Π»ΠΎΡΠ½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Π² loopback-ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π»ΠΎΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ°ΠΊ /sysroot ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Ρ Π½Π΅Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π΄ΠΈΡΠΊΠΎΠ²ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ systemd-import-generator ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΠΎΡΡΠ°Π² systemd 257. ΠΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΊΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΡΡΠ΅Π±ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΈΠΊΠ» Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π½ΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΡΡΡ Π΄ΠΎΠ²Π΅ΡΡΠΈ Π΄ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ΅Π· UEFI HTTP Boot ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠ΄ΡΠ° UKI (Unified Kernel Image), ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π΄Π»Ρ UEFI (UEFI boot stub), ΠΎΠ±ΡΠ°Π· ΡΠ΄ΡΠ° Linux ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² ΠΏΠ°ΠΌΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ initrd.
URL Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΏΠ»Π°Π½ΠΈΡΡΡΡ Π²ΡΡΠΈΡΠ»ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ URL, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ EFI-ΠΎΠ±ΡΠ°Π·Π° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ UEFI HTTP Boot (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ΅ΡΠ΅Π· EFI HTTP Boot «http://example.com/somedir/myimage.efi», ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠΉ Π² UKI initrd-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π°Π³ΡΡΠ·ΠΈΡ ΠΎΠ±ΡΠ°Π· rootfs ΠΊΠ°ΠΊ «http://example.com/somedir/myimage.raw.xz»). Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΏΠΎΠΌΠΈΠΌΠΎ HTTP Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ° Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·Π° ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ NVMe-over-TCP, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ NVMe-Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠΌ ΠΏΠΎ ΡΠ΅ΡΠΈ (NVM Express over Fabrics), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TCP.
ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ², ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΡ Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Ρ ΠΎΡΡΠ°, ΡΠΏΡΠΎΡΡΠΈΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ («immutable») ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π½Π° ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π· Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ mkosi ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π· HTTP ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «mkosi -f serve». ΠΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² EFI Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΠΎ HTTP ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ URL Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ: kernel-bootcfg —add-uri=http://192.168.47.11:8081/image.efi —title=testloop —boot-order=0
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈ ΠΎΠ½ Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π· ΡΠ΄ΡΠ° UKI, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ Π·Π°Π³ΡΡΠ·ΠΈΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π€Π‘. ΠΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² EFI Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎ HTTP ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ²Π΅ΠΆΠ΅Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°. ΠΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠΊΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru