๋ ๋ฌ ๊ฐ์ ๊ฐ๋ฐ ๋์
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- systemd-networkd๋ L2TP ํฐ๋์ ์ง์ํฉ๋๋ค.
- sd-boot ๋ฐ bootctl์ /efi ๋๋ /boot/efi์ ๋ง์ดํธ๋ ESP ํํฐ์ ์ธ์๋ /boot์ ๋ง์ดํธ๋๋๋ก ์ค๊ณ๋ XBOOTLDR(ํ์ฅ ๋ถํธ ๋ก๋) ํํฐ์ ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ด์ ์ปค๋, ์ค์ , initrd ๋ฐ EFI ์ด๋ฏธ์ง๋ฅผ ESP ๋ฐ XBOOTLDR ํํฐ์ ๋ชจ๋์์ ๋ถํ ํ ์ ์์ต๋๋ค. ์ด ๋ณ๊ฒฝ์ ํตํด ๋ถํธ๋ก๋ ์์ฒด๊ฐ ESP์ ์๊ณ ๋ก๋๋ ์ปค๋ ๋ฐ ๊ด๋ จ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ณ๋์ ์น์ ์ ๋ฐฐ์น๋๋ ๋ณด๋ค ๋ณด์์ ์ธ ์๋๋ฆฌ์ค์์ sd-boot ๋ถํธ๋ก๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ปค๋์ ์ ๋ฌ๋ "systemd.ํ๋ฐ์ฑ=overlay" ์ต์ ์ผ๋ก ๋ถํ ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค๋ฒ๋ ์ดfs์ ๋ฃจํธ ํํฐ์ ์ ๋ฐฐ์นํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ๋ก๋ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์ฝ๊ธฐ ์ ์ฉ ์ด๋ฏธ์ง ์์ ์์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. tmpfs์ ๋ณ๋ ๋๋ ํ ๋ฆฌ(์ด ๊ตฌ์ฑ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ ์์ํ ํ ์์ค๋ฉ๋๋ค). ์ ์ฌํ๊ฒ systemd-nspawn์ ์ปจํ ์ด๋์์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด "--ํ๋ฐ์ฑ=overlay" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- systemd-nspawn์ OCI(Open Container Initiative) ์ฌ์์ ์ค์ํ๋ ์ปจํ ์ด๋์ ๊ฒฉ๋ฆฌ๋ ์์์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฐํ์ ๋ฒ๋ค์ ์ฌ์ฉํ ์ ์๋๋ก "--oci-bundle" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค. ๋ช ๋ น์ค ๋ฐ nspawn ์ฅ์น์์ ์ฌ์ฉํ๊ธฐ ์ํด OCI ์ฌ์์ ์ค๋ช ๋ ๋ค์ํ ์ต์ ์ ๋ํ ์ง์์ด ์ ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "--inaccessible" ๋ฐ "Inaccessible" ์ต์ ์ ์ฌ์ฉํ์ฌ ํ์ผ ์์คํ ์ ์ผ๋ถ๋ฅผ ์ ์ธํ ์ ์์ผ๋ฉฐ " ํ์ค ์ถ๋ ฅ ์คํธ๋ฆผ ๋ฐ "-pipe"๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด --consoleโ ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํ๊ฒฝ ๋ณ์ $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP์ ํตํด systemd-logind์ ๋์์ ์ ์ดํ๋ โโ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
$SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU ๋ฐ
$SYSTEMD_REBOOT_ TO_BOOT_LOADER_ENTRY. ์ด๋ฌํ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฒด ์ฌ๋ถํ ํ๋ก์ธ์ค ํธ๋ค๋ฌ(/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu ๋ฐ
/run/systemd/reboot-to-boot-loader-entry) ๋๋ ๋ชจ๋ ๋นํ์ฑํํฉ๋๋ค(๊ฐ์ด false๋ก ์ค์ ๋ ๊ฒฝ์ฐ). - "-boot-load-menu=" ์ต์
์ด ์ถ๊ฐ๋์์ผ๋ฉฐ
โโboot-loader-entry=โ, ์ฌ๋ถํ ํ ํน์ ๋ถํ ๋ฉ๋ด ํญ๋ชฉ์ด๋ ๋ถํ ๋ชจ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค. - SUID/SGID ํ๋๊ทธ๊ฐ ์๋ ํ์ผ ์์ฑ์ ๊ธ์งํ๊ธฐ ์ํด seccomp๋ฅผ ์ฌ์ฉํ๋ ์๋ก์ด ์๋๋ฐ์ค ๊ฒฉ๋ฆฌ ๋ช ๋ น "RestrictSUIDSGID="๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋์ ์ฌ์ฉ์ ID ์์ฑ ๋ชจ๋("DynamicUser" ํ์ฑํ)๊ฐ ์๋ ์๋น์ค์์ "NoNewPrivileges" ๋ฐ "RestrictSUIDSGID" ์ ํ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋๋์ง ํ์ธํ์ต๋๋ค.
- .link ํ์ผ์ ๊ธฐ๋ณธ MACAddressPolicy=percious ์ค์ ์ด ๋ ๋ง์ ์ฅ์น์ ์ ์ฉ๋๋๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง, ํฐ๋(tun, tap) ๋ฐ ํตํฉ ๋งํฌ(๋ณธ๋)์ ์ธํฐํ์ด์ค๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ด๋ฆ์ ์ ์ธํ๊ณ ๋ ์์ ์ ์๋ณํ์ง ์์ผ๋ฏ๋ก ์ด์ ์ด ์ด๋ฆ์ด MAC ๋ฐ IPv4 ์ฃผ์ ๋ฐ์ธ๋ฉ์ ๊ธฐ์ด๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ "MACAddressPolicy=random" ์ค์ ์ด ์ถ๊ฐ๋์ด MAC ๋ฐ IPv4 ์ฃผ์๋ฅผ ๋ฌด์์ ์์๋ก ์ฅ์น์ ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- systemd-fstab-generator๋ฅผ ํตํด ์์ฑ๋ ".device" ์ ๋ ํ์ผ์ ๋ ์ด์ "Wants=" ์น์ ์ ์ข ์์ฑ์ผ๋ก ํด๋น ".mount" ์ ๋์ ํฌํจํ์ง ์์ต๋๋ค. ๊ฐ๋จํ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๋ ์ด์ ํ์ฌํ ์ฅ์น๊ฐ ์๋์ผ๋ก ์คํ๋์ง ์์ง๋ง ์ด๋ฌํ ์ฅ์น๋ local-fs.target์ ์ผ๋ถ ๋๋ local-fs.target์ ์์กดํ๋ ๋ค๋ฅธ ์ฅ์น์ ๋ํ ์ข ์์ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ด์ ๋ก ๊ณ์ ์คํ๋ ์ ์์ต๋๋ค. ;
- ์ด๋ฆ์ ์ผ๋ถ๋ก ํน์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ทธ๋ฃน์ ํํฐ๋งํ๊ธฐ ์ํด "networkctl list/status/lldp" ๋ช ๋ น์ ๋ง์คํฌ("*" ๋ฑ)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- $PIDFILE ํ๊ฒฝ ๋ณ์๋ ์ด์ "PIDFile=;" ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์๋น์ค์ ๊ตฌ์ฑ๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ DNS๊ฐ ๋ช ์์ ์ผ๋ก ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ๋ฐฑ์ DNS ์๋ฒ ์์ Public Cloudflare ์๋ฒ(1.1.1.1)๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ๋ฐฑ์ DNS ์๋ฒ ๋ชฉ๋ก์ ์ฌ์ ์ํ๋ ค๋ฉด "-Ddns-servers=" ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- USB ์ฅ์น ์ปจํธ๋กค๋ฌ์ ์กด์ฌ๋ฅผ ๊ฐ์งํ๋ฉด ์๋ก์ด usb-gadget.target ํธ๋ค๋ฌ๊ฐ ์๋์ผ๋ก ์์๋ฉ๋๋ค(์์คํ ์ด USB ์ฃผ๋ณ ์ฅ์น์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ).
- ๋จ์ ํ์ผ์ ๊ฒฝ์ฐ "CPUQuotaPeriodSec=" ์ค์ ์ด ๊ตฌํ๋์์ต๋๋ค. ์ด ์ค์ ์ "CPUQuota=" ์ค์ ์ ํตํด ์ค์ ๋ CPU ์๊ฐ ํ ๋น๋์ด ์ธก์ ๋๋ ๊ธฐ๊ฐ์ ๊ฒฐ์ ํฉ๋๋ค.
- ์ ๋ ํ์ผ์ ๊ฒฝ์ฐ "ProtectHostname=" ์ค์ ์ด ๊ตฌํ๋์ด ์๋น์ค๊ฐ ์ ์ ํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋๋ผ๋ ํธ์คํธ ์ด๋ฆ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค.
- ์ ๋ ํ์ผ์ ๊ฒฝ์ฐ "NetworkNamespacePath=" ์ค์ ์ด ๊ตฌํ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด pseudo-FS /proc์์ ๋ค์์คํ์ด์ค ํ์ผ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ ๋ค์์คํ์ด์ค๋ฅผ ์๋น์ค ๋๋ ์์ผ ์ ๋์ ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค.
- ์์ ๋ช ๋ น ์์ ":" ๋ฌธ์๋ฅผ ์ถ๊ฐํ์ฌ "ExecStart=" ์ค์ ์ ์ฌ์ฉํ์ฌ ์์๋ ํ๋ก์ธ์ค์ ๋ํ ํ๊ฒฝ ๋ณ์ ๋์ฒด๋ฅผ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค.
- ํ์ด๋จธ(.timer ๋จ์)์ ๊ฒฝ์ฐ ์ ํ๋๊ทธ "OnClockChange=" ๋ฐ
"OnTimezoneChange="๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ ์๊ฐ์ด๋ ์๊ฐ๋๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ฅ์น ํธ์ถ์ ์ ์ดํ ์ ์์ต๋๋ค. - ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ๋ฐ CPU ์ฝ์ด ์์ ๋ฐ๋ผ ์ ๋ ํธ์ถ ์กฐ๊ฑด์ ๊ฒฐ์ ํ๋ ์๋ก์ด ์ค์ "ConditionMemory=" ๋ฐ "ConditionCPUs="๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์๋น์ค๋ ํ์ํ ์์ ๊ฒฝ์ฐ์๋ง ์์ํ ์ ์์ต๋๋ค. RAM ์ฌ์ฉ ๊ฐ๋ฅ);
- time-sync.target ๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ์๊ฐ ์๋ฒ์์ ์กฐ์ ์ ์ฌ์ฉํ์ง ์๊ณ ๋ก์ปฌ๋ก ์ค์ ๋ ์์คํ ์๊ฐ์ ํ์ฉํ๋ ์๋ก์ด time-set.target ๋จ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ ์ฅ์น๋ ๋๊ธฐํ๋์ง ์์ ๋ก์ปฌ ์๊ณ์ ์ ํ์ฑ์ด ํ์ํ ์๋น์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- "--show-transaction" ์ต์ ์ด "systemctl start"์ ์ถ๊ฐ๋์์ผ๋ฉฐ ์ ์ฌํ ๋ช ๋ น์ ์ง์ ํ๋ฉด ์์ฒญ๋ ์์ ์ผ๋ก ์ธํด ๋๊ธฐ์ด์ ์ถ๊ฐ๋ ๋ชจ๋ ์์ ์ โโ์์ฝ์ด ํ์๋ฉ๋๋ค.
- systemd-networkd๋ ์ง๊ณ ๋งํฌ ๋๋ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ์ผ๋ถ์ธ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ํด '์ฑ๋ฅ ์ ํ' ๋๋ '์บ๋ฆฌ์ด' ๋์ ์ฌ์ฉ๋๋ ์๋ก์ด '๋ ธ์ํ' ์ํ์ ์ ์๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ธฐ๋ณธ ์ธํฐํ์ด์ค์ ๊ฒฝ์ฐ ๋ณตํฉ ๋งํฌ ์ค ํ๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ '์ฑ๋ฅ ์ ํ' ์ํ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ์ฐ๊ฒฐ์ด ๋์ด์ง ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ค์ ์ ์ ์ฅํ๊ธฐ ์ํด .network ์ฅ์น์ "IgnoreCarrierLoss=" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- .network ๋จ์์ "RequiredForOnline=" ์ค์ ์ ํตํด ์ด์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ "์จ๋ผ์ธ"์ผ๋ก ์ ํํ๊ณ systemd-networkd-wait-online ํธ๋ค๋ฌ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐ ํ์ํ ์ต์ ํ์ฉ ๋งํฌ ์ํ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- ์ง์ ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ์ ์ค๋น ์ํ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋๋ก systemd-networkd-wait-online์ "--any" ์ต์ ์ ์ถ๊ฐํ์ผ๋ฉฐ, ์ํ๋ฅผ ๊ฒฐ์ ํ๋ "--operational-state=" ์ต์ ๋ ์ถ๊ฐํ์ต๋๋ค. ์ค๋น ์ํ๋ฅผ ๋ํ๋ด๋ ๋งํฌ;
- ์์ ์ ์ ๋์ด๋ฅผ ๋ฌด์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ "UseAutonomousPrefix=" ๋ฐ "UseOnLinkPrefix=" ์ค์ ์ .network ๋จ์์ ์ถ๊ฐํ์ต๋๋ค.
IPv6 ๋ผ์ฐํฐ๋ก๋ถํฐ์ ๊ณต์ง(RA, ๋ผ์ฐํฐ ๊ด๊ณ ); - .network ๋จ์์๋ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํ "MulticastFlood=", "NeighborSuppression=" ๋ฐ "Learning=" ์ค์ ์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, TRIPLE-SAMPLING ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํ "TripleSampling=" ์ค์ ๋ ์ถ๊ฐ๋์์ต๋๋ค. CAN ๊ฐ์ ์ธํฐํ์ด์ค;
- WireGuard VPN ์ธํฐํ์ด์ค์ ๋ํ ๊ฐ์ธ ๋ฐ ๊ณต์ (PSK) ํค๋ฅผ ์ง์ ํ ์ ์๋ "PrivateKeyFile=" ๋ฐ "PresharedKeyFile=" ์ค์ ์ด .netdev ์ฅ์น์ ์ถ๊ฐ๋์์ต๋๋ค.
- CPU ์ฝ์ด ๊ฐ์ ์ํธํ ๊ด๋ จ ์์ ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์ค์ผ์ค๋ฌ์ ๋์์ ์ ์ดํ๋ โโsame-cpu-crypt ๋ฐ submit-from-crypt-cpus ์ต์ ์ /etc/crypttab์ ์ถ๊ฐํ์ต๋๋ค.
- systemd-tmpfiles๋ ์์ ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์์ ์์ ์ ์ํํ๊ธฐ ์ ์ ํ์ผ ์ ๊ธ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ํน์ ์์ ๊ธฐ๊ฐ ๋์ ์ค๋๋ ํ์ผ ์ ๋ฆฌ ์์ ์ ๋นํ์ฑํํ ์ ์์ต๋๋ค(์: /tmp์์ tar ์์นด์ด๋ธ์ ์์ถ์ ํ ๋ ์์ฃผ ์ค๋๋ ํ์ผ์ด ์ญ์ ๋ ์ ์์). ํด๋น ์์ ์ด ๋๋๊ธฐ ์ ์๋ ์ญ์ ํ ์ ์๋ ํ์ผ์ด ์ด๋ ค ์์)
- "systemd-analyze cat-config" ๋ช ๋ น์ ์ฌ์ฉ์ ๋ฐ ์์คํ ์ฌ์ ์ค์ , tmpfiles.d ๋ฐ sysusers.d์ ๋ด์ฉ, udev ๊ท์น ๋ฑ๊ณผ ๊ฐ์ด ์ฌ๋ฌ ํ์ผ๋ก ๋๋์ด์ง ๊ตฌ์ฑ์ ๋ถ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์์น ์ปค์๋ฅผ ๋ก๋ํ๊ณ ์ ์ฅํ ํ์ผ์ ์ง์ ํ๊ธฐ ์ํด "journalctl"์ "--cursor-file=" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- ์กฐ๊ฑด๋ถ ์ฐ์ฐ์ "ConditionVirtualization"์ ์ฌ์ฉํ์ฌ ํ์ ๋ถ๊ธฐ๋ฅผ ์ํด systemd-Detect-virt์ ACRN ํ์ดํผ๋ฐ์ด์ ๋ฐ WSL ํ์ ์์คํ (Linux์ฉ Windows ํ์ ์์คํ ) ์ ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- systemd ์ค์น ์ค("ninja install" ์คํ ์) systemd-networkd.service, systemd-networkd.socket ํ์ผ์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
systemd-resolved.service, ์๊ฒฉ-cryptsetup.target, ์๊ฒฉ-fs.target,
systemd-networkd-wait-online.service ๋ฐ systemd-timesyncd.service. ์ด๋ฌํ ํ์ผ์ ์์ฑํ๋ ค๋ฉด ์ด์ "systemctlpreset-all" ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค.
์ถ์ฒopennet.ru
[EN]๋ ๋ฌ ๊ฐ์ ๊ฐ๋ฐ ๋์
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- systemd-networkd๋ L2TP ํฐ๋์ ์ง์ํฉ๋๋ค.
- sd-boot ๋ฐ bootctl์ /efi ๋๋ /boot/efi์ ๋ง์ดํธ๋ ESP ํํฐ์ ์ธ์๋ /boot์ ๋ง์ดํธ๋๋๋ก ์ค๊ณ๋ XBOOTLDR(ํ์ฅ ๋ถํธ ๋ก๋) ํํฐ์ ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ด์ ์ปค๋, ์ค์ , initrd ๋ฐ EFI ์ด๋ฏธ์ง๋ฅผ ESP ๋ฐ XBOOTLDR ํํฐ์ ๋ชจ๋์์ ๋ถํ ํ ์ ์์ต๋๋ค. ์ด ๋ณ๊ฒฝ์ ํตํด ๋ถํธ๋ก๋ ์์ฒด๊ฐ ESP์ ์๊ณ ๋ก๋๋ ์ปค๋ ๋ฐ ๊ด๋ จ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ณ๋์ ์น์ ์ ๋ฐฐ์น๋๋ ๋ณด๋ค ๋ณด์์ ์ธ ์๋๋ฆฌ์ค์์ sd-boot ๋ถํธ๋ก๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ปค๋์ ์ ๋ฌ๋ "systemd.ํ๋ฐ์ฑ=overlay" ์ต์ ์ผ๋ก ๋ถํ ํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค๋ฒ๋ ์ดfs์ ๋ฃจํธ ํํฐ์ ์ ๋ฐฐ์นํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ๋ก๋ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์ฝ๊ธฐ ์ ์ฉ ์ด๋ฏธ์ง ์์ ์์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. tmpfs์ ๋ณ๋ ๋๋ ํ ๋ฆฌ(์ด ๊ตฌ์ฑ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ ์์ํ ํ ์์ค๋ฉ๋๋ค). ์ ์ฌํ๊ฒ systemd-nspawn์ ์ปจํ ์ด๋์์ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด "--ํ๋ฐ์ฑ=overlay" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- systemd-nspawn์ OCI(Open Container Initiative) ์ฌ์์ ์ค์ํ๋ ์ปจํ ์ด๋์ ๊ฒฉ๋ฆฌ๋ ์์์ ์ ๊ณตํ๊ธฐ ์ํด ๋ฐํ์ ๋ฒ๋ค์ ์ฌ์ฉํ ์ ์๋๋ก "--oci-bundle" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค. ๋ช ๋ น์ค ๋ฐ nspawn ์ฅ์น์์ ์ฌ์ฉํ๊ธฐ ์ํด OCI ์ฌ์์ ์ค๋ช ๋ ๋ค์ํ ์ต์ ์ ๋ํ ์ง์์ด ์ ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด "--inaccessible" ๋ฐ "Inaccessible" ์ต์ ์ ์ฌ์ฉํ์ฌ ํ์ผ ์์คํ ์ ์ผ๋ถ๋ฅผ ์ ์ธํ ์ ์์ผ๋ฉฐ " ํ์ค ์ถ๋ ฅ ์คํธ๋ฆผ ๋ฐ "-pipe"๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด --consoleโ ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํ๊ฒฝ ๋ณ์ $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP์ ํตํด systemd-logind์ ๋์์ ์ ์ดํ๋ โโ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
$SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU ๋ฐ
$SYSTEMD_REBOOT_ TO_BOOT_LOADER_ENTRY. ์ด๋ฌํ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฒด ์ฌ๋ถํ ํ๋ก์ธ์ค ํธ๋ค๋ฌ(/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu ๋ฐ
/run/systemd/reboot-to-boot-loader-entry) ๋๋ ๋ชจ๋ ๋นํ์ฑํํฉ๋๋ค(๊ฐ์ด false๋ก ์ค์ ๋ ๊ฒฝ์ฐ). - "-boot-load-menu=" ์ต์
์ด ์ถ๊ฐ๋์์ผ๋ฉฐ
โโboot-loader-entry=โ, ์ฌ๋ถํ ํ ํน์ ๋ถํ ๋ฉ๋ด ํญ๋ชฉ์ด๋ ๋ถํ ๋ชจ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค. - SUID/SGID ํ๋๊ทธ๊ฐ ์๋ ํ์ผ ์์ฑ์ ๊ธ์งํ๊ธฐ ์ํด seccomp๋ฅผ ์ฌ์ฉํ๋ ์๋ก์ด ์๋๋ฐ์ค ๊ฒฉ๋ฆฌ ๋ช ๋ น "RestrictSUIDSGID="๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ๋์ ์ฌ์ฉ์ ID ์์ฑ ๋ชจ๋("DynamicUser" ํ์ฑํ)๊ฐ ์๋ ์๋น์ค์์ "NoNewPrivileges" ๋ฐ "RestrictSUIDSGID" ์ ํ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋๋์ง ํ์ธํ์ต๋๋ค.
- .link ํ์ผ์ ๊ธฐ๋ณธ MACAddressPolicy=percious ์ค์ ์ด ๋ ๋ง์ ์ฅ์น์ ์ ์ฉ๋๋๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง, ํฐ๋(tun, tap) ๋ฐ ํตํฉ ๋งํฌ(๋ณธ๋)์ ์ธํฐํ์ด์ค๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ด๋ฆ์ ์ ์ธํ๊ณ ๋ ์์ ์ ์๋ณํ์ง ์์ผ๋ฏ๋ก ์ด์ ์ด ์ด๋ฆ์ด MAC ๋ฐ IPv4 ์ฃผ์ ๋ฐ์ธ๋ฉ์ ๊ธฐ์ด๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ "MACAddressPolicy=random" ์ค์ ์ด ์ถ๊ฐ๋์ด MAC ๋ฐ IPv4 ์ฃผ์๋ฅผ ๋ฌด์์ ์์๋ก ์ฅ์น์ ๋ฐ์ธ๋ฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- systemd-fstab-generator๋ฅผ ํตํด ์์ฑ๋ ".device" ์ ๋ ํ์ผ์ ๋ ์ด์ "Wants=" ์น์ ์ ์ข ์์ฑ์ผ๋ก ํด๋น ".mount" ์ ๋์ ํฌํจํ์ง ์์ต๋๋ค. ๊ฐ๋จํ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๋ ์ด์ ํ์ฌํ ์ฅ์น๊ฐ ์๋์ผ๋ก ์คํ๋์ง ์์ง๋ง ์ด๋ฌํ ์ฅ์น๋ local-fs.target์ ์ผ๋ถ ๋๋ local-fs.target์ ์์กดํ๋ ๋ค๋ฅธ ์ฅ์น์ ๋ํ ์ข ์์ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ด์ ๋ก ๊ณ์ ์คํ๋ ์ ์์ต๋๋ค. ;
- ์ด๋ฆ์ ์ผ๋ถ๋ก ํน์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๊ทธ๋ฃน์ ํํฐ๋งํ๊ธฐ ์ํด "networkctl list/status/lldp" ๋ช ๋ น์ ๋ง์คํฌ("*" ๋ฑ)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- $PIDFILE ํ๊ฒฝ ๋ณ์๋ ์ด์ "PIDFile=;" ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์๋น์ค์ ๊ตฌ์ฑ๋ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ฉ๋๋ค.
- ๊ธฐ๋ณธ DNS๊ฐ ๋ช ์์ ์ผ๋ก ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ๋ฐฑ์ DNS ์๋ฒ ์์ Public Cloudflare ์๋ฒ(1.1.1.1)๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. ๋ฐฑ์ DNS ์๋ฒ ๋ชฉ๋ก์ ์ฌ์ ์ํ๋ ค๋ฉด "-Ddns-servers=" ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- USB ์ฅ์น ์ปจํธ๋กค๋ฌ์ ์กด์ฌ๋ฅผ ๊ฐ์งํ๋ฉด ์๋ก์ด usb-gadget.target ํธ๋ค๋ฌ๊ฐ ์๋์ผ๋ก ์์๋ฉ๋๋ค(์์คํ ์ด USB ์ฃผ๋ณ ์ฅ์น์์ ์คํ ์ค์ธ ๊ฒฝ์ฐ).
- ๋จ์ ํ์ผ์ ๊ฒฝ์ฐ "CPUQuotaPeriodSec=" ์ค์ ์ด ๊ตฌํ๋์์ต๋๋ค. ์ด ์ค์ ์ "CPUQuota=" ์ค์ ์ ํตํด ์ค์ ๋ CPU ์๊ฐ ํ ๋น๋์ด ์ธก์ ๋๋ ๊ธฐ๊ฐ์ ๊ฒฐ์ ํฉ๋๋ค.
- ์ ๋ ํ์ผ์ ๊ฒฝ์ฐ "ProtectHostname=" ์ค์ ์ด ๊ตฌํ๋์ด ์๋น์ค๊ฐ ์ ์ ํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋๋ผ๋ ํธ์คํธ ์ด๋ฆ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ํฉ๋๋ค.
- ์ ๋ ํ์ผ์ ๊ฒฝ์ฐ "NetworkNamespacePath=" ์ค์ ์ด ๊ตฌํ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด pseudo-FS /proc์์ ๋ค์์คํ์ด์ค ํ์ผ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ ๋ค์์คํ์ด์ค๋ฅผ ์๋น์ค ๋๋ ์์ผ ์ ๋์ ๋ฐ์ธ๋ฉํ ์ ์์ต๋๋ค.
- ์์ ๋ช ๋ น ์์ ":" ๋ฌธ์๋ฅผ ์ถ๊ฐํ์ฌ "ExecStart=" ์ค์ ์ ์ฌ์ฉํ์ฌ ์์๋ ํ๋ก์ธ์ค์ ๋ํ ํ๊ฒฝ ๋ณ์ ๋์ฒด๋ฅผ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค.
- ํ์ด๋จธ(.timer ๋จ์)์ ๊ฒฝ์ฐ ์ ํ๋๊ทธ "OnClockChange=" ๋ฐ
"OnTimezoneChange="๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ ์๊ฐ์ด๋ ์๊ฐ๋๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ฅ์น ํธ์ถ์ ์ ์ดํ ์ ์์ต๋๋ค. - ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ ๋ฐ CPU ์ฝ์ด ์์ ๋ฐ๋ผ ์ ๋ ํธ์ถ ์กฐ๊ฑด์ ๊ฒฐ์ ํ๋ ์๋ก์ด ์ค์ "ConditionMemory=" ๋ฐ "ConditionCPUs="๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์๋น์ค๋ ํ์ํ ์์ ๊ฒฝ์ฐ์๋ง ์์ํ ์ ์์ต๋๋ค. RAM ์ฌ์ฉ ๊ฐ๋ฅ);
- time-sync.target ๋จ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ์๊ฐ ์๋ฒ์์ ์กฐ์ ์ ์ฌ์ฉํ์ง ์๊ณ ๋ก์ปฌ๋ก ์ค์ ๋ ์์คํ ์๊ฐ์ ํ์ฉํ๋ ์๋ก์ด time-set.target ๋จ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ ์ฅ์น๋ ๋๊ธฐํ๋์ง ์์ ๋ก์ปฌ ์๊ณ์ ์ ํ์ฑ์ด ํ์ํ ์๋น์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- "--show-transaction" ์ต์ ์ด "systemctl start"์ ์ถ๊ฐ๋์์ผ๋ฉฐ ์ ์ฌํ ๋ช ๋ น์ ์ง์ ํ๋ฉด ์์ฒญ๋ ์์ ์ผ๋ก ์ธํด ๋๊ธฐ์ด์ ์ถ๊ฐ๋ ๋ชจ๋ ์์ ์ โโ์์ฝ์ด ํ์๋ฉ๋๋ค.
- systemd-networkd๋ ์ง๊ณ ๋งํฌ ๋๋ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ์ผ๋ถ์ธ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๋ํด '์ฑ๋ฅ ์ ํ' ๋๋ '์บ๋ฆฌ์ด' ๋์ ์ฌ์ฉ๋๋ ์๋ก์ด '๋ ธ์ํ' ์ํ์ ์ ์๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ธฐ๋ณธ ์ธํฐํ์ด์ค์ ๊ฒฝ์ฐ ๋ณตํฉ ๋งํฌ ์ค ํ๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ '์ฑ๋ฅ ์ ํ' ์ํ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.
- ์ฐ๊ฒฐ์ด ๋์ด์ง ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ค์ ์ ์ ์ฅํ๊ธฐ ์ํด .network ์ฅ์น์ "IgnoreCarrierLoss=" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- .network ๋จ์์ "RequiredForOnline=" ์ค์ ์ ํตํด ์ด์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ "์จ๋ผ์ธ"์ผ๋ก ์ ํํ๊ณ systemd-networkd-wait-online ํธ๋ค๋ฌ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐ ํ์ํ ์ต์ ํ์ฉ ๋งํฌ ์ํ๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- ์ง์ ๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ ์ฒด๊ฐ ์๋ ์ผ๋ถ์ ์ค๋น ์ํ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋๋ก systemd-networkd-wait-online์ "--any" ์ต์ ์ ์ถ๊ฐํ์ผ๋ฉฐ, ์ํ๋ฅผ ๊ฒฐ์ ํ๋ "--operational-state=" ์ต์ ๋ ์ถ๊ฐํ์ต๋๋ค. ์ค๋น ์ํ๋ฅผ ๋ํ๋ด๋ ๋งํฌ;
- ์์ ์ ์ ๋์ด๋ฅผ ๋ฌด์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ "UseAutonomousPrefix=" ๋ฐ "UseOnLinkPrefix=" ์ค์ ์ .network ๋จ์์ ์ถ๊ฐํ์ต๋๋ค.
IPv6 ๋ผ์ฐํฐ๋ก๋ถํฐ์ ๊ณต์ง(RA, ๋ผ์ฐํฐ ๊ด๊ณ ); - .network ๋จ์์๋ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํ "MulticastFlood=", "NeighborSuppression=" ๋ฐ "Learning=" ์ค์ ์ด ์ถ๊ฐ๋์์ผ๋ฉฐ, TRIPLE-SAMPLING ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํ "TripleSampling=" ์ค์ ๋ ์ถ๊ฐ๋์์ต๋๋ค. CAN ๊ฐ์ ์ธํฐํ์ด์ค;
- WireGuard VPN ์ธํฐํ์ด์ค์ ๋ํ ๊ฐ์ธ ๋ฐ ๊ณต์ (PSK) ํค๋ฅผ ์ง์ ํ ์ ์๋ "PrivateKeyFile=" ๋ฐ "PresharedKeyFile=" ์ค์ ์ด .netdev ์ฅ์น์ ์ถ๊ฐ๋์์ต๋๋ค.
- CPU ์ฝ์ด ๊ฐ์ ์ํธํ ๊ด๋ จ ์์ ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์ค์ผ์ค๋ฌ์ ๋์์ ์ ์ดํ๋ โโsame-cpu-crypt ๋ฐ submit-from-crypt-cpus ์ต์ ์ /etc/crypttab์ ์ถ๊ฐํ์ต๋๋ค.
- systemd-tmpfiles๋ ์์ ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์์ ์์ ์ ์ํํ๊ธฐ ์ ์ ํ์ผ ์ ๊ธ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ํน์ ์์ ๊ธฐ๊ฐ ๋์ ์ค๋๋ ํ์ผ ์ ๋ฆฌ ์์ ์ ๋นํ์ฑํํ ์ ์์ต๋๋ค(์: /tmp์์ tar ์์นด์ด๋ธ์ ์์ถ์ ํ ๋ ์์ฃผ ์ค๋๋ ํ์ผ์ด ์ญ์ ๋ ์ ์์). ํด๋น ์์ ์ด ๋๋๊ธฐ ์ ์๋ ์ญ์ ํ ์ ์๋ ํ์ผ์ด ์ด๋ ค ์์)
- "systemd-analyze cat-config" ๋ช ๋ น์ ์ฌ์ฉ์ ๋ฐ ์์คํ ์ฌ์ ์ค์ , tmpfiles.d ๋ฐ sysusers.d์ ๋ด์ฉ, udev ๊ท์น ๋ฑ๊ณผ ๊ฐ์ด ์ฌ๋ฌ ํ์ผ๋ก ๋๋์ด์ง ๊ตฌ์ฑ์ ๋ถ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์์น ์ปค์๋ฅผ ๋ก๋ํ๊ณ ์ ์ฅํ ํ์ผ์ ์ง์ ํ๊ธฐ ์ํด "journalctl"์ "--cursor-file=" ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
- ์กฐ๊ฑด๋ถ ์ฐ์ฐ์ "ConditionVirtualization"์ ์ฌ์ฉํ์ฌ ํ์ ๋ถ๊ธฐ๋ฅผ ์ํด systemd-Detect-virt์ ACRN ํ์ดํผ๋ฐ์ด์ ๋ฐ WSL ํ์ ์์คํ (Linux์ฉ Windows ํ์ ์์คํ ) ์ ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- systemd ์ค์น ์ค("ninja install" ์คํ ์) systemd-networkd.service, systemd-networkd.socket ํ์ผ์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
systemd-resolved.service, ์๊ฒฉ-cryptsetup.target, ์๊ฒฉ-fs.target,
systemd-networkd-wait-online.service ๋ฐ systemd-timesyncd.service. ์ด๋ฌํ ํ์ผ์ ์์ฑํ๋ ค๋ฉด ์ด์ "systemctlpreset-all" ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค.
์ถ์ฒ : opennet.ru
[:]