2020๋…„ XNUMX๋ถ„๊ธฐ FreeBSD ๊ฐœ๋ฐœ ๋ณด๊ณ ์„œ

๊ฒŒ์‹œ ๋จ 2020๋…„ XNUMX์›”๋ถ€ํ„ฐ XNUMX์›”๊นŒ์ง€ FreeBSD ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ์ž…๋‹ˆ๋‹ค. ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜ ๋ฐ ์‹œ์Šคํ…œ ์งˆ๋ฌธ
    • GCC ์ปดํŒŒ์ผ๋Ÿฌ ๋ชจ์Œ์€ FreeBSD-CURRENT ์†Œ์Šค ํŠธ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์œผ๋ฉฐ, ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” gperf, gcov, gtc(๋””๋ฐ”์ด์ŠคํŠธ๋ฆฌ ์ปดํŒŒ์ผ๋Ÿฌ) ์œ ํ‹ธ๋ฆฌํ‹ฐ๋„ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Clang์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์€ ํฌํŠธ์—์„œ ์„ค์น˜๋œ ์™ธ๋ถ€ ๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์€ ์˜ค๋ž˜๋œ GCC 4.2.1 ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์—ˆ์œผ๋ฉฐ, 4.2.2๊ฐ€ FreeBSD ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋œ GPLv3 ๋ผ์ด์„ ์Šค๋กœ ์ „ํ™˜๋˜์–ด ์ตœ์‹  ๋ฒ„์ „์„ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. GCC 9๋ฅผ ํฌํ•จํ•œ ํ˜„์žฌ GCC ๋ฆด๋ฆฌ์Šค๋Š” ์—ฌ์ „ํžˆ ํŒจํ‚ค์ง€ ๋ฐ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ™˜๊ฒฝ ์—๋ฎฌ๋ ˆ์ด์…˜ ์ธํ”„๋ผ์—์„œ Linux (Linuxulator๋Š” sendfile ์‹œ์Šคํ…œ ํ˜ธ์ถœ, TCP_CORK ๋ชจ๋“œ(nginx์— ํ•„์š”) ๋ฐ MAP_32BIT ํ”Œ๋ž˜๊ทธ(Mono๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ)์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Ubuntu ๋ฐ”์ด์˜ค๋‹‰). glibc 2.30๋ณด๋‹ค ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๋•Œ DNS ํ™•์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: CentOS 8).
      ์ง€์†์  ํ†ตํ•ฉ ์ธํ”„๋ผ๋Š” LTP๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.Linux (ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ) ๊ด€๋ฆฌ ํ•˜์— ์ง„ํ–‰๋จ Linux์ฝ”๋“œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ Linux์•ฝ 400๊ฐœ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜์—ฌ ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์ผ๋ถ€ ์˜ค๋ฅ˜๋Š” ์˜คํƒ์œผ๋กœ ์ธํ•œ ๊ฒƒ์ด๊ณ , ์ผ๋ถ€๋Š” ๊ฐ„๋‹จํ•œ ์ˆ˜์ •์ด ํ•„์š”ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ์ผ๋ถ€๋Š” ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค). ์ฝ”๋“œ ์ •๋ฆฌ ์ž‘์—…์€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux๋””๋ฒ„๊น…์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ํ™•์žฅ ์†์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ์†์„ฑ๊ณผ fexecve ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ง€์›ํ•˜๋Š” ํŒจ์น˜๊ฐ€ ์ค€๋น„๋˜์—ˆ์ง€๋งŒ ์•„์ง ๊ฒ€ํ† ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
    • ์ค‘์•™ ์ง‘์ค‘์‹ Subversion ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ์—์„œ ๋ถ„์‚ฐ์‹ Git ์‹œ์Šคํ…œ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ž‘์—… ๊ทธ๋ฃน์˜ ํšŒ์˜๊ฐ€ ๊ณ„์†๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ฃผ์— ๋Œ€ํ•œ ์ œ์•ˆ์„ ๋‹ด์€ ๋ณด๊ณ ์„œ๊ฐ€ ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค.
    • ะ’ rtld (๋Ÿฐํƒ€์ž„ ๋ง์ปค) ์ง์ ‘ ์‹คํ–‰ ๋ชจ๋“œ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค("/libexec/ld-elf.so.1 {path} {arguments}").
    • syzkaller ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” FreeBSD ์ปค๋„ ํผ์ง• ํ”„๋กœ์ ํŠธ๋Š” ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ  ๊ธฐ๊ฐ„ ๋™์•ˆ syzkaller๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ๊ฒฌ๋œ ๋„คํŠธ์›Œํฌ ์Šคํƒ ๋ฐ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ํ…Œ์ด๋ธ” ๊ด€๋ จ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ๋“ค์ด ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ์ง„๋‹จ ํ›„ ๋””๋ฒ„๊น…์„ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด SCTP ์Šคํƒ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ์žฌ์ ์ธ ํšŒ๊ท€ ์˜ค๋ฅ˜๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™์ด stress2 ์„ธํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. copy_file_range(), __realpathat() ๋ฐ Capsicum ์„œ๋ธŒ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํฌํ•จํ•œ ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ํผ์ง• ํ…Œ์ŠคํŠธ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—๋ฎฌ๋ ˆ์ด์…˜ ๊ณ„์ธต์— ๋Œ€ํ•œ ํผ์ง• ํ…Œ์ŠคํŠธ ์ž‘์—…๋„ ๊ณ„์† ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. Linux์ตœ๊ทผ Coverity Scan ๋ณด๊ณ ์„œ์—์„œ ๋ฐœ๊ฒฌ๋œ ์˜ค๋ฅ˜๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ง€์†์  ํ†ตํ•ฉ ์‹œ์Šคํ…œ์€ clang/lld๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ—ค๋“œ ๋ธŒ๋žœ์น˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. RISC-V๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ, OpenSBI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ QEMU์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒด ๋””์Šคํฌ ์ด๋ฏธ์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. powerpc64 ์ด๋ฏธ์ง€์™€ ๊ฐ€์ƒ ๋จธ์‹ ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ž‘์—…์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋‚˜ FPGA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์ค‘์ธ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜์—์„œ Kyua๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ(ํŒจํ‚ค์ง€๊ฐ€ ๋งค์šฐ ๋А๋ฆฌ๊ฒŒ ์„ค์น˜๋จ)๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Kyua ํ…Œ์ŠคํŠธ ๋ชจ์Œ์„ ํฌํŠธ(devel/kyua)์—์„œ ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์— ํ†ตํ•ฉํ•˜๋ฉด ๋‚ด์žฅ๋œ ํ”Œ๋žซํผ์˜ ํ…Œ์ŠคํŠธ์™€ ์ง€์†์ ์ธ ํ†ตํ•ฉ ์‹œ์Šคํ…œ๊ณผ์˜ ์ธํ„ฐํŽ˜์ด์‹ฑ์ด ํฌ๊ฒŒ ๊ฐ„์†Œํ™”๋ฉ๋‹ˆ๋‹ค.
    • ๋„คํŠธ์›Œํฌ ๋ธŒ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„ ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. if_bridge๋‹จ์ผ ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž ๊ทธ๋Š” ๋ฐฉ์‹์€ ๋งŽ์€ ์ˆ˜์˜ ๊ฐ์˜ฅ ํ™˜๊ฒฝ์ด๋‚˜ ๋‹จ์ผ ๋„คํŠธ์›Œํฌ์— ํ†ตํ•ฉ๋œ ๊ฐ€์ƒ ๋จธ์‹ ์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ ์›ํ•˜๋Š” ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ž ๊ธˆ ์ฒ˜๋ฆฌ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋™์•ˆ ํšŒ๊ท€๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ฝ”๋“œ์— ํ…Œ์ŠคํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ConcurrencyKit์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „์†ก ํ•ธ๋“ค๋Ÿฌ(bridge_input(), bridge_output(), bridge_forward(), ...)๋ฅผ ๋ณ‘๋ ฌํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ณ ๋ ค๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ธฐ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋น ๋ฅธ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๊ธฐ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด sigfastblock ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ปค๋„์€ ARMv8.1 ์‹œ์Šคํ…œ์—์„œ ์ง€์›ํ•˜๋Š” LSE(๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ํ™•์žฅ) ์›์ž ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ์ง€์นจ์€ Cavium ThunderX2 ๋ฐ AWS Graviton 2 ๋ณด๋“œ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ LSE ์ง€์›์˜ ์กด์žฌ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์›์ž ๊ตฌํ˜„์„ ๋™์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ, LSE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปค๋„ ์ปดํŒŒ์ผ์— ์†Œ์š”๋˜๋Š” ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„์„ 15% ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์„ฑ๋Šฅ์ด ์ตœ์ ํ™”๋˜์—ˆ๊ณ  ELF ์‹คํ–‰ ํŒŒ์ผ์„ ์œ„ํ•œ ํˆดํ‚ท์˜ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
      DWARF ๋””๋ฒ„๊ทธ ์ •๋ณด ์บ์‹ฑ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜๊ณ  elfcopy/objcopy ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ DW_AT_ranges ์ฒ˜๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
      ์ด์ œ readelf๋Š” PROTMAX_DISABLE, STKGAP_DISABLE ๋ฐ WXNEEDED ํ”Œ๋ž˜๊ทธ๋Š” ๋ฌผ๋ก  Xen ๋ฐ GNU Build-ID๋„ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ะ‘ะตะทะพะฟะฐัะฝะพัั‚ัŒ
    • Azure ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ FreeBSD ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ ์—†์ด ๊ฒŒ์ŠคํŠธ-ํ˜ธ์ŠคํŠธ ์ƒํ˜ธ ์ž‘์šฉ์— ์†Œ์ผ“ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” HyperV ์†Œ์ผ“ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
    • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ FreeBSD ๋นŒ๋“œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ด๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์‹คํ–‰ ํŒŒ์ผ์ด ์„ ์–ธ๋œ ์†Œ์Šค ์ฝ”๋“œ์—์„œ ๋นŒ๋“œ๋˜์—ˆ์œผ๋ฉฐ ์™ธ๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • elfctl ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ์ด์ œ ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค ์ˆ˜์ค€์—์„œ ์ถ”๊ฐ€ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜(ASLR, PROT_MAX, ์Šคํƒ ๊ฐญ, W+X ๋งคํ•‘)์˜ ํฌํ•จ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ
    • RPC ๋ฉ”์‹œ์ง€๋งŒ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์†Œํ”„ํŠธ์›จ์–ด๋กœ๋งŒ ๊ตฌํ˜„๋˜๋Š” Kerberos(sec=krb1.3p ๋ชจ๋“œ) ๋Œ€์‹  TLS 5 ๊ธฐ๋ฐ˜ ์•”ํ˜ธํ™”๋œ ํ†ต์‹  ์ฑ„๋„์—์„œ NFS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ตฌํ˜„์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„์—์„œ ์ œ๊ณตํ•˜๋Š” TLS ์Šคํƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. TLS๋ฅผ ํ†ตํ•œ NFS ์ฝ”๋“œ๋Š” ๊ฑฐ์˜ ํ…Œ์ŠคํŠธํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์ง€๋งŒ, ์„œ๋ช…๋œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๋ฅผ ์ง€์›ํ•˜๊ณ  NFS ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋„๋ก ์ปค๋„ TLS ์Šคํƒ์„ ์กฐ์ •ํ•˜๋Š” ์ž‘์—…์ด ์•„์ง ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์ˆ˜์‹ ์šฉ ํŒจ์น˜๋Š” ์ด๋ฏธ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค).
  • ํ•˜๋“œ์›จ์–ด ์ง€์›
    • AMD ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ค‘๊ตญ์–ด x86 CPU Hygon์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
    • CheriBSD ๋‚ด์—์„œ ์—ฐ๊ตฌ์šฉ ํ”„๋กœ์„ธ์„œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ FreeBSD ํฌํฌ ์ฒด๋ฆฌ (Capability Hardware Enhanced RISC Instructions)๋Š” Capsicum ํ”„๋กœ์ ํŠธ ๋ณดํ˜ธ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” CHERI ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ์ œ์–ด ์‹œ์Šคํ…œ์„ ์ง€์›ํ•  ARM Morello ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ณ„์† ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ ๋กœ ์นฉ ๊ณ„ํšํ•˜๊ณ ์žˆ๋‹ค. 2021๋…„์— ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ž‘์—…์€ Morello์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” Arm Neoverse N1 ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์ง‘์ค‘๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. RISC-V ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ CheriBSD์˜ ์ดˆ๊ธฐ ํฌํŠธ๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MIPS64 ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” CHERI ์ฐธ์กฐ ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•œ CheriBSD ๊ฐœ๋ฐœ์ด ๊ณ„์†๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
    • ARMv64 Cortex-A1046 ํ”„๋กœ์„ธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” 8๋น„ํŠธ NXP LS72A SoC์— ๋Œ€ํ•œ FreeBSD ํฌํŒ…์ด ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ด SoC๋Š” ํ†ตํ•ฉ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท ๊ฐ€์† ์—”์ง„, 10Gb ์ด๋”๋„ท, PCIe 3.0, SATA 3.0 ๋ฐ USB 3.0์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ QorIQ์™€ LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC, QorIQ LS10xx SDHCI ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๊ธฐ๋ณธ FreeBSD ํŒจํ‚ค์ง€๋กœ ์ „์†ก๋  ์ค€๋น„๊ฐ€ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
    • ena ๋“œ๋ผ์ด๋ฒ„๊ฐ€ 2.1.1 ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด EC2 ๋…ธ๋“œ ๊ฐ„ ํ†ต์‹ ์„ ์ตœ๋Œ€ 2Gb/s ์†๋„๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Elastic Compute Cloud(EC2) ์ธํ”„๋ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” 25์„ธ๋Œ€ ENAv2.2.0(Elastic Network Adapter) ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ENA XNUMX ์—…๋ฐ์ดํŠธ๋ฅผ ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค.
    • powerpc64 ํ”Œ๋žซํผ์šฉ FreeBSD ํฌํŠธ๋Š” ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. IBM POWER8 ๋ฐ POWER9 ํ”„๋กœ์„ธ์„œ๋ฅผ ํƒ‘์žฌํ•œ ์‹œ์Šคํ…œ์—์„œ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ  ๊ธฐ๊ฐ„ ๋™์•ˆ FreeBSD-CURRENT๋Š” GCC ๋Œ€์‹  LLVM/Clang 10.0 ์ปดํŒŒ์ผ๋Ÿฌ์™€ lld ๋ง์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ powerpc64 ์‹œ์Šคํ…œ์€ ELFv2 ABI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ELFv1 ABI์— ๋Œ€ํ•œ ์ง€์›์€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. FreeBSD-STABLE์—๋Š” ์•„์ง gcc 4.2.1์ด ์žˆ์Šต๋‹ˆ๋‹ค. virtio, aacraid ๋ฐ ixl ๋“œ๋ผ์ด๋ฒ„ ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. powerpc64 ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด์ œ Huge Pages ์ง€์› ์—†์ด QEMU๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • RISC-V ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ์ž‘์—…์ด ๊ณ„์†๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ˜•ํƒœ์˜ FreeBSD๋Š” ์ด๋ฏธ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ค€๋น„๋œ SiFive Hifive Unleashed ๋ณด๋“œ์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถ€ํŒ…๋ฉ๋‹ˆ๋‹ค.
      UART, SPI ๋ฐ PRCI๋Š” OpenSBI ๋ฐ SBI 0.2 ํŽŒ์›จ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ณ  ๊ธฐ๊ฐ„ ๋™์•ˆ ์ž‘์—…์€ GCC์—์„œ clang ๋ฐ lld๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ์ง‘์ค‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ํฌํŠธ ์‹œ์Šคํ…œ
    • FreeBSD ํฌํŠธ ์ปฌ๋ ‰์…˜์€ 39๊ฐœ ํฌํŠธ๋ฅผ ๋„˜์–ด์„ฐ๊ณ , ๋‹ซํžˆ์ง€ ์•Š์€ PR์˜ ์ˆ˜๋Š” 2400๊ฐœ๋ฅผ ์•ฝ๊ฐ„ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ 640๊ฐœ PR์€ ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ  ๊ธฐ๊ฐ„ ๋™์•ˆ 8146๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ 173๊ฐœ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 3๋ช…์˜ ์ƒˆ๋กœ์šด ํšŒ์›(Loรฏc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore)์—๊ฒŒ ์ปค๋ฏธํ„ฐ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. USES=qca ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  USES=zope ํ”Œ๋ž˜๊ทธ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค(Python 2.7์™€์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด). ํฌํŠธ ํŠธ๋ฆฌ์—์„œ Python 2์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. Python 3์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ํฌํŠธ๋Š” Python 1.13.2์œผ๋กœ ํฌํŒ…ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. pkg ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ XNUMX ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜ํ”ฝ ์Šคํƒ ๊ตฌ์„ฑ ์š”์†Œ์™€ xorg ๊ด€๋ จ ํฌํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
      X.org ์„œ๋ฒ„๊ฐ€ ๋ฒ„์ „ 1.20.8๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด์ „์—๋Š” 1.18 ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฐฐํฌ๋จ). ์ด๋ฅผ ํ†ตํ•ด FreeBSD๋Š” ์ž…๋ ฅ ์žฅ์น˜ ์ฒ˜๋ฆฌ์— ๊ธฐ๋ณธ์ ์œผ๋กœ udev/evdev ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Mesa ํŒจํ‚ค์ง€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ DRI2 ํ™•์žฅ ๋Œ€์‹  DRI3 ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„, ์ž…๋ ฅ ์žฅ์น˜ ์Šคํƒ ๋ฐ drm-kmod ๊ตฌ์„ฑ ์š”์†Œ(์ปค๋„์˜ Direct Rendering Manager์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด linuxkpi ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ amdgpu, i915 ๋ฐ radeon์šฉ DRM ๋ชจ๋“ˆ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ํฌํŠธ)๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. Linux).
    • KDE Plasma ๋ฐ์Šคํฌํ†ฑ, KDE ํ”„๋ ˆ์ž„์›Œํฌ, KDE ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ Qt๋Š” ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋กœ ์—…๋ฐ์ดํŠธ๋˜์–ด ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ kstars(๋ณ„ ์ง€๋„)๊ฐ€ ํฌํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • Xfce๋ฅผ ๋ฒ„์ „ 4๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ๋‚˜ํƒ€๋‚œ xfwm4.14 ์ฐฝ ๊ด€๋ฆฌ์ž์˜ ํ‡ดํ–‰์  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ฐฝ์„ ์žฅ์‹ํ•  ๋•Œ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚จ).
    • Wine ํฌํŠธ๊ฐ€ Wine 5.0์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด์ „์—๋Š” 4.0.3์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค).
    • Go ์ปดํŒŒ์ผ๋Ÿฌ๋Š” 1.14 ๋ฒ„์ „๋ถ€ํ„ฐ FreeBSD 64์— ๋Œ€ํ•œ ARM12.0 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ณต์‹ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ธฐ๋ณธ ์‹œ์Šคํ…œ์˜ OpenSSH๊ฐ€ 7.9p1 ๋ฆด๋ฆฌ์Šค๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • sysctlmibinfo2 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ํฌํŠธ(devel/libsysctlmibinfo2)์— ๋ฐฐ์น˜๋˜์–ด sysctl MIB์— ์•ก์„ธ์Šคํ•˜๊ณ  sysctl ์ด๋ฆ„์„ ๊ฐœ์ฒด ์‹๋ณ„์ž(OID)๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐฐํฌ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋งˆ๋“œBSD 1.3.1๋Š” USB ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋ถ€ํŒ… ๊ฐ€๋Šฅํ•œ ํœด๋Œ€์šฉ ๋ฐ์Šคํฌํƒ‘์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์กฐ์ •๋œ FreeBSD ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ํ™˜๊ฒฝ์€ ์ฐฝ ๊ด€๋ฆฌ์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ๋ฐ•์Šค. ๋“œ๋ผ์ด๋ธŒ ์žฅ์ฐฉ์— ์‚ฌ์šฉ DSBMD (CD9660, FAT, HFS+, NTFS, Ext2/3/4 ๋งˆ์šดํŠธ ์ง€์›), ๋ฌด์„  ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ - wifimgr, ๊ทธ๋ฆฌ๊ณ  ๋ณผ๋ฅจ์„ ์กฐ์ ˆํ•˜๋ ค๋ฉด - DSBMixer.
    • ์‹œ์ž‘ ์ผ ๊ต๋„์†Œ ํ™˜๊ฒฝ ๊ด€๋ฆฌ์ž๋ฅผ ์œ„ํ•œ ์ „์ฒด ๋ฌธ์„œ ์ž‘์„ฑ์— ๊ด€ํ•˜์—ฌ ์ˆ˜. ๋„คํŠธ์›Œํฌ ์Šคํƒ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ๋„์ž…๋  Pot 0.11.0์ด ์ถœ์‹œ๋ฅผ ์œ„ํ•ด ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster