Skip to content

GRAPE-SEC/grape_osdev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f658b06 · Feb 24, 2025

History

37 Commits
Jan 30, 2025
Feb 14, 2025
Jan 30, 2025
Feb 24, 2025
Jan 22, 2025

Repository files navigation

2024~2025 Winter OSdev Project

OS 커널 개발을 시작할 수 있도록 도움을 주는 프로젝트입니다.

1. 진행 방식

2. Reference

3. Environment Setup

  • Mint64 OS 개발 환경 구축을 위한 가이드라인입니다.
  • 저자가 제공한 개발 환경 구축 최신 가이드라인은 여기를 클릭하세요.
  • 아래의 가이드라인을 따라하면서, 위의 공식 가이드라인과 비교해 정상적으로 환경이 구축되는지 확인하세요.
  • IDE는 원하는 도구를 사용하면 됩니다.

3.1. QEMU 다운로드

  • 0.10.4 버전의 QEMU를 다운로드합니다.

3.2. Cygwin 설치 & 실행

  • Cygwin 설치
  • Cygwin 실행
    # cmd를 열고, setup_x86.exe가 위치한 디렉토리로 이동한 후 아래 명령을 실행하세요.
    cmd> .\setup-x86.exe --allow-unsupported-windows option --site http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/circa/2022/11/23/063457

3.3. Cygwin에서 패키지 설치

  • Devel
    Packages Version
    binutils 2.37-2 with Src
    gcc-core 7.4.0-1 with Src
    bison 3.7.6-1
    flex 2.6.4-1
    cygwin64-libiconv 1.14-4
    libtool 2.4.6-7
    make 4.2.1-1
    patchutils 0.3.3-1
    cygport 0.35.2-1
    nasm 2.08.02-1
  • Interpreters
    Packages Version
    python2 2.7.18-4
  • Libs
    Packages Version
    libgmp-devel 6.2.0-2
    libmpfr-devel 4.1.0-1
    libmpc-devel 1.2.0-1

3.4. Cygwin 환경변수 추가

  • 시스템 변수: PATH
    • C:\cygwin\bin;C:\cygwin\usr\cross\bin;

3.5. binutils 크로스 컴파일

아래의 과정은 Cygwin Terminal에서 진행됩니다.

  • binutils 소스코드 압축 해제
    $ cd /usr/src/binutils-2.37-2.src/
    $ cygport binutils-2.37-2.cygport prep
  • 빌드 환경 설정
    $ cd binutils-2.37-2.i686/src/binutils-2.37
    $ export TARGET=x86_64-pc-linux
    $ export PREFIX=/usr/cross
    $ ./configure --target=$TARGET --prefix=$PREFIX --enable-64-bit-bfd --disable-shared --disable-nls --disable-unit-tests
    $ make configure-host
  • 공유 라이브러리 이름 변경
    $ cp /lib/libmpfr.dll.a /lib/libmpfr.a
    $ cp /lib/libgmp.dll.a /lib/libgmp.a
  • 빌드 및 설치
    # job 수는 빌드 환경을 고려햐여 적절히 설정해주세요.
    $ make LDFLAGS="-static" -j4
    $ make install
  • 빌드 성공 확인
    $ /usr/cross/bin/x86_64-pc-linux-ld --help | grep "supported"

3.6. GCC 크로스 컴파일

  • GCC 소스코드 압축 해제
    $ cd /usr/src/gcc-7.4.0-1.src
    $ cygport gcc.cygport prep
  • 빌드 환경 설정
    $ cd gcc-7.4.0-1.i686/src/gcc-7.4.0/
    $ export TARGET=x86_64-pc-linux
    $ export PREFIX=/usr/cross
    $ export PATH=$PREFIX/bin:$PATH
    $ ./configure --target=$TARGET --prefix=$PREFIX --disable-nls --enable-languages=c --without-headers --disable-shared --enable-multilib
    $ make configure-host -j8
  • 공유 라이브러리 이름 변경
    $ cp /lib/gcc/i686-pc-cygwin/7.4.0/libgcc_s.dll.a /lib/gcc/i686-pc-cygwin/7.4.0/libgcc_s.a
    $ cp /lib/libmpc.dll.a /lib/libmpc.a
  • 빌드 및 설치
    # job 수는 빌드 환경을 고려햐여 적절히 설정해주세요.
    $ make all-gcc -j4
    $ make install-gcc
  • 빌드 성공 확인
    $ /usr/cross/bin/x86_64-pc-linux-gcc -dumpspecs | grep -A1 multilib_options