방화벽을 만들 OS는 윈도가 아니고 Linux로 거의 결정을 내려논 상탭니다.
Linux의 어떤 버젼, 어떤 종류의 Linux를 사용해야만 아래에 나열하는 요구사항과
같이 개발을 할 수 있을까 하는건데, 필요한 정보를 찾기가 쉽지 않군요.
Linux, Embedded Linux쪽으로 조예가 싶으신 분들의 주언을 부탁 드립니다.
1. 하드웨어.
CPU = i5 계열, 혹은 i3
RAM = 4G
SSD = 128G(개발용), 256G(패킷용)
2. O/S의 준비.
GUI는 필요없습니다.
Command-Line compiler(C/C++, assembler, 다른건 필요없음.).
가장 단순한 그렇지만 성능은 좋은 커널 또는 no kernel.
SSD driver, Graphic driver, Network driver, HUI driver,
기타 필수 드라이버(Data BUS, USB, DMA 등등)
3. 만들어야할 드라이버.
3-1. 네트웍 카드 드라이버.
방화벽(H/W) 입니다. 네트웍(Ethernet) 카드 세개가 꽂혀 있을겁니다.
하나는 인터넷.외부네트웍 방향, 하나는 내부네트웍 방향입니다.
나머지 하나는 개발자가 PC에 접근하기 위한 겁니다.
개발자 접근용 카드는 미리 준비된 범용 driver면 충분합니다.
외부네트웍, 내부네트웍을 담당할 카드의 driver는 직접 개발합니다.
왜냐하면, packet capturing tool, packet sniffing 툴 등으로 별도로 사용하면
성능이 많이 떨어지기 때문에
Q.1. ----- 네트웍 카드 단에서 패킷을 떨굴수 있도록 설계되어야 하기 때문 -----
Q.2. ----- 네트웍 카드 단에서 방화벽 알고리즘이 적용되어야 하기 때문 -------
입니다.
3-2. FileSystem.
Q.3. 패킷을 읽고 쓸수 있도록 최적화된 FileSystem을 만든다.
Q.4. 이 FileSystem은 네트웍 드라이버 <---- DMA ----> FileSystem와 같이 최적화
되어야 한다.
3-3. DMA 드라이버.
Q.3, Q.4.를 구현하기 위해서.
4. 요약 - 만들 드라이버.
Q.1, Q.2 와 같이 네트웍 드라이버 단에서 알고리즘이 적용된 드라이버 개발.
Q.3 과 같이 최적화된 FileSystem.
Q.4 DMA driver.
위의 세개를 구현하기 쉬운 kernel 또는 no kernel.
---- 방화벽의 용도로 최적화되고 범용 device는 물리지 않기 때문에 no kernel도 고려해봄.
5. 요약 - 전체.
기본적인 command-line compiler 만 제공.
단순 커널, 기본 드라이버.
나머지 드라이버는 모두 개발(Network, Disk & FileSystem, DMA).
가장 단순한 기능만 제공하고, 나머지 리소스는 막지 않고 모조리
오픈해주는 O/S.
이와 같은 요구사항에 가장 가까운 O/S는 뭘까요?
생각하기에 Linux중에 하나를 찾아야 할것 같습니다.
조언 좀 부탁 드립니다.
|
칩셋에서 SSD를 콘트롤 하기위한 인터페이스도 갖고 있겠죠. (SATA든 PCI 버스든)
MMU유닛이 빠져있는 소형 CPU를 위한 별도의 Embedded Linux Kernel 패키지를 이용하는 것 보다는
스탠다드 리눅스 커널을 이용해서 빌드할 때, Kernel Configuration을 적절히 세팅해서 커널 이미지를 줄여서 사용하는 게 낫겠네요.