์ตœ์†Œํ•œ์˜ ์‹œ์Šคํ…œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ BusyBox 1.32 ์ถœ์‹œ

๋„์ž… ํŒจํ‚ค์ง€ ์ถœ์‹œ ๋น„์ง€๋ฐ•์Šค 1.32 ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ๋กœ ์„ค๊ณ„๋˜๊ณ  1MB ๋ฏธ๋งŒ์˜ ํฌ๊ธฐ๋กœ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์†Œ๋น„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋„๋ก ์ตœ์ ํ™”๋œ ํ‘œ์ค€ UNIX ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ 1.32์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋Š” ๋ถˆ์•ˆ์ •ํ•œ ๊ฒƒ์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ–ˆ์œผ๋ฉฐ, ์™„์ „ํ•œ ์•ˆ์ •ํ™”๋Š” ๋ฒ„์ „ 1.32.1์—์„œ ์ œ๊ณต๋  ์˜ˆ์ •์ด๋ฉฐ ์•ฝ ํ•œ ๋‹ฌ ํ›„์— ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” GPLv2 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

BusyBox์˜ ๋ชจ๋“ˆ์‹ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ํŒจํ‚ค์ง€์— ๊ตฌํ˜„๋œ ์ž„์˜์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ๊ฐ€ ํฌํ•จ๋œ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ ์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ด ํŒŒ์ผ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ). ์œ ํ‹ธ๋ฆฌํ‹ฐ ์ปฌ๋ ‰์…˜์˜ ํฌ๊ธฐ, ๊ตฌ์„ฑ ๋ฐ ๊ธฐ๋Šฅ์€ ์กฐ๋ฆฝ์ด ์ˆ˜ํ–‰๋˜๋Š” ์ž„๋ฒ ๋””๋“œ ํ”Œ๋žซํผ์˜ ์š”๊ตฌ ์‚ฌํ•ญ๊ณผ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋Š” ์ž์ฒด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. uclibc๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ ์œผ๋กœ ๋นŒ๋“œํ•  ๋•Œ Linux ์ปค๋„ ์œ„์— ์ž‘์—… ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋ ค๋ฉด /dev ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์—ฌ๋Ÿฌ ์žฅ์น˜ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ค€๋น„ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฆด๋ฆฌ์Šค 1.31๊ณผ ๋น„๊ตํ•˜์—ฌ ์ผ๋ฐ˜์ ์ธ BusyBox 1.32 ์–ด์…ˆ๋ธ”๋ฆฌ์˜ RAM ์†Œ๋น„๋Š” 3590๋ฐ”์ดํŠธ(1011750์—์„œ 1015340๋ฐ”์ดํŠธ๋กœ) ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

BusyBox๋Š” ํŽŒ์›จ์–ด์˜ GPL ์œ„๋ฐ˜์— ๋งž์„œ ์‹ธ์šฐ๋Š” ์ฃผ์š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. BusyBox ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ SFC(Software Freedom Conservancy) ๋ฐ SFLC(Software Freedom Law Center)๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ๋ฒ•์ •, ๊ทธ๋ฆฌ๊ณ  ์ด์ชฝ์œผ๋กœ ๊ฒฐ๋ก  ๋ฒ•์ • ๋ฐ– ๊ณ„์•ฝ์€ GPL ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํšŒ์‚ฌ์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์„ฑ๊ณต์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— BusyBox์˜ ์ €์ž๋Š” ์ตœ์„ ์„ ๋‹คํ•ฉ๋‹ˆ๋‹ค. ~์—์žˆ๋Š” ๋Œ€์ƒ๋“ค ๊ทธ๋Ÿฌํ•œ ๋ณดํ˜ธ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค - ๊ทธ๊ฒƒ์ด ๊ทธ์˜ ์‚ฌ์—…์„ ๋ง์น  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

BusyBox 1.32์—์„œ๋Š” ๋‹ค์Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ฐ•์กฐ๋ฉ๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ๋ช…๋ น์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๋‚˜๋ฅผ ์ฃผ์–ด์ง„ Mimfile์—์„œ Skipts๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด(๋‹ค์†Œ ๊ฐ„๋‹จํ•œ make ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์—ฐ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค);
  • ๋นˆ ํŒŒ์ผ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฐพ๊ธฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— "-empty" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • wget ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ๋Š” ๋ฆฌ๋””๋ ‰์…˜ ์ˆ˜์— ๋Œ€ํ•œ ์ œํ•œ์ด ํ™•์žฅ๋˜์—ˆ์œผ๋ฉฐ ENABLE_FEATURE_WGET_OPENSSL์„ ์‚ฌ์šฉํ•˜์—ฌ TLS ์ธ์ฆ์„œ ํ™•์ธ์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • grep์— ํŒจํ„ด ๋ชฉ๋ก(pattern_list)์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ  "-R" ์˜ต์…˜(๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์šฉ์˜ ์žฌ๊ท€ ์ฒ˜๋ฆฌ)์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Clang 9์—์„œ ๋นŒ๋“œํ•  ๋•Œ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์‰˜๊ณผ์˜ ํ˜ธํ™˜์„ฑ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ๋กœ ash ๋ฐ hush ๋ช…๋ น ์‰˜์— ๋Œ€ํ•œ ๋งŽ์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํƒญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด์žฅ ๋ช…๋ น์„ ์ž๋™ ์™„์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ash ๋ฐ hush์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋‚ด์žฅ ๋ช…๋ น์ด Ash์—์„œ ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • fdisk ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ด์ œ HFS ๋ฐ HFS+ ํŒŒํ‹ฐ์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • init๋Š” ์‹ ํ˜ธ ์ˆ˜์‹  ์‹œ ๊ฒฝ์Ÿ ์กฐ๊ฑด ์ฒ˜๋ฆฌ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์‹œ๊ฐ์  ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ nm๋ฏธํ„ฐ ์ถœ๋ ฅ ํ˜•์‹ "%NT"(์‹œ๊ฐ„์„ XNUMX์œผ๋กœ ์ •๋ ฌ)๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • CPU ๋ชฉ๋ก์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ž‘์—… ์„ธํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ต์…˜ "-c").
  • tar์—์„œ๋Š” "-a" ์˜ต์…˜์˜ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜์–ด "lzma" ์••์ถ•์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๋Œ€์‹  ์ด์ œ ํŒŒ์ผ ํ™•์žฅ์ž๋ณ„ ์ž๋™ ๊ฐ์ง€์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • Udhcpc6์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.๋ฌด๊ตญ์ ์žยป DHCPv6์˜ ๊ฒฝ์šฐ(์„œ๋ฒ„๋Š” ์ฃผ์†Œ๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์ „์†กํ•จ)
  • nslookup์€ ์ด์ œ RR ๋ ˆ์ฝ”๋“œ ์—†์ด ์‘๋‹ต ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๊ณ  SRV ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ช…๋ น "showmacs" ๋ฐ "showstp"๊ฐ€ brctl์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • dhcpc์— "๋ฆด๋ ˆ์ด ์„œ๋ฒ„" ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•˜๋„๋ก syslogd์— ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • httpd์—์„œ๋Š” NOMMU ๋ชจ๋“œ๋กœ ์‹คํ–‰๋  ๋•Œ ๋‹ค๋ฅธ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •์ด ํ—ˆ์šฉ๋˜๋ฉฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ๋•Œ '-h' ์˜ต์…˜์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • xargs๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์ธ ์ธ์ˆ˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐœ์„ ํ–ˆ์œผ๋ฉฐ "-n" ์˜ต์…˜์˜ ์˜ฌ๋ฐ”๋ฅธ ๋™์ž‘์„ ๋ณด์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • grep, top, dc, gzip, awk, bc, ntpd, pidof, stat, telnet, tftp, whois, unzip, chgrp, httpd, vi, Route ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ง€๋‚œ๋‹ฌ์—๋Š” ์ผ์–ด๋‚ฌ๋‹ค ์„๋ฐฉํ•˜๋‹ค ํ† ์ด๋ฐ•์Šค 0.8.3, ์ „ BusyBox ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฐœ๋ฐœํ•œ BusyBox์˜ ์œ ์‚ฌํ’ˆ ๋ถ„์‚ฐ BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ. Toybox์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์ œ์กฐ์—…์ฒด์— ์ˆ˜์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—ด์ง€ ์•Š๊ณ ๋„ ์ตœ์†Œํ•œ์˜ ํ‘œ์ค€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ Toybox ์„ฑ๋Šฅ์— ๋”ฐ๋ฅด๋ฉด ํ›„ํ–‰ ํ•˜์ง€๋งŒ ๊ณ„ํš๋œ 272๊ฐœ ์ค‘ ๊ธฐ๋ณธ ๋ช…๋ น 204๊ฐœ(์™„์ „ 68๊ฐœ, ๋ถ€๋ถ„ 343๊ฐœ)๊ฐ€ ์ด๋ฏธ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Toybox 0.8.3์˜ ํ˜์‹  ์ค‘ ๋‹ค์Œ์„ ์ฃผ๋ชฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ๋ช…๋ น rtcwake, blkdiscard, getopt ๋ฐ readelf๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "make root"๋Š” ์ž์ฒด init ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” Linux ์ปค๋„ ๋ฐ Toybox ์œ ํ‹ธ๋ฆฌํ‹ฐ๋งŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์—… ๋ถ€ํŒ… ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ToyBox์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋ณ„๋„์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ตฌํ˜„์ด ์žˆ๋Š” ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ช…๋ น ํ•ด์„๊ธฐ์ธ toysh๋Š” 80% ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋Šฅ, ๊ธฐ๋ก, ํ„ฐ๋ฏธ๋„ ๊ด€๋ฆฌ, ์ž‘์—…, $((math)), ํ…œํ”Œ๋ฆฟ์€ ์•„์ง ์ง€์›๋˜์ง€ ์•Š์Œ).
  • patch, cal, cp, mv, lsattr, chattr, ls, id, netcat ๋ฐ setid๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ถ”๊ฐ€ ์˜ต์…˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€