과제 1은 우분투 설치하는것


# 오류 : su: Authentication failure

su passwd root로 root 비밀번호 설정해주면 된다

이 과제는 root 상태에서 수행하는게 좋다. (터미널에 # 붙은 상태)


# 오류 : ~~ is not in the sudoers file.

해결법 : https://www.youtube.com/watch?v=rlzfyZMl9gE

apt-get update

apt-get install sudo -y

root 에서 adduser [사용자이름] sudo

재부팅하면 sudo su로 로그인시 정상적으로 로그인 되는것 확인.

sudoers 파일 권한설정이 필요하다면 해야 하는걸로 보인다


버추얼박스는 처음 설치할때 설정한 비밀번호 그대로 




https://devocean.sk.com/blog/techBoardDetail.do?ID=163626

참고

도구 설치중 문제있을시 sudo apt update && sudo apt upgrade


1. 커널 원천 코드 분석에 필요한 도구 설치

(학교 수업자료 내용)
sudo apt-get install linux-source vim libncurses5 libncurses5-dev universal-ctags build-
essential cscope flex bison dwarves

(다른 블로그 내용)
$ sudo apt-get install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev

오류 : 다른 블로그에서 설치하라고 하는 kernel-package 관련 오류 - kernel-package has no installation candidate 오류 발생시 해결법
ubuntu 22.04 말고 20.04로 해보라고 한다... 22.04로는 확실히 안되는것 같다(make 이후 오류) 인터넷에 자료도 없고. 설치가 안되면 kpkg~~ 하는 커널컴파일이 안된다.


2. 원천코드의 압축 풀고 폴더에 넣기



(학교자료)
cd /usr/src/linux-source-5.15.0 && sudo tar xvf linux-source-5.15.0.tar.bz2 && cd linux-source-5.15.0

(다른 블로그 내용)
https://kernel.org/ 여기서 커널소스 받아서 sudo tar xvf로 압축 풀어주기




3. 다음의 Bash shell 명령을 차례대로 터미널에 입력하여, 커널을 컴파일 합니다.

3-1. Configuration을 설정하여, Makefile을 생성 합니다.


sudo cp /boot/config-6.5.0-21-generic ./.config && sodo make menuconfig
현재 시스템에서 사용중인 리눅스커널의 구성파일을 복사하여 현재 디렉토리에 .config파일로 저장, make menuconfig 하기

오류 : Your display is too small to run Menuconfig!
menuconfig를 실행하기 위해서는 최소 19줄, 80글자 이상의 터미널 창이 되야 한다. 터미널 윈도우를 전체화면으로 키우고 실행하면 된다.
어이가 없는 오류인데 리눅스 20.04 버전에서 발생함. 기본 창 크기가 이상하다


이 창에서 load>ok, save>ok, exit
앞 명령어에서 복사한 .config 파일을 load하면 된다. 없다면 확인, 버전이 달라서 config-6.5.0-26-generic 으로 했다.

sudo scripts/config --disable SYSTEM_TRUSTED_KEYS

sudo scripts/config --disable SYSTEM_REVOCATION_KEYS

sudo scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""

scripts/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""

<gpt 설명>
  이 명령어들은 리눅스 커널의 구성을 변경하는 데 사용되는 것으로 보입니다. 각 명령어가 하는 일에 대해 간단히 설명하겠습니다:

sudo scripts/config --disable SYSTEM_TRUSTED_KEYS: 이 명령어는 커널의 구성 옵션 중에서 SYSTEM_TRUSTED_KEYS라는 옵션을 비활성화(disable)합니다. 이 옵션은 시스템에서 신뢰하는 공개 키(public key)를 관리하는 데 사용됩니다. 일반적으로 시스템 부팅시나 커널 모듈 로딩시에 디지털 서명을 확인하기 위해 사용됩니다.

sudo scripts/config --disable SYSTEM_REVOCATION_KEYS: 이 명령어는 SYSTEM_REVOCATION_KEYS라는 옵션을 비활성화합니다. 이 옵션은 시스템에서 취소된(revoked) 공개 키를 관리하는 데 사용됩니다. 디지털 서명이 무효화되었거나 취소된 경우 이 옵션을 사용하여 해당 키를 시스템에서 제거할 수 있습니다.

sudo scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS "": 이 명령어는 CONFIG_SYSTEM_TRUSTED_KEYS라는 문자열 형식의 구성 옵션의 값을 빈 문자열("")로 설정합니다. 이 옵션은 시스템에서 신뢰하는 공개 키를 지정하는 데 사용됩니다. 따라서 이 명령은 시스템에서 신뢰하는 키 목록을 비워둡니다.

scripts/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS "": 마지막으로 이 명령어는 CONFIG_SYSTEM_REVOCATION_KEYS 옵션의 값을 빈 문자열("")로 설정합니다. 이것은 시스템에서 취소된 공개 키 목록을 비워두는 것입니다.

이러한 명령어는 주로 보안 관련 설정을 변경하거나 커널의 동작을 수정하는 데 사용됩니다. 당신이 시스템 관리자이거나 커널 개발자라면 이러한 명령어를 사용하여 원하는 구성을 설정할 수 있습니다.



3-2. Makefile의 변수 EXTRAVERSION의 내용을 수정합니다(확인용).


그냥 폴더 열고 텍스트로 가면 권한이 없어서 수정이 불가능하다
sudo vim Makefile로 들어가서 i로 입력, :wq 저장하고 나오기  


3-3. 커널을 컴파일 합니다. (학교 자료)

sudo make -j 8 && sudo make install && reboot
8은 cpu갯수이다. 나는 4로 했다


잘 안된 상태(리눅스 22.04 버전으로 하다가 실패)
컴퓨터의 사양과 이차 저장장치의 성능에 따라, 30분에서 12시간이 소요됩니다.

# reboot 명령을 터미널에 입력하여, 컴퓨터를 재부팅합니다.



3-3. 커널을 컴파일 합니다. (다른 블로그 내용)

# 커널 컴파일 하기
sudo make-kpkg -j 4 --initrd --revision=1.0 kernel_image
추후 같은 버전의 커널을 여러번 빌드하게 될 경우 1.0을 2.0으로 바꾸는 식으로 숫자를 올려주면 된다.
이 명령어를 사용할때 컴파일 과정에서 install까지 진행하는걸 볼


# 커널 설치
커널컴파일 완료시 커널 소스 디렉토리 이전 디렉토리에 커널 설치 이미지 파일이 생성된것을 확인할수 있다. (~~.deb 빨간 글씨, 과정대로 진행했다면 /usr/src에 있다)

sudo dpkg -i 커널 이미지 파일명
커널컴파일시 어떤 명령어를 사용했느냐에 따라 커널 설치시 사용하는 명령어도 다르다.


4. 부트 옵션에 advanced를 선택하고, 자신이 컴파일한 커널을 선택하여 부트를 합니다.

설치후 재부팅을 해주면 바뀐 커널로 부팅이 되는데

GRUB 설정을 해야 한다. 우분투만 설치되어있다면 부팅시 GRUB 메뉴가 보이지 않음.

sudo vim /etc/default/grub

사진의 노란 글씨 부분 수정하고 Terminal 내용은 #을 지워서 주석 해제한다

:wq로 저장후

sudo update-grub

reboot

재부팅후 Advanced options for Ubuntu 에서 내가 다운받은 커널 버전으로 들어가기



(아래는 과제 수행내용)

# 다운로드 받은 원천 코드를 포함한 디렉토리의 부모 디렉토리에 만들어진 커널 패키지를 "ls -l" 명령을 사용하여 출력하고, 화면을 캡쳐합니다.
(.deb 파일은 프로그램 설치 패키지다. 이 사진말고 linux 커널 패키지 안에서 ls사진으로 다시 제출함)


# 커널을 설치한 후에 "cd /boot && ls -l | more' 을 실행하여 설치된 커널 이미지를 확인하고, 화면을 캡쳐합니다.



# "dmesg | more"을 터미널에 입력해서, 부트한 커널 이미지의 파일 이름에 학번이 들어있음을 확인하고, 캡쳐해서, 3개의 파일들을 제출합니다.


파일명 뒤에 수정내용이 붙은걸 확인할수 있다
중간에 2시간씩 걸리는 과정이 있어서 실수하면 몇시간씩 잡아먹는다... gpt에게 물어봐도 잘 알려주지 않는다 블로그 찾아보는게 빠르다. 검색하면 윗학번 블로그도 나온다 ㅡㅡ


<참고>
https://my.yirum.net/universal-ctags-%EC%99%80-tagbar-%EC%84%A4%EC%B9%98/
https://hjrrkd.tistory.com/entry/LinuxUbuntu-%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%98%B8%EC%B6%9C