첫주부터 뜬 과제...
새로 커널 설치하고 + 릴리즈 이름 바꿔서 uname -r 했을 때 설정한 이름 붙여서 출력하기였다.
그리고 결론은
어제 오늘해서 총 14시간 걸림(...)
1번째 2번째 실패하고 3트만에 성공해서 그렇다.... 3번째 시간만 따져보면 컴파일 5시간 걸린듯
진짜 오래도 걸린다,,,
.
.
.
아무튼 그래서 했던 방법은
이 두 분 블로그를 메인으로 두고 따라했다(진짜 절하는중)
https://jyeonnyang2.tistory.com/m/69
[Linux] Linux Kernel Compile 리눅스 커널 컴파일 하는법
현재 커널 버전 확인 uname -r 커널 소스 가져오기 현재 기준 5.13.12이 가장 최신 버전이다. wget은 웹으로부터 파일이나 디렉토리를 다운로드할 수 있는 명령어이다. 혹은, 직접 홈페이지에서 소스
jyeonnyang2.tistory.com
https://sean.tistory.com/m/332
[Linux Note] 리눅스 배포판(Ubuntu)에서 최신 Linux 커널 6.0 빌드 및 설치하기
현재 가상머신에 올려진 우분투의 커널 버전은 위와 같이 5.15.0-48-generic 이다. 최근에 Rust 언어를 지원하는 커널 6.0이 나왔는데, 최신 버전의 커널을 빌드한 후 설치하여 우분투의 커널을 업그레
sean.tistory.com
그럼 과정 정리 시작!!
(나중에 또 터져서 재설치시 그대로 해야되니까 ㅇㄴ)
0. 우분투 설정
시작하기 전....
앞선 두번의 시도에서 계속 실패하고 우분투 리제로 시켰기 때문에 미리 설정 잡고가야됨
내 노트북 기준으로.... 성공한 기준으로 쓰는거라 다를 수 있겠지만 미래의 내가 다시 우분투 설치할때 똑같이 하시길
Disk size - 50GB, split (주로 커널 컴파일할 때 40GB로 맞추고 해서 똑같이 했다가 용량부족으로 망함 -> 50으로 하니까 성공)
Memory - 4096MB
core - 2 process (프로세스당 코어 1개로 총 2개) -> 이게 기본이라 그냥 했는데 나처럼 n시간 걸리기 싫다면 최대한 높이는게 좋은듯
1. 현재 커널 버전 확인
우분투 접속 -> uname -r로 현재 버전 확인(나중에 써야되니까 복사나 캡쳐 ㄱㄱ)
2. 커널 다운로드
아래 사이트에서 원하는 버전 다운로드
https://mirrors.edge.kernel.org/pub/linux/kernel/
Index of /pub/linux/kernel/
mirrors.edge.kernel.org
3. 루트계정으로 진행
안그러면 /usr/src에서 할 수가 없었음...
sudo -s
이걸로 하면
ubuntu어쩌구하고 $대신 #으로 뜸
4. 파일 이동, 압축 해제
cd로 다운로드 경로로 이동한 뒤
mv로 tar파일을 /usr/src에 이동(보통 커널 파일은 여기서 관리하는 듯 하다)
xvf로 압축해제
5. 필요 패키지 설치
이 단계가 중요한데, 뭐 하나라도 빼먹으면 나중에 빌드할때 에러 뜸 -> 그럼 그때마다 하나씩 설치해서 다시 빌드하면 되긴 하는데... 가뜩이나 오래 걸리니까 최대한 필요 패키지는 다 미리 설치하자!!
이건 위에 올린 두 블로그에 써져 있는 걸로 복사해서 다운 받았음
+그리고 위 블로그 보면 시작 전에 KEY 무효처리 하는 코드 있는데 그거 꼭 해야됨!! 안하면 나중에 빌드때 에러나서 고생함
6. .config 설정
내 과제기준으로는 여기가 더 중요했음...
여기서 릴리즈 출력을 바꿀 수 있었기 때문이다
하여튼 여기서는 일단 cd로 압축해제한 커널 파일로 이동한 상태에서 진행해야됨!!
여기서 cp로 현재커널명 그대로 해서 .config로 새 파일 만들어서 복사하게 시킴
왜냐하면.... 새로 커널을 설정하려면 복잡하니까 기존 커널 세팅을 복사한다음에 추가로 바꾸고 싶은 것만 설정하는 것이다.
복사한 후 세팅하기전에
화면크기 키우고!! 아래 코드 입력
sudo make menuconfig
GUI로 된 창 띄우는 거라 화면 작으면 에러남
암튼 이제 설정 창 뜨는데
먼저 아까 복사한거 불러와야됨
키보드 방향키 누르면 조작 가능
LOAD -> OK(.config로 됨)
SAVE -> OK
그 후 바꿀 거 없으면 바로 EXIT하고
나는 과제때문에 바꿔야 돼서
대충 아래 비슷한 메인 화면에서 두번째 General setup 누르고
Local 어쩌구... 뜨는거 선택하면 릴리즈 번호 뒤에 붙일 이름 추가할 수 있다.
쓰고 다시 SAVE->OK
EXIT로 창 종료
7. 커널 컴파일

여기서부터 온갖 오류 다 겪어볼 수 있음
지옥 시작
3번째 시도때... 성공한 기준으로 씀
아래 과정 하면서 경고는 무시해도 된다...
근데 에러는 해결해야돼...
제일 안무서운 에러는 패키지 설치하라고 뜨는거
그럼 빌드 끝날때까지 기다린다음에(지옥)
패키지 설치하고 다시 빌드...(.......)
근데 이제 다른 에러 뜨면 그건 좀
마지막에 에러 해결 부분에 쓰겠음
근데 걍 에러 문구 복사해서 검색 ㄱㄱ
1) 전체 빌드
sudo make -j 2
뭐 루트 계정에서 진행하니까 sudo를 붙여야 될지 잘 모르겠어서 여러번 시도하는 동안 붙이기도 하고 안붙이기도 해서... 얜 잘모르겠음
불안하면 붙이자...
암튼 기본은 make인데
아까 우분투 세팅할때 코어 2개로 해놨어서 j옵션으로 코어 개수 붙이면 그만큼 병렬처리 돼서 빠르게 할 수 있음!!
2코어 기준 1시간 반정도 걸린듯
4코어도 잠깐 해봤었는데 1시간 이내로 걸렸던 거 같음
2) 모듈 빌드
sudo make modules
이걸 하는 분도 있고 안하는 분도 있었는데... 더 찾아보니까 필요한 과정 같아서 했다.
그리고 위에거랑 이어서 이거 진짜 지옥임
시간 젤 오래 걸렸다......
여기서도 j옵션 쓸 수 있는 거 같긴 한데
블로그 따라하느라 그냥 썼더니,,,
<3시간> 걸렸음....ㅎ.ㅎ
이게 하다가 되게 짧게 끝나는 경우도 있었는데요
그럼 조심하세요
코어 설정도 안했는데 몇분안에 끝난다면....
나중에 100% 에러남
엄청나게 많은 것들이 빠진 것이다.....
나도 3번째 시도(성공했던거)때 저거 썼다가 몇줄 나오고 끝나길래 ?.?상태됐다가
잘 보니까 패키지 하나 빼먹었다고 문구가 나왔더라구요
패키지 설치하고 다시 make modules하니까
3시간.......됨
오래 걸려서 힘들었지만 그만큼 잘 설치되고 있는 거라고 믿으면서,,, 버팀
아무튼 이거 끝나고 에러 안 뜨면 이제 진짜 희망고문일지도 모르겠지만 성공희망 시작!!
3) 설치
sudo make modules_install
아까 엄청 오래 걸렸는데 얜 빠른 속도로 아까 거 그대로 슈류ㅜ루루룩 뜸
속시원
그리고 드디어 마지막!!!
sudo make install
이거 쓰면 몇줄 나오다가 좀 멈춘 것처럼 보이는데....
기다리면 갑자기 우루루 뜸
얜 이제 그 빌드 결과같은거 알려주는 것처럼 출력된다
특히 이때 아까 릴리즈 이름 바꾼 것으로 출력되니 확인하기!!
8. 재부팅
드디어..... 이제 확인해볼 수 있는 시간
아까 make install 해서 최종적으로 에러가 안 떠야 됨!!
2번째 시도에선 저거하고 마지막줄에 에러가 떴었는데요...... 그냥 무시하고 재부팅 단계로 넘어갔다가 부팅 안됨 ㅇㄴ(용량부족이었음)
암튼 에러없으면 재부팅하면 됨!!
sudo reboot
이거 쓰면 이제 재부팅 되면서...
에러가 있으면 여기서 검은화면 무한로딩 걸리면서 10분이 지나도 그대로라 걍 강제종료하고 우분투 리제로해야됨(당사자 실화얘기)
에러 없으면 1~2분 안에 바로 계정 로그인 화면 뜬다!!
그리고 접속해서 두근두근...터미널에 uname -r 써보면
...
안바뀜 ㅎ.ㅎ
제가 지금 사기글을 쓰고있는게 아닙니다
여기서부터는 grub 설정을 해주어야 되는데
아래 블로그 보고 했음!!
[Linux/Ubuntu] 리눅스 커널 컴파일, 시스템 호출
우분투 환경에서 리눅스 커널 컴파일과 시스템 호출 구현을 해보도록 하겠습니다 😺 이번 과제 하면서 한 3일은 밤샜다. 우분투도 10번은 지웠다 깔았다 한 것 같다. 구현하는 과정에서 관련된
hjrrkd.tistory.com
이거 보고 grub 파일 수정하고 다시 재부팅해보면
처음 화면이 검은 메뉴화면이 나옴
그때 빠르게 키보드키로 새 커널 등록한걸로 들어가야됨(복구모드 말고 걍 기본인 걸로)
그러고 다시 터미널에 uname -r 해보면...

뜬다!!!!
진짜 이때 비명 지름
어제 5시간 날리고 오늘 9시간...총 14시간의 기적
하...........
근데 다시 우분투 종료하고 해보니까 기본 우분투로 접속하면 기존 커널로 뜨고 새 커널로 접속해야 저걸로 뜸
아예 부팅이 새커널로 되도록 하는 방법도 있는거같은데 어차피 나중에 망하면 또 복구모드 진입해야 되니까 일단 그냥 둘려고요 ㅎ.ㅎ
+ 에러 해결 정리
일단 시도별로 상황 쭉 정리
1번째 시도: 우분투 40GB/2코어
블로그 보면서 쭉 진행하다가
과제때문에 이름 설정하는건 검색해도 안나와서 gpt한테 도움받았는데 그이후로 신뢰해서...(제발아니야)
걔가 추가로 알려준 방법으로 따라했다가 망함
마지막 재부팅하기 전 grup update 명령어를 치고 재부팅 하라는 거였음
물론 그런 순서로 하시는 분들도 있는 거 같지만...... 일단 난 망했다고
아무래도 저건 아까처럼 파일을 수정후에 해야되는데 걍 냅다 업데이트 시켜서 다 꼬인거같음....
>>재부팅 하니까 검은화면만 계속 뜨고 부팅이 안되는 상황 발생<<
-> 결국 강제종료하고.... 우분투 삭제 후 다시 설치함
2번째 시도: 우분투 40GB/4코어
시간 절약하려면 코어 높이래서 일단 2배 해봄
이번엔 블로그대로!! 똑같이 진행함
그런데...
마지막 make 하는 과정에서 에러 발생
읽어보니까 뭐 용량 부족해서 파일이 설치가 안되는 거 같았음
그리고 더 찾아보니까 1번째때도 그렇고... 재부팅이 안되면 용량이 꽉차서 그럴 가능성이 높다는 글을 봤음
그래서 재부팅 해보니까 역시나 또 무한 검은화면.....
뭐 우분투 킬때 빠르게 쉬프트 누르면 복구모드 진입할 수 있다는데 내 노트북 기준 완전 운빨임
연타 해봤다가 꾹누르기 해봤다가 마우스 쉬프트 다누르기 온갖 방법하다 한 6번째 시도에 복구모드 진입함
거기서 df -h였나?? 명령어 쓰면 범인을 찾을 수 있음....
역시나... /dev/sda5가 100%로 다잡아먹고 있었다
그래서 또 우다다 검색해서 뭐 이것저것 clean을 하니까 99%로 떨어져서 부팅 되긴 함..ㅋㅋ
그리고 부팅 후.... 아까 설치 못했던 걸 다시 설치하기 위해 make를 해야되는데
99%라.... 불안했음
그래서 이런 경우엔 disk늘리래서 따라해봤는데
우분투 자체 늘리기는 되는데 그 리눅스 내에서 하는건 에러남.... 둘다 해야 되는데,,,
.......
결국 또 우분투 삭제 후 재설치
리제로 그만하고싶다
3번째 시도: 우분투 50GB/2코어
이번엔 첨부터 자동으로 50으로 되도록 설정!! 그리고 코어 높이면 또 뭔가....아 분명 전공때 배웠는데 기억이 안남 하여튼 기본 설정 건드리는 거 불안해서 걍 기본 2코어로 냅둠
그리고 명령어는 또 블로그 그대로 따라함
그 첫번째 make -j하는 과정에서 산책 다녀왔다가...돌아오니 화면이 꺼져서 다시 켰는데
그 make는 끝났는데... 렉 오지게 걸림
이거.....다시 켜도 되나?
불안하긴 한데.... 걍 설치하는 과정이니까 괜찮겠지 하고 그때 재부팅 한번 함....
빨라진 상태로 이어서 모듈 make시작
이때 3시간 걸린 그거임
솔직히 재부팅 한번 해서 아까 처음 make부터 다시하는건지....모르겠는데 하여튼 욕하다가 응원했다가 반복함
지나가는 가족들도 안쓰러워하기 시작
그리고 이제 지하철 타야되는데 저녁먹을때까지 계속 해서 더 불안했다가.... 저녁 다 먹고 1시간만 더 기다려보자!! 했더니
성공~~!~!!!!!!
아진짜다행이다.......첫번째 과제인데..... 설치하는건데.....여기서부터 막혔으면 다음 과제 다못해서 더 부담감 Max였음
뭐 아직 다음 과제가 남아있긴한데요
일단 설치 무사히 돼서 진짜 다행이다,,,,,,
총정리
-부팅 에러가 날땐 거의 용량 부족이니 처음부터 우분투 용량 크게 잡자.....
-코어 옵션 꼭 넣자.....너무 오래걸린다
-패키지 잘 설치하자.....
하여튼 과제는 진짜 안될때는 죽고싶었다가 성공하면 그만큼 뿌듯안심이네요
근데 이걸 종강때까지 반복해야한다니.........#파이팅

끝!!!
'🌙CS > 운영체제' 카테고리의 다른 글
[Linux] System Call 추가하기 (0) | 2024.09.23 |
---|---|
04. Limited Direct Execution (1) | 2024.09.18 |
03. Process API (0) | 2024.09.14 |
02. Processes (0) | 2024.09.13 |
01. Operating System (OS) (0) | 2024.09.13 |