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

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

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

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

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

  • ์ƒˆ๋กœ์šด ๋ช…๋ น ์ถ”๊ฐ€: ts(TSP(Time-Stamp Protocol) ํ”„๋กœํ† ์ฝœ์„ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ๊ตฌํ˜„) ๋ฐ i2ctransfer(I2C ๋ฉ”์‹œ์ง€ ์ƒ์„ฑ ๋ฐ ์ „์†ก)
  • udhcp์— DHCP ์˜ต์…˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 100 IPv101์˜ ๊ฒฝ์šฐ (์‹œ๊ฐ„๋Œ€ ์ •๋ณด) ๋ฐ 6(TZ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์‹œ๊ฐ„๋Œ€ ์ด๋ฆ„)์ž…๋‹ˆ๋‹ค.
  • udhcpd์˜ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ •์  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ฐ”์ธ๋”ฉ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ash ๋ฐ hush ์‰˜์€ ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด "BASE#nnnn"์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. "-i RLIMIT_SIGPENDING" ๋ฐ "-q RLIMIT_MSGQUEUE" ์˜ต์…˜์„ ํฌํ•จํ•˜์—ฌ ulimit ๋ช…๋ น์˜ ๊ตฌํ˜„์ด bash์™€ ํ˜ธํ™˜๋˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. "wait -n"์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. bash ํ˜ธํ™˜ EPOCH ๋ณ€์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Hush ์‰˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋œ ์‰˜ ์˜ต์…˜์„ ๋‚˜์—ดํ•˜๋Š” "$-" ๋ณ€์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ์กฐ๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ์ฝ”๋“œ๋Š” ์—…์ŠคํŠธ๋ฆผ์—์„œ bc๋กœ โ€‹โ€‹์ „์†ก๋˜์—ˆ์œผ๋ฉฐ void ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์ตœ๋Œ€ 36๊ฐœ์˜ ibase ๊ฐ’์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • brctl์—์„œ๋Š” ๋ชจ๋“  ๋ช…๋ น์ด pseudo-FS /sys๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•˜๋„๋ก ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • fsync ๋ฐ sync ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ์ฝ”๋“œ๊ฐ€ ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • httpd์˜ ๊ตฌํ˜„์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HTTP ํ—ค๋” ์ฒ˜๋ฆฌ๊ฐ€ ํ–ฅ์ƒ๋˜์—ˆ์œผ๋ฉฐ ํ”„๋ก์‹œ ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. MIME ์œ ํ˜• ๋ชฉ๋ก์—๋Š” SVG ๋ฐ JavaScript๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • losstup(๋ฃจํ”„ ์žฅ์น˜์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ ํฌ๊ธฐ์˜ ๊ฐ•์ œ ์ด์ค‘ ํ™•์ธ)์— "-c" ์˜ต์…˜๊ณผ ํŒŒํ‹ฐ์…˜ ๊ฒ€์ƒ‰ ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. mount ๋ฐ losstup์€ /dev/loop-control ์‚ฌ์šฉ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ntpd์—์„œ SLEW_THRESHOLD ๊ฐ’์ด 0.125์—์„œ 0.5๋กœ ์ฆ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • sysctl์— null ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์‹œํ•  "-n SEC" ์˜ต์…˜์— ๋ถ„์ˆ˜ ๊ฐ’์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • mdev๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • wget ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” "-o" ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์“ธ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ์‹œ์ž‘ ๋ฐ ์™„๋ฃŒ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • telnetd์— AYT IAC ๋ช…๋ น์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • vi์— 'dG' ๋ช…๋ น์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(ํ˜„์žฌ ์ค„๋ถ€ํ„ฐ ํŒŒ์ผ ๋๊นŒ์ง€ ๋‚ด์šฉ ์‚ญ์ œ).
  • dd ๋ช…๋ น์— 'oflag=append' ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ณ„ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก '-H' ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ตœ์ƒ์œ„ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

  • Toybox ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ Android๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•œ ๊ธฐ๋Šฅ ์ˆ˜์ค€์ด ๋‹ฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด mcookie ๋ฐ devmem ๋ช…๋ น์ด ํฌํ•จ๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์‹œ ์ž‘์„ฑ๋œ tar, gunzip ๋ฐ zcat ๋ช…๋ น์ด ํ…Œ์ŠคํŠธ ๋ถ„๊ธฐ์—์„œ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด vi์˜ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • find ๋ช…๋ น์€ ์ด์ œ "-wholename/-iwholename" ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    "-printf" ๋ฐ "-์ปจํ…์ŠคํŠธ";

  • grep์— "--exclude-dir" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Echo๋Š” ์ด์ œ "-E" ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์šดํŠธ์— "UUID" ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ date ๋ช…๋ น์€ TZ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ง€์ •๋œ ์‹œ๊ฐ„๋Œ€๋ฅผ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  • sed์— ์ƒ๋Œ€ ๋ฒ”์œ„(+N)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ps, top ๋ฐ iotop ์ถœ๋ ฅ์˜ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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