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

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

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

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

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

  • ์ฐพ๊ธฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” "-samefile name" ์˜ต์…˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ํŒŒ์ผ์ด ์ง€์ •๋œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํŒŒ์ผ๊ณผ ๋™์ผํ•œ inode๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๋น„๊ต๋ฅผ ์œ„ํ•œ ํ†ตํ•ฉ ์ฝ”๋“œ์™€ ์•ก์„ธ์Šค ์‹œ๊ฐ„ ๋ฐ ํŒŒ์ผ ์ƒ์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ "-amin", "-atime", "-cmin" ๋ฐ "-ctime" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • mktemp ์œ ํ‹ธ๋ฆฌํ‹ฐ์—๋Š” ์ž„์‹œ ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ๊ฒฝ๋กœ๊ฐ€ ๊ณ„์‚ฐ๋˜๋Š” ๊ธฐ์ค€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋Š” "--tmpdir" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์žฅ์น˜ ๋ฒˆํ˜ธ(ํ•ญ์ƒ 0์ด ๊ธฐ๋ก๋จ)๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ์œ„ํ•ด cpio ์œ ํ‹ธ๋ฆฌํ‹ฐ์— "-ignore-devno" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์•„์นด์ด๋ธŒ์— ์ €์žฅํ•˜๊ธฐ ์ „์— inode ๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ "-renumber-inodes" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • awk ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ "printf %%" ํ‘œํ˜„์ด ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • libbb ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์•ฝ XNUMX๊ฐœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. coreutils ์„ธํŠธ์˜ ํ•ด๋‹น ํ•ญ๋ชฉ๊ณผ realpath์˜ ํ˜ธํ™˜์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์‰˜๊ณผ์˜ ํ˜ธํ™˜์„ฑ ํ–ฅ์ƒ์„ ๋ชฉํ‘œ๋กœ ash ๋ฐ hush ๋ช…๋ น ์‰˜์— ๋Œ€ํ•œ ๋งŽ์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Ash๋Š” bash์™€ ์œ ์‚ฌํ•œ ERR ํŠธ๋žฉ, -E ๋ฐ $FUNCNAME ์„ค์ •, "${s:}" ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•œ ๋” ๋น ๋ฅธ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์‹๊ฐ„์— "${x//\*/|}" ์ž‘์—… ์‹คํ–‰์ด ๊ฐ€์†ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • basename ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ๋กœ ์—ฌ๋Ÿฌ ์ด๋ฆ„์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ "-a" ์˜ต์…˜๊ณผ ํ›„ํ–‰ "SUFFIX" ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ "-s SUFFIX" ์˜ต์…˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • blkdiscard ์œ ํ‹ธ๋ฆฌํ‹ฐ์— "-f"(๊ฐ•์ œ) ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • httpd๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€์— ๋Œ€ํ•ด Last-Modified/ETag/Content-Length ํ—ค๋” ์ „์†ก์„ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • httpd์™€ telnetd๋Š” ๊ธฐ๋ณธ ๋„คํŠธ์›Œํฌ ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์ด๋ฆ„์ด ๋งค์šฐ ๊ธด ์•„์นด์ด๋ธŒ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋‘ ์†Œ๋ชจํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” tar์˜ ์ทจ์•ฝ์„ฑ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • P256 ๋ฐ x25519์˜ ๊ตฌํ˜„์ด TLS ์ฝ”๋“œ์—์„œ ์žฌ์ž‘์—…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • wget ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ํŒŒ์ผ ์ „์†ก์„ ์œ„ํ•œ "--post-file" ์˜ต์…˜์„ ๊ตฌํ˜„ํ•˜๊ณ  "--post-data" ๋ฐ "--post-file" ์˜ต์…˜์— ๋Œ€ํ•œ Content-Type ํ—ค๋”์˜ ๋‚ด์šฉ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„ ์ดˆ๊ณผ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ด์ œ ๋ช…๋ น์ด ์ถ”๊ฐ€ KILL_SECS ์ดˆ ๋‚ด์— ์™„๋ฃŒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ SIGKILL ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š” "-k KILL_SECS" ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์น˜์— ๋Œ€ํ•œ netns ๋งค๊ฐœ๋ณ€์ˆ˜ ์„ค์ • ์ง€์›์ด ip ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • cal ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” "-m" ์˜ต์…˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ง€์ •๋œ ์›”์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ ์งœ ๋ฐ ํ„ฐ์น˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ ์งœ์— ์‹œ๊ฐ„๋Œ€ ์˜คํ”„์…‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • vi ํŽธ์ง‘๊ธฐ์—์„œ ~/.exrc ํŒŒ์ผ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ "-c" ๋ฐ EXINIT ์ฒ˜๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ed ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ช…๋ น ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ POSIX-1.2008 ์‚ฌ์–‘์„ ์ค€์ˆ˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. "-p" ์˜ต์…˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๊ต๋ฅผ N ๋ฐ”์ดํŠธ๋กœ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด cmp ์œ ํ‹ธ๋ฆฌํ‹ฐ์— "-n N" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

Toybox 0.8.6์˜ ํ˜์‹  ์ค‘์—๋Š” ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์„ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ๊ฐœ์„ , sha256sum, sha224sum, sha384sum, sha512sum, linux32, strace ๋ฐ hexdump ๋ช…๋ น ์ถ”๊ฐ€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„๋œ ์˜ต์…˜ "date -s", "pmap -p", "tail -F -s", "kill -0", ์žฌ๋ถ€ํŒ…/์ค‘์ง€/poweroff -d", "tail โ€“bytes โ€“lines", "i2cDetect -q" , "find -quit -lname -ilname -d", "cut -d $'\n'", "cut -nb", "cpio -ignore-devno -renumber-inodes", "tar -selinux", "split -n", "grep -L".

์ถœ์ฒ˜ : opennet.ru

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