Google์ Andrey Konovalov๊ฐ ์๋ก์ด ๋ชจ๋์ ๊ฐ๋ฐ ์ค์
๋๋ค. USB ์์ ๊ฐ์ ํธ, ํ์ฉ ์ฌ์ฉ์ ๊ณต๊ฐ์์ USB ์ฅ์น๋ฅผ ์๋ฎฌ๋ ์ดํธํฉ๋๋ค. ๋ณด๋ฅ ์ค ์์ฉ ๊ธฐ๋ณธ Linux ์ปค๋์ ์ด ๋ชจ๋์ ํฌํจ์ํค๊ธฐ ์ํ ๊ฒ์
๋๋ค. USB Raw ๊ฐ์ ฏ์ ์ด๋ฏธ ์ ์ฉ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ USB ์ปค๋ ์คํ์ ํผ์ง ํ
์คํธ๋ฅผ ๋จ์ํํ๊ธฐ ์ํด Google์์ ์์ฆ์นผ๋ฌ.
๋ชจ๋์ ์ปค๋ ํ์ ์์คํ
์ ์๋ก์ด ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค. USB ๊ฐ์ ฏ GadgetFS์ ๋์์ผ๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ์๋ก์ด API์ ์์ฑ์ ์ฌ์ฉ์ ๊ณต๊ฐ์์ USB Gadget ํ์ ์์คํ
์ ๋ํ ๋ฎ์ ์์ค์ ์ง์ ์ก์ธ์ค๋ฅผ ์ป์ด ๊ฐ๋ฅํ ๋ชจ๋ USB ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๊ธฐ ์ํด ์ด๋ฃจ์ด์ก์ต๋๋ค(GadgetFS๋ ์ผ๋ถ ์์ฒญ์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ ๋ฌํ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํจ). . USB Raw Gadget์ GadgetFS์ /dev/gadget๊ณผ ์ ์ฌํ๊ฒ /dev/raw-gadget ์ฅ์น๋ฅผ ํตํด ์ ์ด๋์ง๋ง ์ํธ ์์ฉ์์๋ ์์ฌ FS๊ฐ ์๋ ioctl() ๊ธฐ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฌ์ฉ์ ๊ณต๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ USB ์์ฒญ์ ์ง์ ์ฒ๋ฆฌํ๋ ๊ฒ ์ธ์๋ ์๋ก์ด ์ธํฐํ์ด์ค์๋ USB ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค(GadgetFS๋ USB ์ค๋ช
์์ ์ ํ์ฑ์ ํ์ธํ๊ณ ํน์ ์๋ต์ ํํฐ๋งํ์ฌ ๊ฐ์ง๋ฅผ ๋ฐฉ์งํฉ๋๋ค). USB ์คํ์ ํผ์ฆ ํ
์คํธ ์ค ์ค๋ฅ ๋ฐ์). Raw Gadget์ ๋ํ ์ฐ๊ฒฐํ ํน์ UDC(USB ์ฅ์น ์ปจํธ๋กค๋ฌ) ์ฅ์น์ ๋๋ผ์ด๋ฒ๋ฅผ ์ ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, GadgetFS๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฒซ ๋ฒ์งธ UDC ์ฅ์น์ ์ฐ๊ฒฐํฉ๋๋ค. ์์ธก ๊ฐ๋ฅํ ์ด๋ฆ์ด ๋ค๋ฅธ UDC์ ํ ๋น๋ฉ๋๋ค. ์๋ ํฌ์ธํธ ํ๋์ ์ฅ์น ๋ด์์ ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ ๊ตํ ์ฑ๋์ ๋ถ๋ฆฌํฉ๋๋ค.
์ถ์ฒ : opennet.ru