UKI(Unified Kernel Image)๋ฅผ ์ง€์›ํ•˜๋Š” systemd ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž 252 ์ถœ์‹œ

252๊ฐœ์›” ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž systemd XNUMX๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ปค๋„๊ณผ ๋ถ€ํŠธ๋กœ๋”๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌ์„ฑ ์š”์†Œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„๋Œ€ํ™”๋œ ๋ถ€ํŒ… ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ง€์› ํ†ตํ•ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์ด์šฉํ•œ ๊ธฐ๋ณธ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

์ œ์•ˆ๋œ ๋ฐฉ๋ฒ•์€ UEFI(UEFI boot stub)์—์„œ ์ปค๋„์„ ๋กœ๋”ฉํ•˜๊ธฐ ์œ„ํ•œ ํ•ธ๋“ค๋Ÿฌ, ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ด๋ฏธ์ง€, ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋œ initrd ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์„ ๊ฒฐํ•ฉํ•œ ํ†ตํ•ฉ ์ปค๋„ ์ด๋ฏธ์ง€ UKI(Unified Kernel Image)๋ฅผ ๋กœ๋”ฉ ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฃจํŠธ FS๋ฅผ ๋งˆ์šดํŠธํ•˜๊ธฐ ์ „ ๋‹จ๊ณ„์—์„œ ์ดˆ๊ธฐ ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•ด. UKI ์ด๋ฏธ์ง€๋Š” PE ํ˜•์‹์˜ ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง€๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๊ธฐ์กด ๋ถ€ํŠธ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ UEFI ํŽŒ์›จ์–ด์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UEFI์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ์ปค๋„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ initrd์˜ ๋‚ด์šฉ์— ๋Œ€ํ•œ ๋””์ง€ํ„ธ ์„œ๋ช…์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด๊ฒฐ์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  UKI ์ด๋ฏธ์ง€์˜ ๋””์ง€ํ„ธ ์„œ๋ช…์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” TPM PCR(์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ๋ชจ๋“ˆ ํ”Œ๋žซํผ ๊ตฌ์„ฑ ๋ ˆ์ง€์Šคํ„ฐ) ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์œ ํ‹ธ๋ฆฌํ‹ฐ systemd-measure๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ช…์— ์‚ฌ์šฉ๋œ ๊ณต๊ฐœ ํ‚ค์™€ ๊ทธ์— ์ˆ˜๋ฐ˜๋˜๋Š” PCR ์ •๋ณด๋Š” UKI ๋ถ€ํŒ… ์ด๋ฏธ์ง€์— ์ง์ ‘ ์‚ฝ์ž…๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ(ํ‚ค์™€ ์„œ๋ช…์€ PE ํŒŒ์ผ์˜ '.pcrsig' ๋ฐ '.pcrkey' ํ•„๋“œ์— ์ €์žฅ๋จ) ์™ธ๋ถ€์—์„œ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‚ด๋ถ€ ์œ ํ‹ธ๋ฆฌํ‹ฐ.

ํŠนํžˆ, systemd-cryptsetup, systemd-cryptenroll ๋ฐ systemd-creds ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์กฐ์ •๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ๋””์Šคํฌ ํŒŒํ‹ฐ์…˜์ด ๋””์ง€ํ„ธ ์„œ๋ช…๋œ ์ปค๋„์— ๋ฐ”์ธ๋”ฉ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ ์•”ํ˜ธํ™”๋œ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ์•ก์„ธ์Šค). UKI ์ด๋ฏธ์ง€๊ฐ€ TPM์— ์žˆ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋””์ง€ํ„ธ ์„œ๋ช…์œผ๋กœ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ systemd-pcrphase ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด TPM 2.0 ์‚ฌ์–‘์„ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ํ”„๋กœ์„ธ์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๋ถ€ํŒ… ๋‹จ๊ณ„์˜ ๋ฐ”์ธ๋”ฉ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. initrd ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ดํ›„ ๋‹จ๊ณ„ ๋‹ค์šด๋กœ๋“œ ์‹œ ํ•ด๋‹น ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ์„ค์ •์—์„œ ๋‹ค๋ฅธ ๋กœ์ผ€์ผ์ด ์ง€์ •๋˜์ง€ ์•Š๋Š” ํ•œ ๊ธฐ๋ณธ ๋กœ์ผ€์ผ์ด C.UTF-8์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ ์ฒ˜์Œ ๋ถ€ํŒ…ํ•˜๋Š” ๋™์•ˆ ์ „์ฒด ์„œ๋น„์Šค ์‚ฌ์ „ ์„ค์ • ์ž‘์—…("systemctl Preset")์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€ํŒ… ์‹œ ์‚ฌ์ „ ์„ค์ •์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด "-Dfirst-boot-full-preset" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•ด์•ผ ํ•˜์ง€๋งŒ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์žฅ์น˜์—๋Š” CPU ๋ฆฌ์†Œ์Šค ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ์‹œ์Šคํ…œ์„ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„(app.slice, background.slice, session.slice)์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ์Šฌ๋ผ์ด์Šค ๋‹จ์œ„์— CPUWeight ์„ค์ •์ด ์ ์šฉ๋˜์–ด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒฉ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU ๋ฆฌ์†Œ์Šค๋ฅผ ๋†“๊ณ  ๊ฒฝ์Ÿํ•˜๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ์„œ๋น„์Šค. CPUWeight๋Š” ์ ์ ˆํ•œ ๋ฆฌ์†Œ์Šค ํ”„๋กœ๋น„์ €๋‹ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด "์œ ํœด" ๊ฐ’๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž„์‹œ("์ž„์‹œ") ์žฅ์น˜ ๋ฐ systemd-repart ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ๋Š” /etc/systemd/system/name.d/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋“œ๋กญ์ธ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์„ค์ •์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์ง€์› ์ข…๋ฃŒ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋˜์–ด /etc/os-release ํŒŒ์ผ์˜ ์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜ โ€œSUPPORT_END=โ€ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด ์‚ฌ์‹ค์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ์— ํŠน์ • ์ž๊ฒฉ ์ฆ๋ช…์ด ์—†๋Š” ๊ฒฝ์šฐ ์žฅ์น˜๋ฅผ ๋ฌด์‹œํ•˜๊ฑฐ๋‚˜ ์ถฉ๋Œ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "ConditionCredential=" ๋ฐ "AssertCredential=" ์„ค์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ SMACK ๋ณด์•ˆ ์ˆ˜์ค€ ๋ฐ ์žฅ์น˜ ํ™œ์„ฑํ™” ์‹œ๊ฐ„ ์ œํ•œ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด system.conf ๋ฐ user.conf์— "DefaultSmackProcessLabel=" ๋ฐ "DefaultDeviceTimeoutSec=" ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "ConditionFirmware=" ๋ฐ "AssertFirmware=" ์„ค์ •์— ๊ฐœ๋ณ„ SMBIOS ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด /sys/class/dmi/id/board_name ํ•„๋“œ์— "Custom" ๊ฐ’์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ์—๋งŒ ์žฅ์น˜๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Boardโ€์ธ ๊ฒฝ์šฐ โ€œConditionFirmware=smbiosโ€ -field(board_name = "Custom Board")"๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ดˆ๊ธฐํ™” ํ”„๋กœ์„ธ์Šค(PID 1) ์ค‘์— qemu_fwcfg๋ฅผ ํ†ตํ•œ ์ •์˜ ์™ธ์—๋„ SMBIOS ํ•„๋“œ(์œ ํ˜• 11, "OEM ๊ณต๊ธ‰์—…์ฒด ๋ฌธ์ž์—ด")์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. cloud -init ๋ฐignition๊ณผ ๊ฐ™์€ ํƒ€์‚ฌ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ข…๋ฃŒ ์ค‘์— ๊ฐ€์ƒ ํŒŒ์ผ ์‹œ์Šคํ…œ(proc, sys) ๋งˆ์šดํŠธ ํ•ด์ œ ๋กœ์ง์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋งˆ์šดํŠธ ํ•ด์ œ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋กœ๊ทธ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ•„ํ„ฐ(SystemCallFilter)๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ riscv_flush_icache ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • sd-boot ๋ถ€ํŠธ๋กœ๋”๋Š” 64๋น„ํŠธ Linux ์ปค๋„์ด 32๋น„ํŠธ UEFI ํŽŒ์›จ์–ด์—์„œ ์‹คํ–‰๋˜๋Š” ํ˜ผํ•ฉ ๋ชจ๋“œ์—์„œ ๋ถ€ํŒ…ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ESP(EFI ์‹œ์Šคํ…œ ํŒŒํ‹ฐ์…˜)์— ์žˆ๋Š” ํŒŒ์ผ์—์„œ SecureBoot ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ์ ์šฉํ•˜๋Š” ์‹คํ—˜์  ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • bootctl ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ƒˆ๋กœ์šด ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ชจ๋“  EFI ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ "-all-architectures", ๋””๋ ‰ํ„ฐ๋ฆฌ ๋˜๋Š” ๋””์Šคํฌ ์ด๋ฏธ์ง€ ์ž‘์—…์„ ์œ„ํ•œ "-root=" ๋ฐ "-image=", "-install-source ="๋Š” ์„ค์น˜ ์†Œ์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , "-efi-boot-option-description="์€ ๋ถ€ํŒ… ํ•ญ๋ชฉ ์ด๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™์œผ๋กœ ๋งˆ์šดํŠธ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” 'list-automounts' ๋ช…๋ น๊ณผ ์ง€์ •๋œ ๋””์Šคํฌ ์ด๋ฏธ์ง€์™€ ๊ด€๋ จ๋œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” "--image=" ์˜ต์…˜์ด systemctl ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 'show' ๋ฐ 'status' ๋ช…๋ น์— "--state=" ๋ฐ "--type=" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-networkd์—๋Š” TCP ํ˜ผ์žก ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋Š” "TCPCongestionControlAlgorithm=" ์˜ต์…˜, TUN/TAP ์ธํ„ฐํŽ˜์ด์Šค์˜ ํŒŒ์ผ ์„ค๋ช…์ž๋ฅผ ์ €์žฅํ•˜๋Š” "KeepFileDescriptor=", NetLabels๋ฅผ ์„ค์ •ํ•˜๋Š” "NetLabel=", DHCPv6๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ ์†๋„๋ฅผ ๋†’์ด๋Š” "RapidCommit=" ์˜ต์…˜์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (RFC 3315). "RouteTable=" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • systemd-nspawn์„ ์‚ฌ์šฉํ•˜๋ฉด "--bind=" ๋ฐ "--overlay=" ์˜ต์…˜์—์„œ ์ƒ๋Œ€ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฃจํŠธ ์‚ฌ์šฉ์ž ID๋ฅผ ํ˜ธ์ŠคํŠธ ์ธก์— ๋งˆ์šดํŠธ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์†Œ์œ ์ž์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์œ„ํ•ด '--bind=" ์˜ต์…˜์— 'rootidmap' ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • systemd-resolved๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ OpenSSL์„ ์•”ํ˜ธํ™” ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(gnutls ์ง€์›์€ ์˜ต์…˜์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค). ์ง€์›๋˜์ง€ ์•Š๋Š” DNSSEC ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด์ œ ์˜ค๋ฅ˜(SERVFAIL)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • systemd-sysusers, systemd-tmpfiles ๋ฐ systemd-sysctl์€ ์ž๊ฒฉ ์ฆ๋ช… ์ €์žฅ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์„ค์ •์„ ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด์„ ๋ฒ„์ „ ๋ฒˆํ˜ธ์™€ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด systemd-analyze์— 'compare-versions' ๋ช…๋ น์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค('rpmdev-vercmp' ๋ฐ 'dpkg --compare-versions'์™€ ์œ ์‚ฌ). 'systemd-analyze dump' ๋ช…๋ น์— ๋งˆ์Šคํฌ๋ณ„๋กœ ์žฅ์น˜๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋‹จ๊ณ„ ์ ˆ์ „ ๋ชจ๋“œ(์ผ์‹œ ์ค‘์ง€ ํ›„ ์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ)๋ฅผ ์„ ํƒํ•˜๋ฉด ์ด์ œ ๋‚จ์€ ๋ฐฐํ„ฐ๋ฆฌ ์ˆ˜๋ช… ์˜ˆ์ธก์— ๋”ฐ๋ผ ๋Œ€๊ธฐ ๋ชจ๋“œ์—์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํ„ฐ๋ฆฌ ์ถฉ์ „๋Ÿ‰์ด 5% ๋ฏธ๋งŒ์œผ๋กœ ๋‚จ์•„ ์žˆ์œผ๋ฉด ์ ˆ์ „ ๋ชจ๋“œ๋กœ ์ฆ‰์‹œ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ์ถœ๋ ฅ ๋ชจ๋“œ "-o short-delta"๊ฐ€ 'journalctl'์— ์ถ”๊ฐ€๋˜์–ด ๋กœ๊ทธ์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€ ๊ฐ„์˜ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • systemd-repart๋Š” ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํฌํ•จํ•˜์—ฌ Squashfs ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ dm-verity์šฉ ํŒŒํ‹ฐ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒํ‹ฐ์…˜ ์ƒ์„ฑ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์ •๋œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ํ›„ ๋น„ํ™œ์„ฑ ์„ธ์…˜์„ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด systemd-logind์— "StopIdleSessionSec=" ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Systemd-cryptenroll์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋Œ€์‹  ํŒŒ์ผ์—์„œ ์•”ํ˜ธ ํ•ด๋… ํ‚ค๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด "--unlock-key-file=" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ udev๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ systemd-growfs ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • systemd-backlight๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ์— ์ œ๊ณต๋œ ์ฝ”๋“œ ์˜ˆ์ œ์— ๋Œ€ํ•œ ๋ผ์ด์„ผ์Šค๊ฐ€ CC0์—์„œ MIT-0์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ์†์ƒ์‹œํ‚ค๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ConditionKernelVersion ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•  ๋•Œ ์ด์ œ '=' ๋ฐ '!=' ์—ฐ์‚ฐ์ž์—์„œ ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด ๋น„๊ต๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋น„๊ต ์—ฐ์‚ฐ์ž๊ฐ€ ์ „ํ˜€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ glob-mask ์ผ์น˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž '*', '?' ๊ทธ๋ฆฌ๊ณ  '[', ']'. stverscmp() ์Šคํƒ€์ผ ๋ฒ„์ „์„ ๋น„๊ตํ•˜๋ ค๋ฉด '<', '>', '<=' ๋ฐ '>=' ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ์œ ๋‹› ํŒŒ์ผ์—์„œ ์•ก์„ธ์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” SELinux ํƒœ๊ทธ๋Š” ์ด์ œ ์•ก์„ธ์Šค ํ™•์ธ ์‹œ์ ์ด ์•„๋‹Œ ํŒŒ์ผ์ด ๋กœ๋“œ๋  ๋•Œ ์ฝํ˜€์ง‘๋‹ˆ๋‹ค.
  • ์ด์ œ "ConditionFirstBoot" ์กฐ๊ฑด์€ ์‹œ์Šคํ…œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€ํŒ… ์‹œ ๋ถ€ํŒ… ๋‹จ๊ณ„์—์„œ๋งŒ ์ง์ ‘ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  ๋ถ€ํŒ…์ด ์™„๋ฃŒ๋œ ํ›„ ์žฅ์น˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด "false"๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • 2024๋…„์— systemd๋Š” systemd ๋ฆด๋ฆฌ์Šค 1์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” cgroup v248 ๋ฆฌ์†Œ์Šค ์ œํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ง€์›์„ ์ค‘๋‹จํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋Š” cgroup v2 ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ cgroup v1๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์ „์— ์ฃผ์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. cgroups v2์™€ v1์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ CPU ๋ฆฌ์†Œ์Šค ํ• ๋‹น, ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ์กฐ์ ˆ ๋ฐ I/O๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ๊ณ„์ธต ๊ตฌ์กฐ ๋Œ€์‹  ๋ชจ๋“  ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค์— ๊ณตํ†ต cgroups ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋Š” ์ฒ˜๋ฆฌ๊ธฐ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ์ดˆ๋ž˜ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ณ„์ธต์—์„œ ์ฐธ์กฐ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์ ์šฉํ•  ๋•Œ ์ถ”๊ฐ€ ์ปค๋„ ๋ฆฌ์†Œ์Šค ๋น„์šฉ์„ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • 2023๋…„ ํ•˜๋ฐ˜๊ธฐ์—๋Š” /usr์ด ๋ฃจํŠธ์™€ ๋ณ„๋„๋กœ ๋งˆ์šดํŠธ๋˜๊ฑฐ๋‚˜ /bin๊ณผ /usr/bin, /lib์™€ /usr/lib๊ฐ€ ๋ถ„๋ฆฌ๋˜๋Š” ๋ถ„ํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ง€์›์„ ์ข…๋ฃŒํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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