UEFI ๋ณด์•ˆ ๋ถ€ํŒ…์„ ์›๊ฒฉ์œผ๋กœ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด Ubuntu์—์„œ ์ž ๊ธˆ ๋ณด์•ˆ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

Google์˜ ์•ˆ๋“œ๋ ˆ์ด ์ฝ”๋…ธ๋ฐœ๋กœํ”„ ์ถœํŒ ๋ณดํ˜ธ๋ฅผ ์›๊ฒฉ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ž ๊ธˆUbuntu์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” Linux ์ปค๋„ ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณต๋จ(์ด๋ก ์ ์œผ๋กœ ์ œ์•ˆ๋œ ๊ธฐ์ˆ ) ์žˆ๋‹ค Fedora ์ปค๋„ ๋ฐ ๊ธฐํƒ€ ๋ฐฐํฌํŒ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๋˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.)

์ž ๊ธˆ์€ ์ปค๋„์— ๋Œ€ํ•œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๊ณ  UEFI ๋ณด์•ˆ ๋ถ€ํŒ… ์šฐํšŒ ๊ฒฝ๋กœ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž ๊ธˆ ๋ชจ๋“œ์—์„œ๋Š” /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes ๋””๋ฒ„๊น… ๋ชจ๋“œ, mmiotrace, Tracefs, BPF, PCMCIA CIS(์นด๋“œ ์ •๋ณด ๊ตฌ์กฐ), ์ผ๋ถ€์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” CPU์˜ ACPI ๋ฐ MSR ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ œํ•œ๋˜๊ณ , kexec_file ๋ฐ kexec_load์— ๋Œ€ํ•œ ํ˜ธ์ถœ์€ ์ฐจ๋‹จ๋˜๊ณ , ์ ˆ์ „ ๋ชจ๋“œ๋Š” ๊ธˆ์ง€๋˜๋ฉฐ, PCI ์žฅ์น˜์— ๋Œ€ํ•œ DMA ์‚ฌ์šฉ์€ ์ œํ•œ๋˜๊ณ , EFI ๋ณ€์ˆ˜์—์„œ ACPI ์ฝ”๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ๊ธˆ์ง€๋˜๋ฉฐ, I/O ํฌํŠธ ์กฐ์ž‘์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ์ง๋ ฌ ํฌํŠธ์— ๋Œ€ํ•œ ์ธํ„ฐ๋ŸฝํŠธ ๋ฒˆํ˜ธ ๋ฐ I/O ํฌํŠธ ๋ณ€๊ฒฝ์„ ํฌํ•จํ•˜์—ฌ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ตœ๊ทผ ๊ธฐ๋ณธ Linux ์ปค๋„์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 5.4, ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฐํฌํŒ์— ์ œ๊ณต๋œ ์ปค๋„์—์„œ๋Š” ์—ฌ์ „ํžˆ ํŒจ์น˜ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜๊ฑฐ๋‚˜ ํŒจ์น˜๋กœ ๋ณด์™„๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ ํ‚คํŠธ์— ์ œ๊ณต๋œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ๊ณผ ์ปค๋„์— ๋‚ด์žฅ๋œ ๊ตฌํ˜„ ๊ฐ„์˜ ์ฐจ์ด์  ์ค‘ ํ•˜๋‚˜๋Š” ์‹œ์Šคํ…œ์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ œ๊ณต๋œ ์ž ๊ธˆ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

Ubuntu ๋ฐ Fedora์—์„œ๋Š” ์ž ๊ธˆ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด Alt+SysRq+X ํ‚ค ์กฐํ•ฉ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Alt+SysRq+X ์กฐํ•ฉ์€ ์žฅ์น˜์— ๋Œ€ํ•œ ๋ฌผ๋ฆฌ์  ์•ก์„ธ์Šค์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์›๊ฒฉ ํ•ดํ‚น ๋ฐ ๋ฃจํŠธ ์•ก์„ธ์Šค ๊ถŒํ•œ ํš๋“์˜ ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ž๋Š” ์ž ๊ธˆ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์˜ˆ๋ฅผ ๋“ค์–ด ์ปค๋„์— ๋””์ง€ํ„ธ ์„œ๋ช…๋˜์ง€ ์•Š์€ ๋ฃจํŠธํ‚ท์ด ์žˆ๋Š” ๋ชจ๋“ˆ.

Andrey Konovalov๋Š” ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ์กด์žฌ๋ฅผ ํ™•์ธํ•˜๋Š” ํ‚ค๋ณด๋“œ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์ด ํšจ๊ณผ์ ์ด์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ธˆ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ /dev/uinput์„ ํ†ตํ•ด Alt+SysRq+X๋ฅผ ๋ˆ„๋ฅด์ง€๋งŒ ์ด ์˜ต์…˜์€ ์ฒ˜์Œ์—๋Š” ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— Alt+SysRq+X ๋Œ€์ฒด ๋ฐฉ๋ฒ•์„ ๋‘ ๊ฐœ ์ด์ƒ ๋” ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ "sysrq-trigger" ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด /proc/sys/kernel/sysrq์— "1"์„ ์ž‘์„ฑํ•˜์—ฌ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•œ ๋‹ค์Œ /proc/sysrq-trigger์— "x"๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ—ˆ์ ์ด๋ผ๊ณ  ํ•˜๋”๊ตฐ์š” ์ œ๊ฑฐ 31์›” Ubuntu ์ปค๋„ ์—…๋ฐ์ดํŠธ ๋ฐ Fedora XNUMX์—์„œ. /dev/uinput์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฒ˜์Œ์— ~ํ•˜๋ ค๊ณ  ์• ์ผ๋‹ค ์ด ๋ฐฉ๋ฒ•์„ ์ฐจ๋‹จํ–ˆ์ง€๋งŒ ์ฐจ๋‹จ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ฝ”๋“œ์—์„œ.

๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ํ†ตํ•œ ํ‚ค๋ณด๋“œ ์—๋ฎฌ๋ ˆ์ด์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. USB/IP ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ€์ƒ ํ‚ค๋ณด๋“œ์—์„œ Alt+SysRq+X ์‹œํ€€์Šค๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. Ubuntu์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” USB/IP ์ปค๋„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ(CONFIG_USBIP_VHCI_HCD=m ๋ฐ CONFIG_USBIP_CORE=m) ์ž‘๋™์— ํ•„์š”ํ•œ ๋””์ง€ํ„ธ ์„œ๋ช…๋œ usbip_core ๋ฐ vhci_hcd ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐฝ์กฐํ•˜๋‹ค ๊ฐ€์ƒ USB ์žฅ์น˜, ๋‹ฌ๋ฆฌ๊ธฐ ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋„คํŠธ์›Œํฌ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  USB/IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์›๊ฒฉ USB ์žฅ์น˜๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‹ ๊ณ  Ubuntu ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌํ–ˆ์ง€๋งŒ ์•„์ง ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ถœ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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