Π Π΅Π»ΠΈΠ· минималистичного Π½Π°Π±ΠΎΡ€Π° систСмных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ BusyBox 1.34

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ Ρ€Π΅Π»ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° BusyBox 1.34 с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°Π±ΠΎΡ€Π° стандартных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ UNIX, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для минимального потрСблСния систСмных рСсурсов ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° ΠΌΠ΅Π½Π΅Π΅ 1 Мб. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ выпуск Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ 1.34 позиционируСтся ΠΊΠ°ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, полная стабилизация Π±ΡƒΠ΄Π΅Ρ‚ обСспСчСна Π² вСрсии 1.34.1, которая оТидаСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· мСсяц. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2.

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ BusyBox Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ», содСрТащий Π² сСбС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ (каТдая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° доступна Π² Ρ„ΠΎΡ€ΠΌΠ΅ символичСской ссылки Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»). Π Π°Π·ΠΌΠ΅Ρ€, состав ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² зависимости ΠΎΡ‚ потрСбностСй ΠΈ возмоТностСй встраиваСмой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ осущСствляСтся сборка. ΠŸΠ°ΠΊΠ΅Ρ‚ самодостаточный, ΠΏΡ€ΠΈ статичСской сборкС с uclibc для создания Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ систСмы ΠΏΠΎΠ²Π΅Ρ€Ρ… ядра Linux трСбуСтся лишь ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² устройств Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /dev ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ выпуском 1.33 ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠΉ сборкой BusyBox 1.34 ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎΡΡŒ Π½Π° 9620 Π±Π°ΠΉΡ‚ (с 1032724 Π΄ΠΎ 1042344 Π±Π°ΠΉΡ‚).

BusyBox являСтся основным инструмСнтом Π² Π±ΠΎΡ€ΡŒΠ±Π΅ с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ GPL Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°Ρ…. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Software Freedom Conservancy (SFC) ΠΈ Software Freedom Law Center (SFLC) ΠΎΡ‚ Π»ΠΈΡ†Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² BusyBox ΠΊΠ°ΠΊ Ρ‡Π΅Ρ€Π΅Π· суд, Ρ‚Π°ΠΊ ΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ внСсудСбных соглашСний Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ воздСйствовала Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ доступ ΠΊ исходному ΠΊΠΎΠ΄Ρƒ GPL-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π°Π²Ρ‚ΠΎΡ€ BusyBox всячСски Π²ΠΎΠ·Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ — считая Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π»ΠΎΠΌΠ°Π΅Ρ‚ Π΅ΠΌΡƒ бизнСс.

Π’ вСрсии BusyBox 1.34 Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ascii c ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈΠΌΡ‘Π½ ASCII-символов.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° crc32 для подсчёта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… сумм.
  • Π’ΠΎ встроСнном http-сСрвСрС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² DELETE, PUT ΠΈ OPTIONS.
  • Π’ udhcpc прСдоставлСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ смСны ΠΈΠΌΠ΅Π½ΠΈ сСтСвого интСрфСйса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
  • Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TLS появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° эллиптичСских ΠΊΡ€ΠΈΠ²Ρ‹Ρ… secp256r1 (P256)
  • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ ash ΠΈ hush. Π’ hush ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ^D ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² соотвСтствиС с ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ash ΠΈ bash, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° спСцифичная для bash конструкция $’str’, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ ${var/pattern/repl}.
  • ВнСсСна большая порция исправлСний ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ awk.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ base32 ΠΈ base64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-i» для игнорирования Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… символов.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ… bc ΠΈ dc ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния BC_LINE_LENGTH ΠΈ DC_LINE_LENGTH ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π° ΠΊ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌ GNU.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ blockdev Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ —getra ΠΈ —setra.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ chattr ΠΈ lsattr Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-p». Π’ lsattr Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ число ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² Π€Π‘ ext2.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ cp Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ «-n» (Π·Π°ΠΏΡ€Π΅Ρ‚ пСрСзаписи) ΠΈ «-t DIR» (Π·Π°Π΄Π°Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°).
  • Π’ cpio Π½Π°Π»Π°ΠΆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° конструкции «cpio -d -p A/B/C».
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ df Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-t TYPE» (ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π€Π‘).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ du Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция -b (эквивалСнт ‘—apparent-size —block-size=1’).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ env Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-0» (Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки символом с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ free Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-h» (Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ ionice Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-t» (ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сбоСв).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ login Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния LOGIN_TIMEOUT.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ mv Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ «-t» (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для пСрСмСщСния) ΠΈ «-T» (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»Π°).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ shred Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-s SIZE» (число ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌΡ‹Ρ… Π±Π°ΠΉΡ‚).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ taskset Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-a» (ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ привязки ΠΊ CPU для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² процСсса).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ… timeout, top, watch ΠΈ ping Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π΅Ρ†Π΅Π»Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (NN.N).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ uniq Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-z» (использованиС символа с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π² качСствС раздСлитСля).
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ unzip Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «-t» (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Ρ€Ρ…ΠΈΠ²Π°).
  • Π’ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ vi Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ‘:s’. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ expandtab. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ пСрСмСщСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°ΠΌΠΈ, Π²Ρ‹Π±ΠΎΡ€Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ xxd Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ -i (Π²Ρ‹Π²ΠΎΠ΄ Π² стилС Π‘ΠΈ) ΠΈ «-o DISPLAYOFFSET».
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ wget Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ² HTTP 307/308 для Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚Π°. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция FEATURE_WGET_FTP для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ/ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ FTP.
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ dd Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «iflag=count_bytes».
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ cut Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ совмСстимыС с инструмСнтариСм toybox ΠΎΠΏΡ†ΠΈΠΈ «-O OUTSEP», «-D» ΠΈ «-F LIST».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ