์๋ ํ์ญ๋๊น!
์ต๊ทผ ํด๋ผ์ฐ๋ ์์ ๊ฐ์ ์๋น์ค๊ฐ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์๋ค๋ ๊ฒ์ ์๋ง๋ ๋น๋ฐ์ด ์๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ ์ด์ ๋ ๋ถ๋ช ํฉ๋๋ค. ๋น๋์ค๋ ์คํ ๋ฆฌ์ง์ ์ธํ๋ผ์ ๋์ฉ๋ ๋์คํฌ ์คํ ๋ฆฌ์ง๊ฐ ํ์ํ "๋ฌด๊ฑฐ์ด" ์ฝํ ์ธ ์ ๋๋ค. ์จํ๋ ๋ฏธ์ค ๋น๋์ค ๊ฐ์ ์์คํ ์ ์ฌ์ฉํ๋ ค๋ฉด ์๋ฐฑ ๋์ ๊ฐ์ ์นด๋ฉ๋ผ๋ฅผ ์ฌ์ฉํ๋ ์กฐ์ง๊ณผ ์ฌ๋ฌ ๋์ ์นด๋ฉ๋ผ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ธ ์ฌ์ฉ์ ๋ชจ๋๋ฅผ ์ํ ์ด์ ๋ฐ ์ง์ ์๊ธ์ด โโํ์ํฉ๋๋ค.
ํด๋ผ์ฐ๋ ์์ ๊ฐ์ ์์คํ ์ ๊ณ ๊ฐ์๊ฒ ๊ธฐ์กด ์์ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ ์ธํ๋ผ๋ฅผ ์ ๊ณตํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ํด๋ผ์ฐ๋ ๋น๋์ค ๊ฐ์ ํด๋ผ์ด์ธํธ๋ ์นด๋ฉ๋ผ๋ฅผ ์ธํฐ๋ท์ ์ฐ๊ฒฐํ๊ณ ํด๋ผ์ฐ๋ ๊ณ์ ์ ์ฐ๊ฒฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์นด๋ฉ๋ผ๋ฅผ ํด๋ผ์ฐ๋์ ์ฐ๊ฒฐํ๋ ๊ธฐ์ ์ ์ธ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์์ฌํ ์ฌ์ง ์์ด ๊ฐ์ฅ ํธ๋ฆฌํ๊ณ ์ ๋ ดํ ๋ฐฉ๋ฒ์ ์๋ฒ๋ ๋ ์ฝ๋ ๋ฑ์ ์ถ๊ฐ ์ฅ๋น ์์ด ์นด๋ฉ๋ผ๊ฐ ํด๋ผ์ฐ๋์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ์ํด์๋ ํด๋ผ์ฐ๋์ ํจ๊ป ์๋ํ๋ ์ํํธ์จ์ด ๋ชจ๋์ ์นด๋ฉ๋ผ์ ์ค์นํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ ดํ ์นด๋ฉ๋ผ์ ๋ํด ์ด์ผ๊ธฐํ๋ฉด ํ๋์จ์ด ๋ฆฌ์์ค๊ฐ ๋งค์ฐ ์ ํ๋์ด ์นด๋ฉ๋ผ ๊ณต๊ธ์
์ฒด์ ๊ธฐ๋ณธ ํ์จ์ด๊ฐ ๊ฑฐ์ 100% ์ ์ ํ๊ณ ์์ผ๋ฉฐ ํด๋ผ์ฐ๋ ํ๋ฌ๊ทธ์ธ์ ํ์ํ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค. ivideon์ ๊ฐ๋ฐ์๋ค์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ํด๊ฒฐํ์ต๋๋ค. ๋ฐฉ๋ฒ์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ปท์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.
์ญ์ฌ์ ๋นํธ
2016๋ ์ ์ฐ๋ฆฌ๋ Rostelecom์ ์ํ ํด๋ผ์ฐ๋ ์์ ๊ฐ์ ํ๋ซํผ ๊ฐ๋ฐ์ ์์ํ์ต๋๋ค.
์นด๋ฉ๋ผ ์ํํธ์จ์ด ์ธก๋ฉด์์ ์ฐ๋ฆฌ๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ์ด๋ฌํ ์์ ์ ์ํ "ํ์ค" ๊ฒฝ๋ก๋ฅผ ๋ฐ๋์ต๋๋ค. ์ฆ, ๊ณต๊ธ์ ์ฒด ์นด๋ฉ๋ผ์ ํ์ค ํ์จ์ด์ ์ค์น๋๊ณ ํด๋ผ์ฐ๋์์ ์๋ํ๋ ์์ฒด ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๊ณ ๊ณผ์ ์์ ๊ฐ์ฅ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ์ฌ์ฉํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค(์: protobuf, libev, mbedtls์ ์ผ๋ฐ C ๊ตฌํ ๋ฐ Boost์ ๊ฐ์ ํธ๋ฆฌํ์ง๋ง ๋ฌด๊ฑฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ ํ ํฌ๊ธฐํจ)
ํ์ฌ IP ์นด๋ฉ๋ผ ์์ฅ์๋ ๋ณดํธ์ ์ธ ํตํฉ ์๋ฃจ์ ์ด ์์ต๋๋ค. ๊ฐ ๊ณต๊ธ์ ์ฒด์๋ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ์์ฒด ๋ฐฉ๋ฒ, ํ์จ์ด ์๋์ ์ํ ์์ฒด API ์ธํธ ๋ฐ ๊ณ ์ ํ ์ ๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค.
์ด๋ ๊ฐ ์นด๋ฉ๋ผ ๊ณต๊ธ์ ์ฒด๊ฐ ํฌ๊ด์ ์ธ ํตํฉ ์ํํธ์จ์ด ๊ณ์ธต์ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ๋ฐํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ ์์ ์์ ์๋ ํด๋ผ์ฐ๋ ์์ ์ ์ํ ๋ก์ง ๊ฐ๋ฐ์ ํ์ ๋ ธ๋ ฅ์ ์ง์คํ๊ธฐ ์ํด 1๊ฐ์ ๋ฒค๋์๋ง ํ๋ ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ก ์ ํ๋ ๊ณต๊ธ์ ์ฒด๋ ์ ๋ฌธ์ํ๋ API์ ์ ๋ฅํ ์์ง๋์ด๋ง ๊ธฐ์ ์ง์์ ์ ๊ณตํ๋ ์นด๋ฉ๋ผ ์์ฅ์ ์ธ๊ณ์ ๋ฆฌ๋ ์ค ํ๋์ธ Hikvision์ด์์ต๋๋ค.
์ฐ๋ฆฌ๋ Hikvision ์นด๋ฉ๋ผ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒซ ๋ฒ์งธ ํ์ผ๋ฟ ํ๋ก์ ํธ์ธ ํด๋ผ์ฐ๋ ๋น๋์ค ๊ฐ์ Video Comfort๋ฅผ ์์ํ์ต๋๋ค.
์ถ์ ์งํ ์ฌ์ฉ์๋ค์ ๋ค๋ฅธ ์ ์กฐ์ ์ฒด์ ์ ๋ ดํ ์นด๋ฉ๋ผ๋ฅผ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์๋์ง์ ๋ํด ์ง๋ฌธํ๊ธฐ ์์ํ์ต๋๋ค.
์ ๋ ๊ฐ ๊ณต๊ธ์ ์ฒด์ ๋ํ ํตํฉ ๋ ์ด์ด๋ฅผ ๊ตฌํํ๋ ์ต์ ์ ๊ฑฐ์ ์ฆ์ ๊ฑฐ๋ถํ์ต๋๋ค. ์ด๋ ํ์ฅ์ฑ์ด ๋ฎ๊ณ ์นด๋ฉ๋ผ ํ๋์จ์ด์ ์ฌ๊ฐํ ๊ธฐ์ ์๊ตฌ ์ฌํญ์ ๋ถ๊ณผํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฌํ ์ ๋ ฅ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ์นด๋ฉ๋ผ ๋น์ฉ: ~60-70$
๋ฐ๋ผ์ ์ ๋ ๋ ๊น์ด ํ๊ณ ๋ค์ด ๋ชจ๋ ๊ณต๊ธ์ ์ฒด์ ์นด๋ฉ๋ผ์ฉ ํ์จ์ด๋ฅผ ์ง์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์นด๋ฉ๋ผ ํ๋์จ์ด ๋ฆฌ์์ค์ ๋ํ ์๊ตฌ ์ฌํญ์ ํฌ๊ฒ ์ค์ฌ์ค๋๋ค. ํด๋ผ์ฐ๋ ์์ ์ ์ํ ๋ ์ด์ด๋ ๋น๋์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ์ฌ ๋ ํจ๊ณผ์ ์ผ๋ก ํตํฉ๋๋ฉฐ ํ์จ์ด์ ๋ถํ์ํ๊ฒ ์ฌ์ฉ๋์ง ์๋ ์ง๋ฐฉ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค์ํ ๊ฒ์ ๋ฎ์ ์์ค์์ ์นด๋ฉ๋ผ๋ฅผ ์ฌ์ฉํ ๋ ์ ์ ๋ ฅ CPU์ ์ถ๊ฐ ๋ถํ๋ฅผ ๋ฐ์์ํค์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ํ๋์จ์ด AES๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ ์๊ฐ ์ฐ๋ฆฌ์๊ฒ๋ ์๋ฌด๊ฒ๋ ์์์ต๋๋ค. ์ ํ ์์ต๋๋ค.
๊ฑฐ์ ๋ชจ๋ ๊ณต๊ธ์
์ฒด๊ฐ ๊ทธ๋ ๊ฒ ๋ฎ์ ์์ค์์ ์ฐ๋ฆฌ์ ํ๋ ฅํ ์ค๋น๊ฐ ๋์ด ์์ง ์์์ต๋๋ค. ํ๋ก ์ค๊ณ ๋ฐ ๊ตฌ์ฑ ์์์ ๋ํ ์ ๋ณด๊ฐ ์์ผ๋ฉฐ ์นฉ์
๋ฐ ์ผ์ ๋ฌธ์์ ๊ณต์ SDK๋ ์์ต๋๋ค.
๊ธฐ์ ์ง์๋ ์์ต๋๋ค.
๋ชจ๋ ์ง๋ฌธ์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง(์ํ ์ฐฉ์ค)์ ํตํด ๋ตํด์ผ ํ์ต๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ฑ๊ณตํ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ํ ์คํธํ ์ฒซ ๋ฒ์งธ ์นด๋ฉ๋ผ ๋ชจ๋ธ์ Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, D-Link ์นด๋ฉ๋ผ ๋ฐ ๋ช๋ช ์ด๋ฆ ์๋ ์ด์ ๊ฐ ์ค๊ตญ ์นด๋ฉ๋ผ์์ต๋๋ค.
๊ธฐ์
Hisilicon 3518E ์นฉ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์นด๋ฉ๋ผ์ ๋๋ค. ์นด๋ฉ๋ผ์ ํ๋์จ์ด ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค์ค๋ฏธ ์ด ๊ฐ๋ฏธ
์ ๋ชฉ ์์
SoC๋ฅผ
ํ์ค๋ฆฌ์ฝ 3518E
ํ์ค๋ฆฌ์ฝ 3518E
๋จ
64MB
64MB
ํ๋์
16MB
8MB
WiFi
mt7601/bcm43143
-
๊ฐ์ง๊ธฐ
ov9732 (720p)
ov9712 (720p)
Ethernet
-
+
๋ง์ดํฌ๋ก
+
+
๋ง์ดํฌ๋กํฐ
+
+
Speaker
+
+
IRL๋จ
+
+
IR์ปท
+
+
์ฐ๋ฆฌ๋ ๊ทธ๋ค๊ณผ ํจ๊ป ์์ํ์ต๋๋ค.
ํ์ฌ Hisilicon 3516/3518 ์นฉ์ ๊ณผ Ambarella S2L/S2LM์ ์ง์ํฉ๋๋ค. ์์ญ ๊ฐ์ง ์นด๋ฉ๋ผ ๋ชจ๋ธ์ด ์์ต๋๋ค.
ํ์จ์ด ๊ตฌ์ฑ
๋ถํ
uboot๋ ๋ถํธ ๋ก๋์ ๋๋ค. ์ ์์ ์ผ ํ ๋จผ์ ๋ถํ ํ๊ณ ํ๋์จ์ด๋ฅผ ์ด๊ธฐํํ๋ฉฐ Linux ์ปค๋์ ๋ก๋ํฉ๋๋ค.
์นด๋ฉ๋ผ ๋ก๋ฉ ์คํฌ๋ฆฝํธ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
bootargs=mem=38M console=ttyAMA0,115200 rootfstype=ramfs mtdparts=hi_sfc:256K(boot),64K(tech),4096K(kernel),8192K(app),-(config) hw_type=101
bootcmd=sf probe 0; sf read 0x82000000 0x50000 0x400000; bootm 0x82000000; setenv bootargs $(bootargs) bkp=1; sf read 0x82000000 0x450000 0x400000; bootm 0x82000000
ํน์ง ์ค ํ๋๋ ๋ ๋ฒ ํธ์ถ๋๋ค๋ ๊ฒ์
๋๋ค. bootm
, ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋์ค์ ์
๋ฐ์ดํธ ํ์ ์์คํ
์ ๋๋ฌํ ๋ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
๋ผ์ธ์ ์ฃผ๋ชฉ mem=38M
. ์, ์, ์ด๊ฒ์ ์คํ๊ฐ ์๋๋๋ค. Linux ์ปค๋๊ณผ ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ 38MB์ RAM์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ํ uboot ์์๋ ๋ค์๊ณผ ๊ฐ์ ํน์ ๋ธ๋ก์ด ์์ต๋๋ค. reg_info
์ฌ๊ธฐ์๋ DDR์ ์ด๊ธฐํํ๊ธฐ ์ํ ํ์ ์์ค ์คํฌ๋ฆฝํธ์ SoC์ ์ฌ๋ฌ ์์คํ
๋ ์ง์คํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ฝํ
์ธ reg_info
์นด๋ฉ๋ผ ๋ชจ๋ธ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ฒฝ์ฐ ์นด๋ฉ๋ผ๋ uboot๋ฅผ ๋ก๋ํ ์ ์์ผ๋ฉฐ ๋ก๋ฉ ์ด๊ธฐ ๋จ๊ณ์์ ์ ์ง๋ฉ๋๋ค.
์ฒ์์ ๊ณต๊ธ์ ์ฒด ์ง์ ์์ด ์์ ํ ๋๋ ์๋ ์นด๋ฉ๋ผ ํ์จ์ด์์ ์ด ๋ธ๋ก์ ๋ณต์ฌํ์ต๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋๊ณผ rootfs
์นด๋ฉ๋ผ๋ ์นฉ SDK์ ์ผ๋ถ์ธ Linux ์ปค๋์ ์ฌ์ฉํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ปค๋์ 3.x ๋ธ๋์น์ ์ต์ ์ปค๋์ด ์๋๋ฏ๋ก ์ถ๊ฐ ์ฅ๋น์ฉ ๋๋ผ์ด๋ฒ๊ฐ ์ฌ์ฉ๋ ์ปค๋๊ณผ ํธํ๋์ง ์๋๋ค๋ ์ฌ์ค์ ์ข ์ข ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. , ์ด๋ฅผ ์ปค๋ ์นด๋ฉ๋ผ๋ก ๋ฐฑํฌํธํด์ผ ํฉ๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์ปค๋์ ํฌ๊ธฐ์ ๋๋ค. FLASH ํฌ๊ธฐ๊ฐ 8MB์ ๋ถ๊ณผํ๋ฉด ๋ชจ๋ ๋ฐ์ดํธ๊ฐ ์ค์ํ๋ฉฐ ์ฐ๋ฆฌ์ ์๋ฌด๋ ํฌ๊ธฐ๋ฅผ ์ต์๋ก ์ค์ด๊ธฐ ์ํด ์ฌ์ฉ๋์ง ์๋ ๋ชจ๋ ์ปค๋ ๊ธฐ๋ฅ์ ์กฐ์ฌ์ค๋ฝ๊ฒ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค.
Rootfs๋ ๊ธฐ๋ณธ ํ์ผ ์์คํ
์
๋๋ค. ๊ทธ๊ฒ์ ๋ค์์ ํฌํจํฉ๋๋ค busybox
, Wi-Fi ๋ชจ๋ ๋๋ผ์ด๋ฒ, ํ์ค ์์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ libld
ะธ libc
, LED ์ ์ด ๋ก์ง, ๋คํธ์ํฌ ์ฐ๊ฒฐ ๊ด๋ฆฌ ๋ฐ ํ์จ์ด ์
๋ฐ์ดํธ๋ฅผ ๋ด๋นํ๋ ์ํํธ์จ์ด๋ ์์ต๋๋ค.
๋ฃจํธ ํ์ผ ์์คํ
์ initramfs๋ก ์ปค๋์ ์ฐ๊ฒฐ๋๋ฉฐ ๋น๋ ๊ฒฐ๊ณผ๋ก ํ๋์ ํ์ผ์ ์ป์ต๋๋ค. uImage
, ์ปค๋๊ณผ rootfs๊ฐ ๋ชจ๋ ํฌํจ๋์ด ์์ต๋๋ค.
์์์์ฉ
ํ์จ์ด์์ ๊ฐ์ฅ ๋ณต์กํ๊ณ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ๋ถ๋ถ์ ๋น๋์ค-์ค๋์ค ์บก์ฒ, ๋น๋์ค ์ธ์ฝ๋ฉ์ ์ ๊ณตํ๊ณ , ๊ทธ๋ฆผ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ๊ณ , ๋์ ๋๋ ์๋ฆฌ ๊ฐ์ง๊ธฐ์ ๊ฐ์ ๋น๋์ค ๋ถ์์ ๊ตฌํํ๊ณ , PTZ๋ฅผ ์ ์ดํ๊ณ ์์ผ ๋ฐ ์ ํ์ ๋ด๋นํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์ผ๊ฐ ๋ชจ๋.
์ค์ํ ๊ธฐ๋ฅ์ ๋น๋์ค ์ ํ๋ฆฌ์ผ์ด์ ์ด ํด๋ผ์ฐ๋ ํ๋ฌ๊ทธ์ธ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
์ ๋ ดํ ํ๋์จ์ด์์๋ ์๋ํ์ง ์๋ ๊ธฐ์กด ์๋ฃจ์ ์ธ '๋ฒค๋ ํ์จ์ด + ํด๋ผ์ฐ๋ ํ๋ฌ๊ทธ์ธ'์์๋ ์นด๋ฉ๋ผ ๋ด๋ถ์ ์์์ด RTSP ํ๋กํ ์ฝ์ ํตํด ์ ์ก๋๋๋ฐ, ์ด๋ ์์ผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๊ณ ์ ์กํ๋ ๋ถํ์ํ ์์คํ ํธ์ถ ๋ฑ ์์ฒญ๋ ์ค๋ฒํค๋์ ๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋น๋์ค๋ ์นด๋ฉ๋ผ ์ํํธ์จ์ด ๊ตฌ์ฑ ์์ ์ฌ์ด์ ์์ผ์ ํตํด ๋ณต์ฌ๋๊ฑฐ๋ ์ ์ก๋์ง ์์ผ๋ฏ๋ก ์นด๋ฉ๋ผ์ ์ ๋นํ ํ๋์จ์ด ๊ธฐ๋ฅ์ ์ต์ ์ผ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํฉ๋๋ค.
ํ์ ์์คํ ์ ๋ฐ์ดํธ
ํน๋ณํ ์๋ถ์ฌ์ ์จ๋ผ์ธ ํ์จ์ด ์ ๋ฐ์ดํธ๋ฅผ ์ํ ๋ด๊ฒฐํจ์ฑ ํ์ ์์คํ ์ ๋๋ค.
๋ฌธ์ ๋ฅผ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ํ์จ์ด ์ ๋ฐ์ดํธ๋ ๊ธฐ์ ์ ์ผ๋ก ์์์ ์์ ์ด ์๋๋ฉฐ, ์ ๋ฐ์ดํธ ๋์ค์ ์ ์ ์ด ๋ฐ์ํ๋ฉด ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ "์์ฑ๋" ์ ํ์จ์ด์ ์ผ๋ถ๊ฐ ํฌํจ๋ฉ๋๋ค. ํน๋ณํ ์กฐ์น๋ฅผ ์ทจํ์ง ์์ผ๋ฉด ์นด๋ฉ๋ผ๋ ์๋น์ค ์ผํฐ๋ก ๊ฐ์ ธ๊ฐ์ผ ํ "๋ฒฝ๋"์ด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์์ต๋๋ค. ์ ๋ฐ์ดํธ ์ค์ ์นด๋ฉ๋ผ๊ฐ ๊บผ์ง๋๋ผ๋ ์ฌ์ฉ์ ๊ฐ์ ์์ด ์๋์ผ๋ก ํด๋ผ์ฐ๋์์ ํ์จ์ด๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์์ ์ ๋ณต์ํฉ๋๋ค.
์ด ๊ธฐ์ ์ ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ทจ์ฝํ ์ ์ Linux ์ปค๋๊ณผ ๋ฃจํธ ํ์ผ ์์คํ ์ผ๋ก ํํฐ์ ์ ๋ฎ์ด์ฐ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ์์ ์ค ํ๋๊ฐ ์์๋๋ฉด ์นด๋ฉ๋ผ๋ ํด๋ผ์ฐ๋์์ ํ์จ์ด๋ฅผ ๋ค์ด๋ก๋ํ ์ ์๋ uboot ๋ถํธ๋ก๋ ์ด์์ผ๋ก ์ ํ ๋ถํ ๋์ง ์์ต๋๋ค.
์ด๋ ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค ์ค ์ธ์ ๋ ์ง ์นด๋ฉ๋ผ์ ์๋ํ๋ ์ปค๋๊ณผ rootfs๊ฐ ์๋์ง ํ์ธํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ rootfs๊ฐ ํฌํจ๋ ์ปค๋ ๋ณต์ฌ๋ณธ ๋ ๊ฐ๋ฅผ ์ง์์ ์ผ๋ก ์ ์ฅํ๊ณ , ๊ธฐ๋ณธ ์ปค๋์ด ์์๋ ๊ฒฝ์ฐ ๋ฐฑ์ ๋ณต์ฌ๋ณธ์์ ๋ก๋ํ๋ ๊ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ข์ ํด๊ฒฐ์ฑ ์ ๋๋ค. ๊ทธ๋ฌ๋ rootfs๊ฐ ์๋ ์ปค๋์ ์ฝ 3.5MB๋ฅผ ์ฐจ์งํ๋ฉฐ ์๊ตฌ ๋ฐฑ์ ์ ์ํด์๋ 3.5MB๋ฅผ ํ ๋นํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ์ ๋ ดํ ์นด๋ฉ๋ผ์๋ ๋ฐฑ์ ์ปค๋์ ์ํ ์ฌ์ ๊ณต๊ฐ์ด ๊ทธ๋ ๊ฒ ๋ง์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ํ์จ์ด ์
๋ฐ์ดํธ ์ค์ ์ปค๋์ ๋ฐฑ์
ํ๊ธฐ ์ํด ์์ฉ ํ๋ก๊ทธ๋จ ํํฐ์
์ ์ฌ์ฉํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ปค๋๋ก ์ํ๋ ํํฐ์
์ ์ ํํ๋ ค๋ฉด ๋ ๊ฐ์ง ๋ช
๋ น์ด ์ฌ์ฉ๋ฉ๋๋ค. bootm
uboot์์ - ์ฒ์์๋ ๋ฉ์ธ ์ปค๋์ ๋ก๋ํ๋ ค๊ณ ์๋ํ๊ณ ์์๋ ๊ฒฝ์ฐ์๋ ๋ฐฑ์
์ปค๋์ ๋ก๋ํฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ธ์ ๋ ์ง ์นด๋ฉ๋ผ์ rootfs๊ฐ ํฌํจ๋ ์ฌ๋ฐ๋ฅธ ์ปค๋์ด ์๊ณ ํ์จ์ด๋ฅผ ๋ถํ ํ๊ณ ๋ณต์ํ ์ ์์ต๋๋ค.
ํ์จ์ด ๊ตฌ์ถ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํ CI/CD ์์คํ
ํ์จ์ด๋ฅผ ๋น๋ํ๊ธฐ ์ํด ์ง์๋๋ ๋ชจ๋ ์นด๋ฉ๋ผ ๋ชจ๋ธ์ ๋ํ ํ์จ์ด๋ฅผ ์๋์ผ๋ก ๋น๋ํ๋ gitlab CI๋ฅผ ์ฌ์ฉํ๋ฉฐ, ํ์จ์ด ๋น๋ ํ์๋ ์นด๋ฉ๋ผ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ ์๋น์ค์ ์๋์ผ๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
์๋น์ค์์ ํ์จ์ด ์ ๋ฐ์ดํธ๋ QA ํ ์คํธ ์นด๋ฉ๋ผ๋ก ์ ๋ฌ๋๊ณ , ๋ชจ๋ ํ ์คํธ ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด ์ฌ์ฉ์์ ์นด๋ฉ๋ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ ๋ณด ๋ณด์
์ค๋๋ ์ ๋ณด ๋ณด์์ด ์นด๋ฉ๋ผ๋ฅผ ํฌํจํ ๋ชจ๋ IoT ์ฅ์น์ ๊ฐ์ฅ ์ค์ํ ์ธก๋ฉด์ด๋ผ๋ ๊ฒ์ ๋น๋ฐ์ด ์๋๋๋ค. Mirai์ ๊ฐ์ ๋ด๋ท์ ์ธํฐ๋ท์ ๋์๋ค๋๋ฉฐ ๊ณต๊ธ์ ์ฒด์ ํ์ค ํ์จ์ด๋ก ์๋ฐฑ๋ง ๋์ ์นด๋ฉ๋ผ๋ฅผ ๊ฐ์ผ์ํค๊ณ ์์ต๋๋ค. ์นด๋ฉ๋ผ ๊ณต๊ธ์ ์ฒด์ ๋ํ ๋ชจ๋ ์กด๊ฒฝ์ฌ์ ๊ฐ์ง๊ณ ํ์ค ํ์จ์ด์๋ ํด๋ผ์ฐ๋ ์์ ์ ํ์ํ์ง ์์ ๋ง์ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ง๋ง ๋ด๋ท์ด ํ์ฉํ๋ ๋ง์ ์ทจ์ฝ์ ์ด ํฌํจ๋์ด ์๋ค๋ ์ ์ ์ธ๊ธํ์ง ์์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํ์จ์ด์์ ์ฌ์ฉ๋์ง ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋นํ์ฑํ๋๊ณ ๋ชจ๋ tcp/udp ํฌํธ๊ฐ ๋ซํ๊ณ ํ์จ์ด๋ฅผ ์ ๋ฐ์ดํธํ ๋ ์ํํธ์จ์ด์ ๋์งํธ ์๋ช ์ด ํ์ธ๋ฉ๋๋ค.
์ด ์ธ์๋ ํ์จ์ด๋ ์ ๋ณด ๋ณด์ ์ฐ๊ตฌ์์์ ์ ๊ธฐ์ ์ผ๋ก ํ ์คํธ๋ฅผ ๊ฑฐ์นฉ๋๋ค.
๊ฒฐ๋ก
์ด์ ์ฐ๋ฆฌ ํ์จ์ด๋ ๋น๋์ค ๊ฐ์ ํ๋ก์ ํธ์ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์๋ง๋ ๊ทธ ์ค ๊ฐ์ฅ ํฐ ๊ฒ์ ๋ฌ์์ ์ฐ๋ฐฉ ๋ํต๋ น ์ ๊ฑฐ ๋น์ผ ํฌํ ๋ฐฉ์ก์ผ ๊ฒ์
๋๋ค.
์ด ํ๋ก์ ํธ์๋ ์ฐ๋ฆฌ๋๋ผ์ ํฌํ์์ ์ค์น๋ ํ์จ์ด๊ฐ ํฌํจ๋ 70๋ง ๋ ์ด์์ ์นด๋ฉ๋ผ๊ฐ ํฌํจ๋์์ต๋๋ค.
์ฌ๋ฌ ๊ฐ์ง ๋ณต์กํ๊ณ ์ด๋ค ๊ณณ์์๋ ๋น์์๋ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๋ถ์ ์ฐ๋ฆฌ๋ ๋ฌผ๋ก ์์ง๋์ด๋ก์ ํฐ ๋ง์กฑ์ ์ป์์ง๋ง ์ด ์ธ์๋ ์นด๋ฉ๋ผ ๊ตฌ์ ๋น์ฉ๋ ์๋ฐฑ๋ง ๋ฌ๋ฌ๋ฅผ ์ ์ฝํ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋น์ฉ ์ ๊ฐ์ ๋จ์ด์ ์ด๋ก ์ ๊ณ์ฐ๋ฟ๋ง ์๋๋ผ ์ด๋ฏธ ์๋ฃ๋ ์ฅ๋น ๊ตฌ๋งค ์ ์ฐฐ ๊ฒฐ๊ณผ์ ๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ฐ๋ ๋น๋์ค ๊ฐ์์ ๋ํด ์ด์ผ๊ธฐํ๋ฉด ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. ๋ฎ์ ์์ค์ ์ ๋ฌธ ์ง์๊ณผ ๊ฐ๋ฐ์ ์ ๋ต์ ์ผ๋ก ์์กดํ์ฌ ์ฅ๋น ๋น์ฉ์ ํฌ๊ฒ ์ ๊ฐํ๊ฑฐ๋ ๊ณ ๊ฐ์ ์ฅ๋น๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋น์ ํน์ฑ์ ๊ตฌ์ฒด์ ์ผ๋ก ์ดํด๋ณด๋ฉด ์ฌ์ค์ ๊ทธ๋ ์ง ์์ต๋๋ค. ๋น์ทํ ์ ๊ฐํ๊ณผ๋ ๋ค๋ฆ ๋๋ค.
๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ํตํฉ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ์ ๋ต์ ์ผ๋ก ์ค์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น? ํ๋ฌ๊ทธ์ธ์ ๊ฐ๋ฐํ ๋ ๊ฐ๋ฐ์๋ ํน์ ๊ธฐ์ (๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๋กํ ์ฝ, ํ์ค)์ ์์กดํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋น์ผ ์ฅ๋น์ ๋ํด์๋ง ์ผ๋ จ์ ๊ธฐ์ ์ ์ ํํ๋ค๋ฉด, ๋ฏธ๋์ ๊ฐ์ผ ์นด๋ฉ๋ผ๋ก ์ ํํ๋ ค๋ ์๋๋ ์ต์ํ ์์ฒญ๋๊ฒ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฑฐ๋ ์ฌ์ง์ด ์คํจํ๊ณ ๊ฐ๋น์ผ ์ฅ๋น๋ก ๋์๊ฐ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์ถ์ฒ : habr.com