문제

저는 항상 커널 해킹과 임베디드 시스템의 세계에 매료되었습니다.
그런 것들을 엉망으로 만들기 시작하는 데 대한 좋은 튜토리얼(+쉽게 사용 가능한 하드웨어)을 얻은 사람이 있습니까?
좋은 문서가 함께 제공되고 가격도 저렴한 드라이버 작성용 키트 같은 것이 있나요?

감사해요!

도움이 되었습니까?

해결책

커널 개발이 처음이라면 하드웨어 개발부터 시작하지 말고 proc 파일/sysfs와 같은 "소프트웨어 전용" 커널 모듈로 이동하거나 더 복잡한 예제 파일 시스템/네트워크 개발을 위해 uml/vmware/에서 개발하는 것이 좋습니다. 버추얼박스/...머신이 충돌해도 크게 다치지 않을 것입니다 :) 임베디드 개발의 경우 소형 ARM 개발 키트 또는 소형 Via C3/C4 머신 또는 홈브류 USB/PCI 등으로 구울 수 있는 오래된 PC를 사용할 수 있습니다. 장치.

시작하기 좋은 곳은 아마도 Kernelnewbies.org - 커널 개발자를 위한 많은 링크와 유용한 정보가 있으며, 초보자를 위한 구현하기 쉬운 작업 목록도 제공합니다.

읽어야 할 책:

리눅스 커널 이해 - 커널 하위 시스템의 설계를 자세히 설명하는 매우 유용한 참고 자료

리눅스 장치 드라이버 - Linux 커널의 주요 측면을 설명하고 진행하는 데 중점을 두고 많은 예제 코드가 포함된 튜토리얼과 비슷하게 작성되었습니다.빌드 프로세스와 커널 모듈의 기본 사항을 소개합니다.

Linux 커널 모듈 프로그래밍 가이드 - 추가 소개 자료

앞서 제안했듯이 Linux 코드를 살펴보는 것은 항상 좋은 생각입니다. 특히 Linux 커널 API는 자주 변경되는 경향이 있기 때문입니다.LXR은 매우 멋진 브라우징 인터페이스로 많은 도움을 줍니다. lxr.linux.no

커널 빌드 프로세스를 이해하려면 다음 링크가 도움이 될 수 있습니다.

Linux 커널 Makefile(kbuild)

마지막으로 커널 소스 배포판의 Documentation 디렉터리를 찾아보세요!

다음은 커널 개발 수업에서 무심코 훔친 몇 가지 흥미로운 연습입니다.

  • 모든 읽기 액세스 시 현재 시간을 jiffies 단위로 보고하는 /proc/jiffies 파일을 생성하는 커널 모듈을 작성하세요.
  • proc 파일 /proc/sleep을 제공하는 커널 모듈을 작성하세요.응용 프로그램이 이 파일에 ASCII 텍스트로 몇 초를 기록하면("echo 3 > /proc/sleep") 지정된 시간(초) 동안 차단되어야 합니다.쓰기 액세스는 파일 내용에 부작용이 없어야 합니다. 즉, 읽기 액세스에서 파일은 비어 있는 것처럼 보여야 합니다(LDD3, ch.6/7)
  • 일부 텍스트를 일시적으로 저장할 수 있는 proc 파일을 작성하고(echo "blah" > /proc/pipe 사용) 다시 꺼내서(cat /proc/pipe) 파일을 지웁니다.동기화 문제에 주의하세요.
  • 파이프 예제 모듈을 수정하여 문자 장치 /dev/pipe로 등록하고 쓰기 요청에 대한 동적 메모리 할당을 추가합니다.
  • 정말 간단한 파일 시스템을 작성해 보세요.

다른 팁

절대적인 ~ 해야 하다 ~이다 이것 루비니의 책.(하드카피 또는 무료 소프트카피로 모두 사용 가능)

그는 PC 이외의 하드웨어가 필요하지 않은 여러 더미 드라이버의 구현을 제공합니다.따라서 커널 개발을 시작하는 것이 가장 쉬운 방법입니다.

임베디드 작업에 관해서는 시중에 나와 있는 수많은 SBC(단일 보드 컴퓨터) 중 하나를 구입하는 것이 좋습니다.일반적으로 PC/104 인터페이스를 사용하는 x86 프로세서를 기반으로 하는 여러 가지가 있습니다(전기적으로 PC/104는 ISA 버스 표준과 동일하지만 에지 커넥터가 아닌 스택형 커넥터를 기반으로 하며 맞춤형 하드웨어를 인터페이스하기가 매우 쉽습니다)

일반적으로 디버깅을 더 쉽게 해주는 vga 커넥터가 있습니다.

임베디드 리눅스 해킹을 위해서는 어디에서나 구입할 수 있는 간단한 Linksys WRT54G 라우터가 자체 개발 플랫폼입니다. http://en.wikipedia.org/wiki/Linksys_WRT54G_series:

WRT54G는 GNU GPL의 의무를 충족하기 위해 펌웨어 소스 코드가 공개된 최초의 소비자 수준 네트워크 장치로 유명합니다.이를 통해 프로그래머는 펌웨어를 수정하여 장치에 기능을 변경하거나 추가할 수 있습니다.여러 타사 펌웨어 프로젝트는 대중에게 WRT54G용 향상된 펌웨어를 제공합니다.

설치를 해보았습니다 OpenWrt 그리고 DD-WRT 그것에 펌웨어.저비용 플랫폼에서의 해킹의 출발점으로 확인해 보실 수 있습니다.

우선, 가장 좋은 방법은 많은 코드를 읽는 것입니다.Linux는 오픈 소스이므로 수십 개의 드라이버를 찾을 수 있습니다.당신이 쓰고 싶은 것과 같은 방식으로 작동하는 것을 찾으십시오.괜찮고 비교적 이해하기 쉬운 코드(루프백 장치, ROM fs 등)를 찾을 수 있습니다.

다음을 사용할 수도 있습니다. lxr.linux.no, 이는 상호 참조된 Linux 코드입니다.어떤 것이 어떻게 작동하는지 알아내야 하고 코드를 조사해야 한다면 이것이 좋고 쉬운 방법입니다.

O'Reilly 책(Linux Kernel 이해, 제3판은 2.6 커널에 관한 것임)도 있습니다. 또는 무료로 원하는 것이 있으면 Advanced Linux Programing 책(http://www.advancedlinuxprogramming.com/).파일 시스템, 네트워킹 등에 관한 구체적인 문서도 많이 있습니다.

준비해야 할 사항:

  • 크로스 컴파일을 하게 될 것입니다.임베디드 장치는 MIPS, PowerPC 또는 ARM CPU를 사용하지만 합리적인 시간 내에 자체 커널을 컴파일할 만큼 CPU 성능, 메모리 또는 저장 공간이 충분하지 않습니다.
  • 임베디드 시스템은 종종 직렬 포트를 콘솔로 사용하며 비용을 낮추기 위해 일반적으로 생산 보드에 납땜된 커넥터가 없습니다.직렬 포트 커넥터를 납땜할 수 없으면 커널 패닉을 디버깅하는 것이 매우 어렵습니다. 무엇이 잘못되었는지에 대한 많은 정보를 얻을 수 없습니다.

그만큼 링크시스 NSLU2 실제 임베디드 시스템을 작동할 수 있는 저렴한 방법이며 주변 장치를 추가할 수 있는 USB 포트가 있습니다.다양한 무선 액세스 포인트를 사용할 수도 있습니다. OpenWrt 호환성 페이지. 매장에서 찾을 수 있는 Linksys WRT54G의 현재 모델은 더 이상 Linux에서 사용할 수 없습니다.비용을 줄이기 위해 RAM과 플래시가 적습니다.Cisco/Linksys는 이제 더 작은 메모리 공간으로 WRT54G에서 vxWorks를 사용합니다.

정말로 들어가고 싶다면 임베디드 CPU용 평가 키트의 가격이 미화 몇 백 달러부터 시작됩니다.직업이나 컨설팅 계약을 위해 전문적으로 필요한 경우가 아니면 여기에 돈을 쓰지 않는 것이 좋습니다.

저는 커널 해킹의 완전 초보입니다 :) 저는 "Linux Program Development:연습이 포함된 가이드" 및 "Linux 장치 드라이버 작성:연습이 포함된 가이드" 매우 명확하게 작성되어 있으며 향후 학습에 좋은 기반을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top