[졸작/인프라/Ubuntu] 우당탕탕 졸업작품기-4

SHark·2023년 1월 8일

졸업작품

목록 보기
4/8

SSH 설정하는 방법과 방화벽 설정 방법을 글로 적으려고 했는데, ubuntu 설치하는 과정부터가 난해해져서, 글로 기록을 해보려고한다.** 항상 삽질을 하는게 프로그래머의 일이 아닌가 싶다.(흨)

모르는 사람이 봐도 이해가 되기위해서, 진짜 눈으로 봤을 때 보이는 "현상"과 "에러 메세지"를 함께 쓰고, 원인과 해결방법 순으로 글을 정리해보려고 한다. (군대에서 이렇게 정리하니까, 나중에 찾아보기 편하기도 했고, 사람들한테 설명할 때도 편하더라)

컴퓨터환경(Own)

CPU: i7- 12700KF
RAM: 64GB
SSD: 1TB
GPU:RTX 3080 Ti

발생한 에러

  • 현상 : ubuntu를 설치한 뒤 부팅 시에 일어났습니다. GRUB 창 이후에 Out of memory가 나면서, 부팅이 되지 않음.
  • 발생된 에러 메세지
    1. Out of memory Error
    2. Kernel panic not syncing vfs unable to mount root fs on unknown blokc 0 0
    (제 에러 사진은 아니지만 , 똑같은 에러를 겪는걸 커뮤니티에서 가져왔습니다.)

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1842320

Launchpad는 우분투 개발회사에서 운영중인 사이트였고, 위의 버그 리포팅은 "공식" 버그 리포팅이었습니다. 버그 리포팅의 내용을 잠깐 인용해보겠습니다.

Impact

  • In some cases, if the users’ initramfs grow bigger, then it’ll likely not be able to be loaded by grub2.

  • Some real cases from OEM projects:

In many built-in 4k monitor laptops with nvidia drivers, the u-d-c puts the nvidia*.ko to initramfs which grows the initramfs to ~120M. Also the gfxpayload=auto will remain to use 4K resolution since it’s what EFI POST passed.

In this case, the grub isn't able to load initramfs because the grub_memalign() won't be able to get suitable memory for the larger file...

에러 포인트 짚어보기

첫번째 가능성 , 확률 : 희박

나는 4k 모니터가 있는 Laptop이 아니기 때문에, 가능성은 없어보이지만, initramfs가 커졌다..는 뭔가 가능성이 있을 수 있을거 같다. 그래픽 드라이버를 다운받겠냐고 친절하게 물어봐서, 그래픽 드라이버를 다운을 받았는데, 3080은 4k를 충분히 지원하는 모델이고, 그 과정에서 initramfs를 크게 만들었을 수도 있다.

두번째 가능성, 확률 : 꽤 높음

내가 SSD를 2개를 Volumn으로 잡아줬는데, Grub에서 어떤 것이 Root인지 모르겠어서 kernel이 안불러와 졌을 수도 있다. (혹은, OS가 설치된 SSD와 다른 Root로 내가 설정해줬을 수도 있다.)

세번째 가능성, 확률: 희박

ubuntu 22.04 버전에서 해결되지 않은 OS Bug일 수도 있다.하지만, 이러면 진짜 방법이 없기 때문에..

내린 결론 : 일단, 22.04 버전으로 하고(PYthon 3.10 과 Go 1.18ver이 5.15ver 커널에서 지원되기 때문), SSD 1개로 설치해보자. 파티셔닝을 다시 해줘야겠다. 이미 깔려있는 OS는 다시 포맷을 좀 하고(아무것도 안깔려있는 상황이기에 가능한 방법), SSD 1개로 볼륨을 잡아주자.

OS 짚고 넘어가기(확장)

사실, 부팅과정은 OS를 공부할 때, 꽤 깊게 공부했지만, "흐름"정도만 어렴풋이 기억하고 있었다.
이번 일을 겪고나서, OS의 부팅과정을 다시 살펴보니까 더 와닿았던 것 같아서, 부팅 과정을 간단하게 기록하려고 한다.

부팅과정

Booting은 사용자 입장에서 보자면 간단해보이고, 순식간에 일어나는 작업이다. 전원버튼을 꾹-누르면 되기 때문에, Booting이 엄청 쉽고 당연한 것 처럼 느껴질 수 밖에 없다. 하지만, 실제로는 꽤 복잡한 과정을 거치게 된다. 그림으로 한번에 나타내자면, 아래와 같아진다.

각 단계 별로 간단히 이야기 해보자.

  • BIOS(Basic I/O System)에서 하드웨어적인 결함이 없는지 체크합니다.
  • MBR에는 코드가 있고(소스코드), 메모리로 로딩을 하고 수행을 하게되면, Boot loader가 실행이 되게 됩니다.

    MBR(Master boot record)은 SSD나 HHD와 같은 저장장치의 맨 앞에 주로 위치하며, 운영체제가 어디에, 어떻게 위치해 있는지를 식별하며, 컴퓨터의 주기억장치에 적재될 수 있도록 하기 위한 정보를 갖고 있습니다.

  • 부트로더는 부팅과정을 담당하는 하나의 프로그램으로, GRUB가 대표적입니다. 부트로더가 커널의 이미지를 메모리에 적재하면서, Kernel이 실행됩니다.
  • Kernel은 운영체제의 본체입니다. Kernel이 실행되었다는 이야기는 운영체제가 성공적으로 실행이 되었다는 것이고, 여러가지 함께 실행할 프로그램들을 init ram disk라고 하는 이미지를 가지고 Ram상에 가상으로 디스크를 만듭니다. 이 동작하는 과정에서 제일 먼저하는 일이 sbin/init에서 init 프로세스를 동작시키는 것입니다.

위 과정이 Booting 즉, OS에서 필요한 아주 기본적인 프로세스들과 프로그램들은 실행이 되어지게 됩니다.

오류가 너무 많아요 ...

내가 오류난 부분이 바로 Boot loader -> Kernel을 적재하는 과정이 동작되지 않았다는 이야기이다. kernel이 initramfs를 실행하는데 out of memory가 발생했다는점. 그래픽 드라이버 문제일 수도 있고, 파티션 문제일 수도 있다.

다시 깔아보고 싶은데, 연구실내에서 진행하다보니, 교내 보안모듈(NAC)에서 컴퓨터를 차단한 것 같다.(랜포트를 꼽을 때마다, 아마 NAC가 갱신될텐데 , 이번에는 걸린듯하다. 네트워크 인터페이스가 잡히지 않음. 불은 들어오는데 주황색불만 깜빡거림)

월요일날 학교 전산실과 연락을 해서, IP가 NAC에 막혀있는지 봐야겠다.
(LAN 포트가 망가졌을리는 없지 ㅇ ㅏ ㅋㅋㅋㅋ )

0개의 댓글