GNU Shepherd 0.9 ์ดˆ๊ธฐํ™” ์‹œ์Šคํ…œ ์ถœ์‹œ

๋งˆ์ง€๋ง‰ ์ค‘์š”ํ•œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ํ˜•์„ฑ๋œ ์ง€ 0.9๋…„ ํ›„ ์„œ๋น„์Šค ๊ด€๋ฆฌ์ž GNU Shepherd XNUMX(์ด์ „์˜ dmd)๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” GNU Guix ์‹œ์Šคํ…œ ๋ฐฐํฌํŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ข…์†์„ฑ์„ ์ง€์›ํ•˜๋Š” SysV-init ์ดˆ๊ธฐํ™” ์‹œ์Šคํ…œ์˜ ๋Œ€์•ˆ์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. . Shepherd ์ œ์–ด ๋ฐ๋ชฌ๊ณผ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” Guile ์–ธ์–ด(Scheme ์–ธ์–ด ๊ตฌํ˜„ ์ค‘ ํ•˜๋‚˜)๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์„œ๋น„์Šค ์‹œ์ž‘์„ ์œ„ํ•œ ์„ค์ • ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Shepherd๋Š” ์ด๋ฏธ GuixSD GNU/Linux ๋ฐฐํฌํŒ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ GNU/Hurd์—์„œ๋„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด์ง€๋งŒ Guile ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  POSIX ํ˜ธํ™˜ OS์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Shepherd๋Š” ์„œ๋น„์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ค‘์ง€ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์„ ํƒํ•œ ์„œ๋น„์Šค๊ฐ€ ์˜์กดํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋™์ ์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Shepherd๋Š” ๋˜ํ•œ ์„œ๋น„์Šค ๊ฐ„์˜ ์ถฉ๋Œ์„ ๊ฐ์ง€ํ•˜๊ณ  ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™” ์‹œ์Šคํ…œ(PID 1๋กœ ์ดˆ๊ธฐํ™”)์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๊ถŒํ•œ์ด ์žˆ๋Š” ์‹คํ–‰์„ ํ†ตํ•ด ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž์˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค(์˜ˆ: tor, privoxy, mcron ๋“ฑ ์‹คํ–‰)๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‚ฌ์šฉ์ž ์ค‘.

์ฃผ์š” ํ˜์‹ :

  • ์ž„์‹œ ์„œ๋น„์Šค(์ผ์‹œ์ ) ๊ฐœ๋…์ด ๊ตฌํ˜„๋˜์–ด ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ๋˜๋Š” "stop" ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋กœ ์ธํ•ด ์™„๋ฃŒ ํ›„ ์ž๋™์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ํ•ฉ์„ฑ ์„œ๋น„์Šค์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • inetd์™€ ์œ ์‚ฌํ•œ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด "make-inetd-constructor" ์ ˆ์ฐจ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ํ™œ๋™ ์ค‘์— (systemd ์†Œ์ผ“ ํ™œ์„ฑํ™” ์Šคํƒ€์ผ๋กœ) ํ™œ์„ฑํ™”๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด "make-systemd-constructor" ํ”„๋กœ์‹œ์ €๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์ ˆ์ฐจ("๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹œ์ž‘")๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • "make-forkexec-constructor" ๋ฃจํ‹ด์— ":supplementary-groups", "#:create-session" ๋ฐ "#:resource-limits" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • PID ํŒŒ์ผ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ์ž‘์—…์„ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "#:log-file" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ syslog์— ์ถœ๋ ฅ์ด ์ œ๊ณต๋˜๊ณ , #:log-file ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ๋…นํ™” ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ„๋„์˜ ํŒŒ์ผ์— ๋กœ๊ทธ๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด ์—†๋Š” ์…ฐํผ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋กœ๊ทธ๋Š” $XDG_DATA_DIR ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • Guile 2.0์„ ์‚ฌ์šฉํ•œ ๋นŒ๋“œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Guile ๋ฒ„์ „ 3.0.5~3.0.7 ์‚ฌ์šฉ ์‹œ ๋ฐœ์ƒํ•˜๋˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ ์ž‘๋™ํ•˜๋ ค๋ฉด Fibers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 1.1.0 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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