KR20040099439A - 다수의 커널 버전에서 수행하기 위해 커널 모듈을수정하는 장치 및 방법 - Google Patents

다수의 커널 버전에서 수행하기 위해 커널 모듈을수정하는 장치 및 방법 Download PDF

Info

Publication number
KR20040099439A
KR20040099439A KR10-2004-7016390A KR20047016390A KR20040099439A KR 20040099439 A KR20040099439 A KR 20040099439A KR 20047016390 A KR20047016390 A KR 20047016390A KR 20040099439 A KR20040099439 A KR 20040099439A
Authority
KR
South Korea
Prior art keywords
kernel
module
target system
symbol
compiled
Prior art date
Application number
KR10-2004-7016390A
Other languages
English (en)
Inventor
토마스 핸달
Original Assignee
컴퓨터 어소시에이츠 싱크, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 컴퓨터 어소시에이츠 싱크, 인코포레이티드 filed Critical 컴퓨터 어소시에이츠 싱크, 인코포레이티드
Publication of KR20040099439A publication Critical patent/KR20040099439A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 장치 및 방법이 제공된다. 커널 분석기는 목표 시스템의 커널로부터 오류 검사 기준 및 커널 버전 ID를 추출한다. 모듈 적응 컴포넌트는 컴파일된 커널 모듈에 목표 시스템의 커널로부터 커널 분석기에 의해 추출된 오류 검사 기준에 대응하는 오류 검사 매개변수를 삽입하고, 컴파일된 커널 모듈의 버전 ID를 목표 시스템의 커널로부터 커널 분석기에 의해 추출된 커널 버전 ID로 대체한다.

Description

다수의 커널 버전에서 수행하기 위해 커널 모듈을 수정하는 장치 및 방법{APPARATUS AND METHOD FOR MODIFYING A KERNEL MODULE TO RUN ON MULTIPLE KERNEL VERSIONS}
운영 체제는 운영 컴퓨터 하드웨어를 사용가능하게 만드는 하나 이상의 컴퓨터 프로그램(예를 들어, 컴퓨터가 하나 이상의 태스크를 수행할 수 있도록 하는 컴퓨터 명령어들의 집합)이다. DOS, Windows, Mac, Unix 및 Palm은 운영 체제의 일부 계열들이다.
운영 체제의 주 기능은 컴퓨터 자원을 관리하는 것이다. 자원들로는 예를 들어, 프로세서, 스토리지(메모리, 하드 디스크 등), 입/출력 장치(프린터, 모니터 디스플레이 등), 및 통신 장치(모뎀, 네트워크 인터페이스 등)가 있다. 자원 관리태스크로는 예를 들어, 다수의 사용자들이 데이터 및 다른 자원를 공유할 수 있도록 하는 것 , 주고받기(handshaking) 및 다른 네트워크 통신 태스크를 제어하는 것 등이 있다.
자원 관리와 같은 운영 체제 기능은 일반적으로 일반 컴퓨터 사용자에게 투명한 방식으로 수행된다. 예를 들어, 대부분의 사용자가 그것을 인식하지 못한다 할지라도, 운영 체제는 한 편으로는 컴퓨터 자원간의 인터페이스로서, 다른 한 편으로는 사용자들이 사용하는 애플리케이션 프로그램(워드 프로세서, 스프레드쉬트, 웹 브라우저 등)간의 인터페이스로서 기능한다. 운영 체제는 또한 사용자 인터페이스를 제공하고, 인증되지 않은 사용자에 대해 액세스 및 데이터의 보안을 유지하는 것, 시스템 오류로부터 복구하는 것 등의 다른 기능을 지닌다.
운영 체제 커널은 운영 체제의 핵심 또는 코어 컴포넌트이다. 커널의 기능으로는 프로세스 관리, 프로세스간의 통신, 끼어들기(interrupt) 처리, 스토리지 할당/반환 지원, 입/출력 활동 지원, 시스템 보안 방법 등이 있다. 이들 각 기능들은 많은 태스크를 포함한다. 예를 들어, 보안 태스크로는 액세스 제어, 로깅 및 모니터링, 스토리지 및 파일 시스템 관리, 및 네트워크 및 모뎀 통신 모니터링 등이 있다.
Linux(리눅스)는 UNIX(유닉스) 운영 체제 계열의 한 멤버이고, x86 프로세서를 지닌 퍼스널 컴퓨터를 포함한 각종 컴퓨터 플랫폼상에서 수행될 수 있다. Linux는 UNIX를 무료로, 개방형으로 구현한 것이다. 특히, Linux 커널의 소스 코드는 대중들에게 널리 사용가능하고, 계속해서 향상되거나 또는 수정되고 있다.Linux 커널이 점점 향상되고 수정되어 대중들에 의해 일반적으로 채용됨에 따라, 새 Linux 버전이 출시된다. 공식적으로 출시된 Linux 커널의 버전은 그에 대응하는 할당된 커널 버전 ID를 통해 확인할 수 있다.
일부 다른 운영 체제 커널과 유사한 Linux 커널은, 일반적으로 복수의 커널 모듈로 구성되어 있다. 커널 모듈은 하나 이상의 대응하는 커널 태스크를 수행하는 프로그램이다. 커널 버전은 커널 버전이 설치될 특정 시스템에 따라 선택된 커널 모듈의 조합이다. 두 개의 커널 버전은 (a) 하나의 버전이 다른 버전에 없는 추가의 모듈을 지니고/지니거나 (b) 두 모듈 각각의 버전이 동일한 태스크를 수행하되 다른 (그러나 아마도 동일하게 만족스러운) 방식으로 수행할 때 다를 수 있다.
새 커널 모듈이 운영 체제 커널에 추가될 때(또는 그 안의 기존의 모듈을 대체할 때), 새 모듈을 지니는 커널은 다시 컴파일되어야 한다. 커널의 컴파일은 시간이 걸리는 태스크이다. 다수의 커널 버전이 활발하게 사용되는 Linux와 같은 운영 체제에 대해, 새 커널 모듈(예를 들어 방화벽)은 새 모듈이 추가되는 복수(사용자 정의 또는 공식적으로 출시된)의 커널 버전에 대응하여 다수의 커널 컴파일을 해야 한다.
Linux는 로드할 수 있는 커널 모듈을 동적으로 링크한다. 커널이 동적으로 링크가능한 커널 모듈을 사용할 때조차도, 각 동적으로 링크가능한 커널 모듈은 로드가능한 모듈로 컴파일된다. 동적으로 링크가능한 새 커널 모듈이 로드되는 커널이 다시 컴파일 될 필요가 없음에도 불구하고, 동적으로 링크가능한 새 커널 모듈은 일반적으로 여러 번(어떤 환경 하에서는, 수백 번) 컴파일되고, 각 컴파일에서는 각(출시된 또는 사용자 정의) 커널 버전이 동적으로 링크할 수 있는 로드가능한 대응 모듈을 제공한다. 다수의 컴파일은 시간이 걸리고 많은 불필요한 스토리지 소비를 초래한다.
본 출원은 2002년 4월 17일자로 출원되고, 발명의 명칭이 "다수의 커널 버전에서 수행하기 위해 커널 모듈을 수정하는 장치 및 방법(APPARATUS AND METHOD FOR MODIFYING A KERNEL MODULE TO RUN ON MULTIPLE KERNEL VERSIONS)"인 미국 가출원 제 60/373,120호의 일반적으로 양도된 권리를 주장한다.
본 발명은 컴퓨터 운영 체제에 관한 것이다. 보다 구체적으로, 본 발명은 커널 모듈을 목표 시스템의 운영 체제 커널에 대해 적응시키는 것에 관한 것이다.
도 1은 본 발명의 한 실시예에 따른 커널 모듈 수정 장치의 블록도.
도 2는 본 발명의 한 실시예에 따른, 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 방법의 흐름도.
도 3은 본 발명의 한 실시예에 따른, 목표 시스템의 Linux 커널에 대해 또 하나의 Linux 커널 버전에 대응하는 컴파일된 Linux 커널 모듈을 적응시키기 위한방법의 흐름도.
도 4는 본 발명의 한 실시예에 따른, 기호표를 분석하는 방법의 흐름도.
본 발명은 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 커널 모듈 수정 장치를 제공한다. 한 실시예에서, 장치는 커널 분석기(kernel analyzer) 및 커널 적응 컴포넌트(kernel adaption component)를 포함한다. 커널 분석기는 목표 시스템의 커널로부터 오류 검사 기준 및 커널 버전 ID를 추출한다. 모듈 적응 컴포넌트는 컴파일된 커널 모듈에 목표 시스템의 커널로부터 커널 분석기에 의해 추출된 오류 검사 기준에 대응하는 오류 검사 매개변수를 삽입하고, 컴파일된 커널 모듈의 버전 ID를 목표 시스템의 커널로부터 커널 분석기에 의해 추출된 커널 버전 ID로 대체한다.
본 발명은 또한 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 방법을 제공한다. 한 실시예에 따르면, 이 방법은 목표 시스템의 커널로부터 오류 검사 기준 및 커널 버전 ID를 추출하고, 컴파일된 커널 모듈에 목표 시스템의 커널로부터 추출된 오류 검사 기준에 대응하는 오류 검사 매개변수를 삽입하고, 컴파일된 커널 모듈의 버전 ID를 목표 시스템의 커널로부터 추출된 커널 버전 ID로 대체한다. 오류 검사 매개변수가 삽입되는 컴파일된 커널 모듈은 로드가능한 Linux 커널 모듈 및/또는 이진(binary)일 수 있다. 오류 검사 매개변수 및 목표 시스템의 커널로부터 추출된 커널 버전 ID를 지니는 수정되고 컴파일된 커널 모듈은 목표 시스템의 커널로 로드가능하다.
또 다른 실시예에 따르면, 오류 검사 기준은 목표 시스템의 커널로부터 추출된 하나 이상의 체크섬(checksum)을 포함할 수 있다. 이 방법은 또한 컴파일된 커널 모듈에 기호표를 두고, 기호표 내의 각 기호 이름에 대해 기호 이름의 분석을 수행하는 것을 포함한다. 기호 이름 분석에서는 기호 이름과 목표 시스템 커널의 기호를 비교한다. 기호 이름이 목표 시스템 커널의 기호에 매치할 경우, 매치된 기호과 관련된 체크섬은 추출되고 컴파일된 커널 모듈의 기호표의 기호 이름에 덧붙여진다. 방법은 또한 기호 이름을 분석한 후 기호표의 하나 이상의 오프셋을 조정한다.
본 발명의 특징은 첨부된 도면을 참조하여 이하의 상세한 설명을 통해 쉽게 이해될 것이다.
본 발명은 다수의 커널 버전에서 수행될 수 있도록 커널 모듈을 수정하는 툴(방법 및 장치의 형태로)을 제공한다. 툴은 컴퓨터 판독가능 매체에 저장되고/저장되거나 컴퓨터 네트워크 또는 다른 통신 매체를 통해 전송되는 소프트웨어 유틸리티(예를 들어, 하나 이상의 컴퓨터 프로그램)로 구현될 수 있다. 소프트웨어 유틸리티가 실행되는 컴퓨터 또는 컴퓨터 시스템은 목표 시스템일 수 있다.
도 1의 실시예에 따른, 커널 모듈 수정 장치(10)는 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시킨다. 장치(10)는 커널 분석기(11) 및 모듈 적응 컴포넌트(12)를 포함한다. 커널 분석기 및 모듈 적응 컴포넌트는 소프트웨어 유틸리티의 모듈 또는 코드 부분일 수 있다.
한 실시예에 따라, 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 방법이 도 1 및 도 2에 설명되어 있다. 커널 분석기 컴포넌트(11)는 목표 시스템 커널(5)로부터 오류 검사 기준(5a) 및 커널 버전 ID(5b)를 추출한다(단계 S21). 모듈 적응 컴포넌트(12)는 목표 시스템 커널로부터 커널 분석기가 추출한 오류 검사 기준에 대응하는 오류 검사 매개변수를 컴파일된 커널 모듈(20)에 삽입하고, 컴파일된 커널 모듈(20)의 버전 ID를 목표 시스템 커널로부터 커널 분석기가 추출한 커널 버전 ID로 대체한다(단계 S23).
오류 검사 매개변수가 삽입되는 컴파일된 커널 모듈은 로드가능한 Linux 커널 모듈 및/또는 이진(binary)일 수 있다. 그 안에 삽입된 오류 검사 매개변수 및 목표 시스템 커널로부터 추출된 커널 버전 ID를 지니는, 수정되고 컴파일된 커널 모듈은 목표 시스템의 커널로 로드가능하다.
목표 시스템 커널로부터 추출된 버전 ID는 버전 숫자이거나 다른 버전 ID(하나 이상의 기호)일 수 있다.
목표 시스템 커널로부터 추출된 오류 검사 기준은 하나 이상의 체크섬일 수 있다. 오류 검사 기준이 체크섬일 때, 컴파일된 커널 모듈에 삽입된 오류 검사 매개변수는 오류 검사 기준과 동일하거나 이에 상보적일 수 있고, 또는 그것으로부터 도출될 수 있다. 체크섬 방법론은 종래 기술에 잘 알려져 있다. 명확하게 하기 위해, 본 발명은 이러한 방법론의 상세한 설명은 제공하지 않는다. 어떤 경우라도, 목표 시스템 커널로부터 추출된 오류 검사 기준에 기초하여 획득된 오류 검사 매개변수를 지닌 수정된 커널 모듈은, 커널의 오류 검사 기준을 충족시켜야만 한다.
Linux 커널에 대한 예시적인 실시예가 이하에 설명된다. 그러나, 본 발명의 내용이 다른 형태의 운영 체제 커널에도 적용될 수 있다는 것을 이해할 것이다.
커널 모듈 수정 장치는 임의의 커널 버전의 컴파일된 Linux 커널 모듈을 수정하고, 목표 시스템의 다른 커널 버전으로의 로딩을 위해 적응된 수정된 커널 모듈을 생성하는 소프트웨어 유틸리티일 수 있다. 수정은 커널 모듈의 기호표 헤더에 있는 기호표에 대한 변경 및 커널 모듈의 모듈 정보 섹션에 있는 버전 ID에 대한 변경을 포함한다.
Linux 커널 모듈은 실행가능하고 링크가능한 포맷(Executable and Likable Format, ELF)라 불리우는 포맷으로 컴파일될 수 있다. ELF 포맷은 모듈/실행할 수 있는 것에 대한 적절한 실행 및 링키지 정보를 설명하는 많은 섹션 및 헤더를 지닌다. 섹션에는 기호표 및 모듈 정보 섹션을 포함한다.
컴파일된 커널 모듈의 기호표는 커널 모듈에서 사용되는 ID(즉, 기호, 예를 들어, 이름, 라벨 등), 모듈내의 ID 위치 및 ID 속성의 리스트이다. Linux 커널 모듈의 기호표에는, 각 기호 이름의 끝에 체크섬이 덧붙여진다. 체크섬 값은 모듈이 목표 커널에 삽입될 때, 커널 모듈이 동일한 기호 프로토타입, 프로세서 opcode 등을 사용하는지를 검증하는 데 사용될 수 있다. 이들 값이 다를 경우, 커널은 미해결된 기호가 있다고 판단하여 커널 모듈 로딩 처리를 중단한다. 이 문제를 해결하기 위해, 체크섬을 커널 모듈의 기호로부터 제거하고, 목표 커널에 저장된 체크섬으로 대체할 수 있다. 체크섬을 대체함으로써 모듈은 미해결된 기호 오류를 하나도 발생시키지 않고 로드될 수 있다.
목표 시스템의 Linux 커널에 대해 이와는 다른 또 하나의 Linux 커널 버전에 대응하는 컴파일된 Linux 커널 모듈을 적응시키는 방법이 도 3 및 도 4에 관련하여 이하에 설명되어 있다.
ELF 포맷 커널 모듈의 섹션 헤더는 유틸리티에 의해 판독되고 구문분석된다(단계 S31). 유틸리티는 섹션 헤더 정보에 기초하여 커널 모듈 기호표의 오프셋을찾고, 그 오프셋은 커널 모듈 기호표를 찾는 데 사용된다(단계 S32). 그리고 나서 유틸리티에 의해 기호표는 판독되고 구문분석된다(단계 S33). 기호표가 모듈 내에 저장되어 있는 곳에 대한 오프셋은, 소위 "문자열 표(string table)"라고 불리며, 기호표 정보로부터 결정된다(단계 S34). 그리고 나서 기호 이름은 문자열 표로부터 한 번에 하나씩 판독되며 분석된다(단계 S35).
문자열 표내 기호 이름의 분석은 이하의 방식으로 수행될 수 있다(도 4). 문자열 표에서 기호 이름을 선택한다(단계 S351). 선택된 기호 이름은 체크섬이 첨부되었는지 여부를 판단하기 위해 검사된다(단계 S352). 체크섬이 발견되지 않을 경우(단계 S352), 기호 이름은 스킵(skip)되고 다음 기호 이름이 선택된다. 기호 이름이 첨부된 체크섬을 포함할 경우(단계 S352), 체크섬은 떼어지고(단계 S353), 나머지 이름은 목표 시스템 커널에 있는 기호와 비교된다(단계 S354). 매치가 발견될 경우(단계 S354), 목표 시스템 커널의 매치된 기호에 덧붙여진 체크섬은 추출되고 커널 모듈의 문자열 표 내의 선택된 기호 이름에 덧붙여진다(단계 S355). 매치가 발견되지 않을 경우(단계 S354), 오류 메세지가 생성되고, 미해결된 기호가 있다는 것을 나타내고(단계 S356), 기호 이름 분석 프로시져는 진행되지 않는다. 그렇지 않을 경우, 프로세스는 모든 기호 이름이 점검되고 수정될 때까지(단계 S357) 계속된다. 문자열 표에 대한 수정이 발생할 경우(단계 S358), 문자열 표의 크기가 변경된다. 그러므로, ELF 포맷 헤더의 오프셋은 문자열 표 크기의 변경을 반영할 수 있도록 조정될 필요가 있다(단계 S359).
이하는 이러한 프로세스를 기술하는 의사 코드(pseudo-code)이다:
다음, 모듈 정보 섹션이 수정된다. 모듈 정보 섹션은 컴파일되었던 커널 모듈에 대한 커널 버전을 식별하는 정보를 보유한다. 버전 ID가 모듈 정보에 내장되어 있고, 이것은 목표 시스템 커널의 커널 버전 ID로 대체된다. 버전 ID의 수정으로 인해 커널 모듈은 커널 버전 불일치 오류 메세지없이 목표 시스템의 커널로 로드될 수 있다.
ELF 포맷 구문분석(단계 S31)은, 상술되었듯이, 또한 모듈의 모듈 정보 섹션에 대한 오프셋을 산출한다(단계 S32). 모듈 정보 섹션은 판독되고 구문분석되어(단계 S36) 모듈 정보 섹션과 관련된 문자열 표(기호 이름 문자열 표와는 다름)에 대한 오프셋을 찾는다(단계 S37). 모듈 정보 문자열 표는 판독되고 구문분석된다(단계 S38). 이후 문자열 표는 버전 ID를 위해 검색된다. 예를 들어, 컴파일된 Linux 커널 모듈에서는, 문자열 "kernel_version="의 다음에 버전 ID가 온다(단계 S39). 이 문자열이 발견될 때, Linux 커널 모듈이 컴파일되었던 커널 버전의 버전ID는 "=" 부호의 다음에 온다. 다음, 버전 ID는 예를 들어 목표 시스템의 "uname" 시스템 호출로부터 얻어질 수 있는, 목표 시스템의 커널 버전 ID로 대체된다(단계 S40). 버전 ID 수정은 문자열 표 크기를 변경할 수 있다(단계 S41). 그러므로, 문자열 표 크기는 다시 계산되고, ELF 헤더 오프셋은 문자열 표 크기 변경을 반영하도록 수정될 필요가 있다(단계 S42).
수정된 커널 버전 문자열은 새 커널 모듈로서 기입된다(단계 S43). 수정된 커널 모듈은 목표 시스템의 커널로 로드가능하다.
이하는 예시적인 소프트웨어 유틸리티의 소스 코드이다.
위의 특정 실시예는 도시적인 것이고, 첨부된 청구범위의 범위 또는 본 발명의 정신으로부터 벗어나지 않고 이들 실시예에 많은 변형을 적용할 수 있다. 다른 도시적인 실시예의 구성요소 및/또는 특징들은 서로 결합될 수 있고/있거나 본 발명 및 첨부된 청구사항의 범위 내에서 서로 대체될 수 있다.
예를 들어, 상술된 실시예에서 버전 ID 수정이 기호 표 수정에 이어 발생하지만, 모듈 정보 수정이 오류 검사 조정에 선행될 수도 있다. 또 다른 실례로서, 소프트웨어 유틸리티가 목표 시스템에서 수행될 수 있지만, 목표 시스템의 커널 버전 ID가 알려지고 목표 시스템의 커널 오류 검사 기준이 또한 사용가능할 경우, 커널 모듈 수정 장치는 적응되어 목표 시스템 외의 (적어도 프로세서 및 프로그램 스토리지 장치를 지니는)시스템에서 수행될 수 있다.
2002년 4월 17일자로 출원된 미국 가출원 제 60/373,120호를 읽은 당업자들에게 추가의 변형이 명백하고, 그 전체 내용이 본 명세서에 참조 문헌으로 포함되는 것으로 한다.
목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시킬 수 있고, 수정되고 컴파일된 커널 모듈은 목표 시스템의 커널내로 로드가능하므로, 시간이 많이 걸리고 불필요한 스토리지 소비를 초래하는 컴파일을 피할 수 있다.

Claims (21)

  1. 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 커널 모듈 수정 장치에 있어서,
    상기 목표 시스템의 커널로부터 오류 검사 기준 및 커널 버전 ID를 추출하도록 적응된 커널 분석기(kernel analyzer); 및
    상기 목표 시스템의 커널로부터 상기 커널 분석기가 추출한 상기 오류 검사 기준에 대응하는 오류 검사 매개변수를 상기 컴파일된 커널 모듈에 삽입하고, 상기 컴파일된 커널 모듈의 버전 ID를 상기 목표 시스템의 커널로부터 상기 커널 분석기가 추출한 상기 커널 버전 ID로 대체하도록 적응된 모듈 적응 컴포넌트(module adaptation component)
    를 포함하는 장치.
  2. 제1항에 있어서, 상기 오류 검사 매개 변수가 삽입되는 상기 컴파일된 커널 모듈은 이진(binary)인 장치.
  3. 제1항에 있어서, 내부에 상기 오류 검사 매개변수가 삽입되고 상기 목표 시스템의 커널로부터 추출된 상기 커널 버전 ID를 포함하는, 상기 수정되고 컴파일된 커널 모듈은 상기 목표 시스템의 커널내로 로드가능한 장치.
  4. 제1항에 있어서, 상기 오류 검사 기준은 상기 목표 시스템의 커널로부터 상기 커널 분석기가 추출한 하나 이상의 체크섬을 포함하는 장치.
  5. 제1항에 있어서, 상기 커널 분석기는 상기 컴파일된 커널 모듈에서 기호표를 로케이팅하고, 상기 기호표의 각 기호 이름에 대해, 상기 기호 이름의 분석을 수행하는 장치.
  6. 제5항에 있어서, 상기 커널 분석기에 의해 수행되는 상기 기호 이름 분석은 상기 기호 이름과 상기 목표 시스템 상의 커널의 기호를 비교하는 것을 포함하는 장치.
  7. 제6항에 있어서, 상기 기호 이름이 상기 목표 시스템 상의 커널의 기호에 매치될 경우, 상기 커널 분석기는 상기 매치된 기호와 관련된 체크섬을 추출하고, 상기 모듈 적응 컴포넌트는 상기 추출된 체크섬을 상기 컴파일된 커널 모듈의 기호표의 기호 이름에 덧붙이는 장치.
  8. 제5항에 있어서, 상기 모듈 적응 컴포넌트는 상기 기호 이름을 분석한 후, 상기 기호표의 하나 이상의 오프셋을 조정하는 장치.
  9. 제1항에 있어서, 상기 컴파일된 커널 모듈은 로드가능한 Linux 커널 모듈인장치.
  10. 목표 시스템의 커널에 대해 이와는 다른 또 하나의 커널 버전에 대응하는 컴파일된 커널 모듈을 적응시키기 위한 방법에 있어서,
    상기 목표 시스템의 커널로부터 오류 검사 기준 및 커널 버전 ID를 추출하는 단계;
    상기 목표 시스템의 커널로부터 추출된 상기 오류 검사 기준에 대응하는 오류 검사 매개변수를 상기 컴파일된 커널 모듈에 삽입하는 단계; 및
    상기 컴파일된 커널 모듈의 버전 ID를 상기 목표 시스템 커널로부터 추출된 상기 커널 버전 ID로 대체하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 상기 오류 검사 매개변수가 삽입되는 상기 컴파일된 커널 모듈은 이진인 방법.
  12. 제10항에 있어서, 내부에 상기 오류 검사 매개변수가 삽입되고 상기 목표 시스템의 커널로부터 추출된 상기 커널 버전 ID를 포함하는, 상기 수정되고 컴파일된 커널 모듈은 상기 목표 시스템의 커널내로 로드가능한 방법.
  13. 제10항에 있어서, 상기 추출된 오류 검사 기준은 상기 목표 시스템의 커널로부터 추출된 하나 이상의 체크섬을 포함하는 방법.
  14. 제10항에 있어서, 상기 컴파일된 커널 모듈내의 기호표를 로케이팅하는 단계, 및 상기 기호표의 각 기호 이름에 대해, 상기 기호 이름의 분석을 수행하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서, 상기 기호 이름 분석은 상기 기호 이름과 상기 목표 시스템 상의 커널의 기호를 비교하는 단계를 포함하는 방법.
  16. 제15항에 있어서, 상기 기호 이름이 상기 목표 시스템 상의 커널의 기호에 매치될 경우, 상기 매치된 기호와 관련된 체크섬이 추출되어, 상기 컴파일된 커널 모듈의 기호표의 상기 기호 이름에 덧붙여지는 방법.
  17. 제14항에 있어서, 상기 기호 이름을 분석한 후, 상기 기호표의 오프셋이 조정되는 방법.
  18. 제10항에 있어서, 상기 컴파일된 커널 모듈은 로드가능한 Linux 커널 모듈인 방법.
  19. 시스템으로서,
    프로세서; 및
    상기 시스템에 의해 판독가능하고, 제10항의 방법을 수행하는 기계에 의해 실행가능한 명령어 프로그램을 유형으로 포함하는 프로그램 스토리지 장치
    를 포함하는 시스템.
  20. 기계에 의해 판독가능하고, 제10항의 방법을 수행하는 기계에 의하여 실행가능한 명령어 프로그램을 유형으로 포함하는 프로그램 스토리지 장치.
  21. 제10항의 방법을 수행하는 컴퓨터에 의해 실행가능한 명령어를 포함한 전송 매체에 포함되는 컴퓨터 데이터 신호.
KR10-2004-7016390A 2002-04-17 2003-04-17 다수의 커널 버전에서 수행하기 위해 커널 모듈을수정하는 장치 및 방법 KR20040099439A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US37312002P 2002-04-17 2002-04-17
US60/373,120 2002-04-17
PCT/US2003/012202 WO2003090077A1 (en) 2002-04-17 2003-04-17 Apparatus and method for modifying a kernel module to run on multiple kernel versions

Publications (1)

Publication Number Publication Date
KR20040099439A true KR20040099439A (ko) 2004-11-26

Family

ID=29250968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7016390A KR20040099439A (ko) 2002-04-17 2003-04-17 다수의 커널 버전에서 수행하기 위해 커널 모듈을수정하는 장치 및 방법

Country Status (11)

Country Link
US (1) US7076770B2 (ko)
EP (1) EP1495402B1 (ko)
JP (1) JP2005523516A (ko)
KR (1) KR20040099439A (ko)
CN (1) CN1650264A (ko)
AU (1) AU2003222657A1 (ko)
BR (1) BR0309323A (ko)
CA (1) CA2480441A1 (ko)
DE (1) DE60317654T2 (ko)
IL (1) IL164607A0 (ko)
WO (1) WO2003090077A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101042979B1 (ko) * 2009-10-23 2011-06-21 한국항공대학교산학협력단 임베디드 시스템의 신뢰성 평가를 위한 시뮬레이션 커널을 이용하는 오류주입시험 장치
KR20190039279A (ko) * 2017-02-22 2019-04-10 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 커널 모듈 로딩 방법 및 장치

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7568188B2 (en) * 2003-03-07 2009-07-28 Microsoft Corporation Method for testing a software shim
US7634770B2 (en) * 2003-05-19 2009-12-15 Hewlett-Packard Development Company, L.P. Kernel module interface dependencies
US7954086B2 (en) * 2003-05-19 2011-05-31 Hewlett-Packard Development Company, L.P. Self-describing kernel modules
US20060015860A1 (en) * 2004-07-15 2006-01-19 Sony Corporation And Sony Electronics, Inc. System and method for storing attributes in a file for processing an operating system
US8042188B2 (en) * 2005-07-15 2011-10-18 Sony Corporation Information processing apparatus, information recording medium manufacturing apparatus, information recording medium, method and computer program
US7581141B2 (en) * 2006-03-01 2009-08-25 Sun Microsystems, Inc. Kernel module compatibility validation
US20090271780A1 (en) * 2008-04-24 2009-10-29 Moschip Semiconductor Technology Limited Automatic complete firmware upgrade
US8689206B2 (en) * 2009-03-05 2014-04-01 International Business Machines Corporation Isolating operating system in-memory modules using error injection
US8914815B2 (en) * 2013-05-18 2014-12-16 Red Hat, Inc. Automated framework for tracking and maintaining kernel symbol list types
CN103312706B (zh) * 2013-06-04 2017-05-10 百度在线网络技术(北京)有限公司 网络访问控制的方法和装置
CN104679532B (zh) * 2013-11-27 2018-12-11 腾讯科技(深圳)有限公司 内核模块加载方法和装置
CN104021023A (zh) * 2014-06-24 2014-09-03 浪潮电子信息产业股份有限公司 一种突破内核模块版本控制解决方法
CN104375874B (zh) * 2014-12-11 2017-05-17 北京奇虎科技有限公司 加载Linux内核驱动的方法及装置
CN104572235B (zh) * 2014-12-31 2019-02-26 北京奇虎科技有限公司 一种可加载内核模块的编译方法和装置
CN105549965A (zh) * 2015-12-09 2016-05-04 浪潮电子信息产业股份有限公司 一种将驱动集成到不同Linux内核版本的方法
CN105893085A (zh) * 2016-03-30 2016-08-24 百度在线网络技术(北京)有限公司 内核模块加载方法和装置
CN108052327A (zh) * 2017-12-11 2018-05-18 北京奇虎科技有限公司 一种内核模块编译、加载方法及装置
CN109992293B (zh) * 2018-01-02 2023-06-20 深圳市宇通联发科技有限公司 Android系统组件版本信息的组装方法及装置
CN111382063B (zh) * 2018-12-30 2023-09-08 贝壳技术有限公司 一种react兼容的校验方法及装置
CN111752620A (zh) * 2019-03-26 2020-10-09 阿里巴巴集团控股有限公司 内核模块的处理方法和加载方法
CN111767072B (zh) * 2019-04-02 2023-03-14 浙江宇视科技有限公司 客户端制作方法及装置
US20220147636A1 (en) * 2020-11-12 2022-05-12 Crowdstrike, Inc. Zero-touch security sensor updates
CN113220303A (zh) * 2021-04-21 2021-08-06 北京麟卓信息科技有限公司 一种内核模块的编译方法和系统
CN116243971B (zh) * 2023-05-10 2023-07-28 北京麟卓信息科技有限公司 一种基于静态依赖自举的内核无关的模块构建方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359730A (en) * 1992-12-04 1994-10-25 International Business Machines Corporation Method of operating a data processing system having a dynamic software update facility
US6199203B1 (en) * 1998-07-21 2001-03-06 Hewlett-Packard Company Memory management techniques for on-line replaceable software
US6219828B1 (en) * 1998-09-30 2001-04-17 International Business Machines Corporation Method for using two copies of open firmware for self debug capability
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US7287259B2 (en) * 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101042979B1 (ko) * 2009-10-23 2011-06-21 한국항공대학교산학협력단 임베디드 시스템의 신뢰성 평가를 위한 시뮬레이션 커널을 이용하는 오류주입시험 장치
KR20190039279A (ko) * 2017-02-22 2019-04-10 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 커널 모듈 로딩 방법 및 장치
US11237844B2 (en) 2017-02-22 2022-02-01 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus for loading kernel module

Also Published As

Publication number Publication date
US7076770B2 (en) 2006-07-11
EP1495402A1 (en) 2005-01-12
JP2005523516A (ja) 2005-08-04
AU2003222657A1 (en) 2003-11-03
EP1495402B1 (en) 2007-11-21
DE60317654T2 (de) 2008-10-30
US20040221275A1 (en) 2004-11-04
DE60317654D1 (de) 2008-01-03
CA2480441A1 (en) 2003-10-30
BR0309323A (pt) 2007-02-21
CN1650264A (zh) 2005-08-03
WO2003090077A1 (en) 2003-10-30
IL164607A0 (en) 2005-12-18

Similar Documents

Publication Publication Date Title
KR20040099439A (ko) 다수의 커널 버전에서 수행하기 위해 커널 모듈을수정하는 장치 및 방법
US12008386B2 (en) Conservative class preloading for real time java execution
US7055146B1 (en) Method and system for dynamically inserting modifications for identified programs
US6594822B1 (en) Method and apparatus for creating a software patch by comparing object files
US7552433B2 (en) Non-platform-specific unique indentifier generation
US6158001A (en) Automatic configuration generation
US6738967B1 (en) Compiling for multiple virtual machines targeting different processor architectures
US6131187A (en) Method and system for translating exception handling semantics of a bytecode class file
US8312446B2 (en) Dependency management when upgrading application components
US20070271617A1 (en) Vulnerability check program, vulnerability check apparatus, and vulnerability check method
US20020169591A1 (en) Module for developing wireless device applications using an integrated emulator
US20040268331A1 (en) General purpose intermediate representation of software for software development tools
US7900198B2 (en) Method and system for parameter profile compiling
US7568196B2 (en) Initializing virtual machine that subsequently executes application
US20070288897A1 (en) Multiplatform API usage tool
US20080209395A1 (en) Automatic code replacement
US20070011686A1 (en) Changing code execution path using kernel mode redirection
US7730451B2 (en) Source server
US5838911A (en) Method and apparatus for obtaining network information by using a dynamic link library
US20020138821A1 (en) Method and apparatus for seamless porting of object code between operating system environments
US7428729B2 (en) Methods, systems, and computer program products for integrating legacy applications into a platform-independent environment
US7730468B1 (en) System and method providing on-demand generation of specialized executables
US7487227B2 (en) Scripting engine having a sequencer table and a plurality of secondary tables for network communication software
CN116032809B (zh) 使用Wasm的网络协议分析方法及系统
CN113110842A (zh) 软件字节码同源性分析方法、装置和设备

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid