본문 바로가기
삽질/Ubuntu, Linux

[ Ubuntu 삽질 ] 우분투 BusyBox initramfs 파티션 오류 해결방법

by SteadyForDeep 2021. 4. 24.
반응형

// 바쁘신 분들을 위해

 

1. 우분투 라이브 usb를 만든다.

2. fsck 를 통해서 파일시스템 검사 및 복구를 해 주면 된다.

 

라이브 usb가 뭔데?

fsck 가 없는데??

그렇다면 아래를 읽으면 된다.

 

 

// 1. 상황

 

우분투를 처음 설치할때

파티션 설정을 LVM으로 했었다.

Logical Volume Manager의 약자로

파티션을 나눌때 Physical한 영역으로

나눠서 관리하는 것이 아닌

Logical한 영역( 프로그래머블한? )으로

관리한다는 이야기였다.

그러니까 OS를 지우고 새로 깔지 않아도

심지어 동작중인 서버를 끄지 않더라도

파티션을 조절할 수 있는 기능이었다.

 

그땐 아무것도 모르고 했지만..

그런데 설치단계때

이 LV의 default가 200GB인것을 모르고

그냥 넘어가버렸다.

 

내 저장 장치는 1TB인데

어쩐지 데이터가 다운이 안되고

내 컨테이너가 다운되더라..

 

그래서 파티션을 늘리려는 시도 도중에

LV와 시작점이 겹치는 PV를 생성해버려서

재부팅 했더니 이 PV로 연결되는 모양이다.

 

요약하자면

LV 건드리려다가 망했다.

 

 

// 2. 부팅 원리 및 고장난 부분 ( 급하면 안읽어도 됨 )

https://askubuntu.com/questions/741109/ubuntu-15-10-busybox-built-in-shell-initramfs-on-every-boot

스택익스체인지에서

관련된 해결방법을 찾을 수 있었다.

우선은 부팅이 어떻게 이뤄지는지 부터 알아야하는데

 

위 사진의 4가지 단계로 부팅이 이뤄진다.

 

몇가지 조사를 통해 내가 이해한 바에 따르면

 

1. 내 마더보드에 심겨진 펌웨어 BIOS가 최우선순위의 Boot loader를 호출한다.

2. Boot loader가 어떤 OS를 상태로 부팅할 것인지 결정한다.

3. Boot loader에 의해 선택된 커널을 시동하기 위해 필요한 Initramfs을 시작한다.

4. Initramfs의 명령들이 정상적으로 수행되면 우분투 커널이 동작하면서 루트계정으로 접속 된다.

 

지금 내 상황은 Initramfs가  적절한 수행을 못해서

즉 파티션을 잘못 잡아서

" 직접 어떤 커널을 어디서 실행할지 잡아줘라 "

라고 하는 내용이다.

 

첫번째 상황을 잘 보면 built-in shell이 실행중이고

여기서 실행할 수 있는 커멘드들을

help로 알려주겠다고 한다.

 

built-in commands가 잔뜩 나왔지만

이걸 어떻게 어디서부터 만져야할지

막막하기만 하다.

우리는 이 커멘드들을 모두 공부해서

다시 직접 커널의 init을 설정해줘야 할까?

무엇보다 다른 글들에서 알려주던

fsck가 안보인다.

그러면 못고치고 걍 밀어야하는건가?

퐁퐁을 풀어서 CPU 부터 싹싹 씻어야할까?

 

 

// 3. Live usb로 우회하는 방법

 

꼭 initramfs의 명령어를 통해서

고쳐야할 필요는 없다.

저기서 망가진 커널은

본체에 깔려있는 OS가 파티션에 접근할때

발생하는 오류이므로

다른, 새로운, 정상작동하는 OS가

임시로 같은 저장장치에 접근하여

파티션을 변경해 주는 방법을 택하면 된다.

 

이걸 위해서 Live usb라는게 필요한데

이게 뭐냐하면 우분투 설치를 위해서 만들어둔 USB를 말한다.

2020.12.11 - [딥러닝/개인 환경 구축 기록] - [ 자취방 워크스테이션 ] #3 리눅스(우분투 서버)를 깔아보자.

 

[ 자취방 워크스테이션 ] #3 리눅스(우분투 서버)를 깔아보자.

//1 드디어 우분투를 깔아서 본격적으로 투컴 생활을 시작해보자. 2020.12.05 - [딥러닝/개인 환경 구축 기록] - [ 자취방 워크스테이션 ] #2 화면 기본 세팅 [ 자취방 워크스테이션 ] #2 화면 기본 세팅

davi06000.tistory.com

내 이전 포스팅에서

rufus를 이용해서 부팅USB를 만드는 과정까지만 따라하면 된다.

그러면 이걸 본체에 꼽아서 다시 설치하듯 부팅을 해 보자.

이러면 내가 저장한거 다 날아간거 아니냐?

싶지만 아직 설치를 진행한게 아니니

데이터가 날린 상태는 아니다.

그리고 눈치챘겠지만

이 상태로 훌륭한 우분투가 돌아가고 있는 중이다.

 

방향키 위로를 계속 눌러서 Help에 가도록 해보고 엔터를 누르면

쉘로 들어가기 라는 문구가 보인다

이걸 선택하면

그러면 우분투의 root계정으로 들어가지고

신기하게도 고장나기 전의 내 우분투가 가지고 있던

파티션들까지 다 보인다.

그도 당연할 것이

같은 컴퓨터에 물려있는 모든 장치들이기 때문.

 

아무튼 이제는 정상적인 우분투에 들어온 상태기 때문에

fsck등의 명령어를 수행할 수 있다.

이렇게 고장난 OS말고 다른곳에 설치된 OS로

파티션을 우회해서 조회할 수 있다.

 

 

// 4. 치료

 

이제 fsck( file system check )를 이용해서

특정 파티션에 오류가 있는지 없는지 검사하고

오류 수정까지 할 수 있다.

 

lsblk 또는 fdisk -l을 이용해서

내가 복구하고자 하는 파티션이 조회되는지

먼저 확인한다.

 

그런 후에

df로 어떤 파티션에 접속할 수 있는지 확인하고

내가 치료하고자 하는 파티션이 umount상태면

그러니까 리스트에 나타나지 않으면

진행하면 된다.

아니면 데이터가 날아갈 수 있으니

꼭 umount하고 진행한다.

 

fsck /dev 까지 입력하고

탭을 이용해서 하위 디렉토리를 검색해서 내려가면

원하는 볼륨을 쉽게 찾을 수 있다.

나는 mapper 아래에있는 ubuntu lv를

복구하기로 했다.

 

무수한 Y의 요청이 쏟아진다..

-y 옵션으로 이 과정을 생략할 수 있으니

그렇게 하길 권장한다..

 

다 끝났다.

리부트를 해보자.

 

usb를 뽑으라는 말이다.

뽑고 엔터치자.

 

시원하게 부팅이 된다! 해결!

 

이제 LVM공부를 하러 가야한다..

아직도 200GB파티션밖에 없기 때문에..

 

반응형

댓글