https://github.com/google/ghost-kernel

위 커널 리포지터리로 커널을 받고 컴파일하여 부팅하면 ghost-api 쪽에서 아래와 같은 오류가 발생함

1 트러블 슈팅

1.1 ghOSt 커널 설치

  1. ghost 커널로 부팅하는 법 - grub로 관리하여 컴파일 한 커널로 부팅을 해야 함
  2. 커널 패닉 버그 - ghost 커널로 부팅 시 커널 패닉이 나는 경우가 있음. 이경우 부팅옵션에 noapic 추가해줘야함

1.2 ghOSt user-space api 컴파일

  1. python2 버그 : bazel 최신버젼으로 소스코드를 다운받으면 안됨. 같은 이유로 바젤리스크도 사용 불가

    bazel 5.x 버젼으로 진행해야 코드를 받을 수 있음. 이유는 코드 중 python2로 되어있는 코드가 있는데 bazel 최신버젼에선 python2 설치를 제한함.

    그러므로 bazel 5.2.0로 진행하였음

  2. libbpf 라이브러리의 bpf 헤더파일의 enum 참조 버그 - 미해결

  3. SELinux 보안 버그 - 비활성화로 해결

  4. 디스크 용량 버그 → 디스크 용량 늘리고 파티션 나눠서 해결 → 해결 못함 그냥 60GB 가상 머신 만들어서 진행함

  5. user-api 컴파일 명령어가 bazel build -c opt … 인데, -c opt가 readme에서 제시하는 최적화 옵션 명령어임. 근데 이 명령어를 쓰면 최적화 과정에서 오류가 계속 발생함. 그래서 bazel build … 로 빌드 방법을 바꾸었음.

  6. mount 에러 : 스케줄링 실행하면 mountFS에서 버그가나 errno =2 를 반환하여 실행이 안됨. 이 경우 CONFIG_SCHED_CLASS_GHOST=y를 .config에 추가해줘서 커널 컴파일을 해야함.

  7. initramfs 싱크 버그 → 명령어로 initramfs 재 설정

sudo update-initramfs -u -k all

  1. ghost user-space api 실행 중 ghostfs 마운트 에러

bpf 헤더파일 오류