Boot Loader
부트로더는 리눅스가 부팅되기까지 전 과정을 진행하는 부팅 프로그램입니다.
ROM-BIOS에서 POST기능을 수행하고 가장 먼저 인식된 부팅매체에서 Boot Loader를 읽어 들이게 됩니다.
리눅스 부트로더에는 LILO 와 GRUB 가 있습니다.
LILO (LInux LOader) :: 리눅스 운영체제에 한정되어서 사용되면 부트로더입니다,
우리는 GRUB을 알아보겠습니다.
GRUB ( GRand Unified Bootloader) :: 리눅스에 한정되지 않고 다른 운영체제에서도 사용가능하여 멀티부트로더 라고 합니다.
먼저 GRUB 과 LILO 모두 System 전원이 공급 되면 가장먼저 ROM-BIOS에서 시스템 제어권을 가지고 장착된 하드웨어에대한 기본적인 점검과 인식을 하게됩니다.
위 과정을 거친 후에 ROM-BIOS는 하드디스크의 첫 번째 부트섹트인 MBR( Master Boot Record )에 있는 Boot Loader 에게 제어권을 넘기게 됩니다.
이미 설치가 되어 있겟지만 설치가 되어있는지 확인 하는 습관은 나쁘지 않은것 같습니다.
# rpm -qa | grep grub
설치확인은 다른 RPM들과 마찬가지로 위 명령을 통해서 할수 있습니다.
#grub --version
위 명령을 통해서 version 정보를 확인할수 있습니다.
뭔가 확인하는 듯 한 멋진 사람이 되어보세요 하하
GRUB의 장치명
grub 에서의 디스크 장치명과 실제 부팅된 다음 리눅스에서 사용되는 디스크명과는 약간의 차이가 있습니다.
grub 에서는 ROM-BIOS에서 사용하는 정보를 그대로 사용하며 IDE, SCSI 의 장치명을 별도로 구분 짓지 않습니다..
우선 리눅스는 어떻게 구분하는지 확인해봅시다.
리눅스에서의 디스크와 파티션 구분
구분 | IDE | SCSI |
1 | /dev/hda | /dev/hda1, /dev/hda2 .. | /dev/sda | /dev/sda1, /dev/sda2 .. |
2 | /dev/hab | /dev/hdb1, /dev/hdb2 .. | /dev/sdb | /dev/sdb1, /dev/sdb2 .. |
3 | /dev/hdc | /dev/hdc1, /dev/hdc2 .. | /dev/sdc | /dev/sdc1, /dev/sdc2 .. |
위처럼 IDE의 첫번째 디스크부터 hda, hdb 순으로 이름이 정해집니다.
IDE 의 파티션은 hda1, hda2 식으로 첫 번째, 두 번째 파티션을 나타냅니다.
마찬가지로 SCSI 도 똑같이 hda 가 sda로 표현된것 말고는 다른게 없습니다.
자 그럼 GRUB에서는 어떻게 나타낼까요!!
먼저 위에서 IDE와 SCSI 를 구분짓지 않는다고 했습니다.
GRUB에서의 디스크와 파티션 구분
구분 | DISK | Partition |
1 | hd0 | (hd0,0), (hd0,1), (hd0,2) .. |
2 | hd1 | (hd1,0), (hd1,1), (hd1,2) .. |
3 | hd2 | (hd2,0), (hd2,1), (hd2,2) .. |
아 정말 간단합니다. 이렇게 쉬울줄이야 .
GRUB에서는 ROM-BIOS 의 정보를 그대로 사용합니다.
위표와 같이 IDE와 SCSI의 구분없이 시스템에 장착된 순서대로 hd0,hd1,... 이렇게 표기합니다.
디스크 번호와 파티션번호 모두 0부터 시작합니다.
표와 같이 (디스크장치명,파티션명) 형식으로 표기합니다.
GRUB Install
*********** 추가 해야 하는데..*************
GRUB 명령을 사용하는 환경
GRUB은 초기 부팅과정에서 ‘c’,‘e’ 키를 입력해서 진입하는 방법과
부팅이 완료된 후에 #grub 명령을 통해서 진입하는 방법이 있습니다.
두가지 grub 명령 모드로 진입한것은 맞지만 전혀 다른 환경이라는걸 알아둡시다!
GRUB 명령 모드 ( 초기 화면에서 ‘c’)
Command-Line
grub 명령모드입니다.
* 우리가 사용하던 것 처럼 Tab 자동완성이 됩니다.
* bash 에서 사용하던 명령어와 비슷한 명령을 사용 할수 있습니다.
* cat명령을 통해서 파일 내용을 확인가능합니다.
하지만!! 작업하기전에 root (hd0,0) 같은 명령어로 device 를 지정해줘야 파일 확인이 가능합니다.
GRUB 편집 모드 ( 초기 화면에서 ‘e’)
Booting menu edit
초기화면에서 e 입력시 부팅메뉴 편집 모드로 진입합니다.
리눅스 비밀번호를 잃어 버렸을 경우 이 편집모드로 진입해서 부팅되는 커널을 편집모드로 부팅하게
편집하고 부팅을 하게되면 싱글모드로 부팅이 됩니다.
그때 패스워드를 변경하고 그럽니다. 그렇습니다. 그래요.
편집모드에서 사용할 수 있는 키와 기능을 간단하게 알아봅시다!
* ↑,↓ : 보다시피 위아래 이동입니다.
* b : 선택된 boot menu로 시스템을 부팅합니다.
* e : 선택된 boot menu 의 명령어를 편집합니다.
* c : 초기화면에서 c를 눌러 진입하는것과 같이 명령모드로 진입합니다.
* o : 새로운 행을 커서 다음 행에 삽입합니다.
* O : 새로운 행을 커서 앞 행에 삽입합니다.
* d : 선택된 행을 삭제 합니다.
* ESC : GRUB 이전 메뉴로 이동합니다.
GRUB 명령어
위에서 GRUB 명령 모드를 알아보았습니다. 하지만 명령어를 모르면 사용할수 없겟죠?
셸상태에서 사용하던 명령과 비슷한 명령도 많지만 grub 에서는 grub 명령모드에서만 사용하는 전용 명령어 들이 있습니다.
BOOT | /dev/sda1 | (hd0,0) | /boot 디렉토리 |
ROOT(/) | /dev/sda3 | (hd0,2) | / 최상위 디렉토리 |
root (x,y)
root 명령은 지정한 파티션을 시작위치로 인식하게되는 마성의 명령어
지정한 장치를 root device 로 인식합니다.
셸 상태랑 비교를 해봅시다 grub.conf 파일을 열려고 합니다.
셸에서는 cat /boot/grub/grub.conf 의 경로를 지정해줘야합니다.
여기서 root (hd0,0) 명령을 지정해줬다면
이제 첫번째 디스크의 첫번째 파티션이 루트 디렉토리가 되는겁니다.
cat /grub/grub.conf 로 파일을 열수 있습니다.
kernel
부팅에 사용할 커널 이미지 파일의 경로를 지정하는 명령입니다.
시스템부팅에 사용할 커널이미지를 지정하는 명령으로
지정한 커널 뒤쪽으로 부트파라미트, 루트파티션의 디바이스 명을 지정할수 있습니다.
grub> root (hd0,0)
grub> kernel /vmliuz-x.x.x.x-x.x ro root=/dev/sda3
거의 대부분 명령은 먼저 root 명령을 통해서 디바이스 지정을 해줍니다.
blocklist 파일경로
파일에 지정된 blocklist 를 확인하는 명령입니다.
파일경로를 지정해줄때 바로 위에있는 root명령으로 그 device 를 지정해줘야합니다.
grub> root (x,y)
grub> blocklist /x/x
(hdx,y)234234+1
이런 형식으로 디스크의 블록 번호가 출력됩니다.
boot
지정된 디바이스의 파티션에서 kernel 명령어로 지정된 커널로 부팅을 하는 명령입니다.
그렇다면 역시 먼저 root 명령으로 특정 디바이스를 지정해줘야합니다.
그리고 kernel 명령으로 사용할 커널을 지정해주고 boot 명령을 이용하면됩니다.
grub> root(hd0,0)
grub> kernel /vmlinuz-x.x.x-x.x
grub> boot
위처럼 boot 명령이 실행된 후에는 root 명령과 kernel 명령으로 설정한 정보로 부팅을 시작합니다.
cat
셸에서 사용하는 cat과 동일한 명령어입니다.
하지만 grub에서 사용하기 위해서는 root 명령으로 해당 파일이 존재하는 디바이스 파티션을
지정해줘야합니다.
grub> root(hd0,0)
grub> cat /grub/grub.conf
chainloader
makeactive 에서 부팅 가능하도록 지정한 파티션의 첫번째 섹터부터 읽어들여 부팅을 시작하도록 하는 명령입니다.
예를 들어 chainloader +1 은 makeactive 로 지정된 부팅가능한 파티션의 첫번째 섹터부터 읽어서
부팅하라는 의미입니다.
--force 옵션을 사용하면 부트로더의 존재유무와는 관계없이 강제로 로드 시킵니다.
clear
셸에서 사용하는 clear 명령과 동일합니다. clear 해줘요 하하하하
color
메뉴의 색을 변경하는 명령, 색을 지정하는 형식은 포그라운드/백그라운드로 지정합니다.
FG/BG 형식으로 색에 대한 상징적 이름으로 각각 8개씩 총 16개가 있습니다.
dark-gray | black |
light-blue | blue |
light-green | green |
light-cyan | cyan |
light-red | red |
light-magenta | magenta |
yellow | brown |
white | light-gray |
저는 별볼일 없는 명령이네요.
configfile /파일경로
지정한 파일을 grub 의 설정파일로 로드하는 명령입니다.
마찬가지로 root 명령을 우선적으로 써줍니다
grub > root (hd0,0)
grub > configfile /grub/grub.conf
위처럼 configfile 명령을 사용하여 지정한 설정파일을 로드할 수 있습니다.
기존에 사용하던 grub.conf 파일을 configfile 명령어로 로드한다면
기존에 사용하던 grub 그대로 부팅하게 됩니다.
device
grub 명령모드에서만 사용가능한 명령어입니다.
지정한 드라이브를 BIOS드라이브에 대한 실제 드라이브 장치로 지정하는 명령어 입니다.
displayapm
APM BIOS정보를 출력합니다.
displaymem
물리적 RAM 이 설치되어있는 시스템의 주소에 대한 MAP을 표시해주는 명령어입니다.
EISA메모리 인터페이스 존재유무, 메모리 정보 등에 대해서 자세하게 출력해줍니다.
find
셸에서 쓰던 find 명령과 비슷한 명령입니다.
모든 파티션들에서 지정한 파일이 위치한 장치명을 찾아주는 명령으로
검색한 파일명을 저장하고 있는 디스크의 장치명과 파티션명을 찾아냅니다.
grub> find /파일이름
형식으로 사용하게 되고 어떤 디스크의 몇번째 파티션에 저장되어있는지 출력합니다.
위에서 root 명령을 사용할때 find 를 사용하게 된다면 우리가 확인할 파일이 어디에 위치해있는지
알아내기 쉽겟죠?
geometry
지정한 디바이스 드라이브에 대한 정보를 출력해주는 명령입니다.
디스크 장치명을 지정하면 그 디스크에 대한 정보를 출력해줍니다.
섹터정보, 파티션별 파일시스템 타입 등
grub> geometry (장치명)
형식으로 사용합니다.
위 내용까지 대부분 어려운 내용 없이 한 줄짜리 명령들은 한번씩 입력해보는것도 많은 도움이 됩니다.
halt
시스템을 정지시키는 명령입니다.
grub> halt
형식으로 사용할수 있고 위처럼 grub 모드에서 halt 명령을 사용하게 되면 시스템은 종료되게 됩니다.
--no-xxx 옵션을 추가할수 있습니다.
xxx를 작동하지 않도록 하려면 halt --no-xxx 라고 입력해주면 됩니다.
help
어디서든 help는 도움말을 출력하기 바쁩니다 여기서도 마찬가지로 도움말을 출력하는 명령입니다.
그냥 help 만 사용했을 경우에는 전체 명령에 대해 간단한 도움말을 출력합니다.
grub> help 명령어
형식으로 사용할경우에는 지정한 명령어에 대한 도움말을 출력합니다.
hide
hidden 비트를 이용해서 지정한 파티션을 숨기는 명령입니다.
hide 로 특정 파티션에 hidden 속성을 부여했다면 unhide 명령으로 hide를 풀어낼수 있습니다.
hide 명령으로 부트 디바이스인 (hd0,0) 에다가 hidden 속성을 줘서 숨기면 어떻게 될까요?
운영체제에서 디바이스를 인식하지 못하고 부팅을 하지 못하게 됩니다.
그럼 우리가 설치해놓은 Linux 로 부팅되지 않고, grub 화면으로 넘어가게됩니다.
initrd
디바이스와 커널을 지정한 채로 부팅할 때 사용할 initrd 이미지를 지정해주는 명령입니다.
SCSI 를 부팅디스크로 사용할 경우에 initrd 항목이 설정되어있지 않으면 kernel panic 에
빠질수가 있다고합니다.
grub> root (hd0,0)
grub> kernel /vmliuz-x.x.x-x.x
grub> initrd /initrd-x.x.x.x-x.x.img
이 명령도 마찬가지로 root 명령을 선행해서 부트 디바이스를 지정합니다.
kernel 명령을 통해서 부팅에 사용할 커널을 지정한다음
initrd 명령으로 initrd 이미지를 지정합니다.
위 설명대로 디바이스와 커널을 지정한 채로 부팅될 때 사용하는 명령입니다.
makeactive
루트 디스크에 존재하는 grub 의 루트디바이스를 부팅가능한 파티션으로 지정하는 명령입니다.
이 명령어는 첫 번째 하드디스크의 주파티션에 한정되서 사용되는 명령입니다.
map
FROM_DRIVE 에서 지정한 드라이브를 TO_DRIVE에 지정한 드라이브에 매핑 시키는 명령어입니다.
첫 번째 드라이브가 아닌 곳에 저장될수 있는 DOS와 같은 운영체제를 체인로드 하고자 할때 필요합니다.
md5crypt
MD5 포맷으로된 암호문자를 생성하는 명령입니다.
지정한 문자를 md5 로 포맷하여 출력해줍니다.
맨 아래에 있는 Grub 암호 설정방법!!
modulenounzip
module 과 같은 명령입니다.
no un zip 이 보이나요. 같지만 자동압축해제가 되지 않습니다.
paper
toggle 형식으로 pager 모드를 on/off 하는 명령어입니다.
grub> pager
현재모드에서 다른모드로 변하게 됩니다.
grub> pager on / off
모드에 상관없이 상태가 변하게 됩니다.
partnew
파티션의 타입,길이,시작주소 를 지정하여 주 파티션을 생성하는 명령입니다.
parttype
지정한 파티션의 타입을 지정해서 변경하는 명령입니다.
grub> geometry (hd0,2)
grub> parttype (hd0,2) 0x&&
어떤 파티션을 바꾸던지 먼저 뭐였는지 확인하는 습관은 참 중요합니다.
geometry 명령을 이용해서 partition 타입을 확인한후
parttype 명령으로 파티션의 타입을 변경해주면 되겠습니다.
quit & reboot
grub 종료 와 재부팅 입니다.
rootnoverify
grub 이 인식할 수 없는 파티션을 root device 로 지정할 때 사용하는 명령어입니다.
root 명령과 비슷한 동작을 하는데 왜 다른 명령어를 만들어 놨을까요?
rootnoverify 명령은 지정한 파티션의 마운트 시도를 하지 않는 다는 점에서 차이가 있습니다.
serial
시스템에 장착되어있는 시리얼장치를 초기화하는 명령으로
이 명령어 사용시에 --unit 에는 시리얼장치로 사용되고있는 장치를 2진수로 지정합니다.
--port 옵션으로 포트 번호를 지정할수가 있습니다.
--speed : 속도 지정을 할수 있습니다.
setkey
키보드 맵을 변경할수 있는 명령으로 FROM_KEY 를 TO_KEY로 매핑시키게 됩니다.
여기서 사용되는 key들은 알파벳, 숫자, 밑의 문자들 입니다.
만일 어떤 인자도 주어지지 않는다면 키매핑을 리셋하게됩니다.
at, ampersand, asterisk, backquote, bar, bracketleft, backslash, backspace, capslock, caret, doublequote, dollar, escape, exclam, numbersign, percent, parenleft, parenright, minus, underscore, equal, plus,tab,tilde, shift, comma, less, period, greater, slash, question, alt space,
FX (X is a digit), and delete.
setup
부트 파티션으로 생성하기 위해서 디스크를 지정하여 grub 을 설치해주는 명령입니다.
terminal
터미널 선택 명령. console과 serial이 모두 지정되었을 경우에는 첫번째 키가 입력된 터미널이
선택되는데, 아무런 인자가 지정되지 않았다면 현제 셋팅값을 출력하게됩니다.
--no-echo : 입력된 문자에 대해 echo가 되지 않도록합니다.
--timeout : 지정되면 적어도 지정한 초만큼 기다립니다.
--lines : 최대행 수를 지정합니다
--silent : 가능한 메시지를 보여주지 않도록합니다.
terminfo
터미널의 성능을 결정하는 명령이다. 즉 터미널의 이름과 SEQ, cursor address, 입력표준모드와
출력표준모드를 지정할수 있다. 아무런 옵션도 사용하지 않고 terminfo 만 실행된다면 현재 설정내용이 출력 된다.
testvbe
VESA BIOS EXTENSION, 즉 VBE를 지정한 MODE 로 테스트하는 명령이다
테스트 실행을 시키면 계속적으로 테스트를 하게되며 테스트를 끝내려면 아무키나 누르면 다시 이전상태로 돌 아온다. 이 명령어와 관련된 명령어는 vbeprobe 로서 VBE정보를 확인하는 명령이다.
unhide
파티션 타입 코드에 hidden 비트 속성을 줬던 hide 명령을 해제하는 명령입니다.
uppermem
GRUB 의 KBYTES에서 지정한 Kbytes 만큼 상위메모리로 설치되어있다고 인식하도록하는 명령어입니다.
vbeprobe
vbe 정보를 확인하는 명령입니다.
옵션으로 mode가 지정된다면 이 명령어는 지정한 mode에 대해서만 보여줍니다.
옵션이 없다면 가능한 모든 vbe모드에 대한 정보를 출력합니다.
GRUB 에서 싱글모드로 부팅해봅시다.
자 부팅이 안된다. 암호를 잃어버렸다.
말그대로 시스템의 root 암호를 잃어버리거나, 정상적인 부팅이 되지 않아 불가피하게 싱글모드로 부팅을 해야 하는 일이 생길수가 있습니다.
LILO에서는 부팅 초기 화면 LILO: 단계에서 linux single 이란 명령을 통해서 간단하게 싱글모드로 부팅이 가능합니다.
하지만 GRUB은 우리가 배운걸 활용합니다
1. grub 초기화면에서 e를 눌러서 메뉴편집모드로 진입합니다.
2. kernel /vmlinuz.x.x.x-x.x ro root=LABEL=/ 을 위아래로 이동해서 선택하고 다시
‘e‘ 키를 눌러 명령어 편집모드로 진입합니다.
3. 편집되는 행 끝부분에 1 또는 single 이라는 옵션을 추가하고 enter!!
4. 우리가 편집한 항목을 선택하고 ‘b’ 를 눌러 부팅을 시작합니다.
5. 싱글모드로 부팅이 되는데 이제 우리가 해결할 문제들을 해결해줍니다!!
GRUB 에서 커널을 지정해서 부팅해봅시다.
grub 환경에서 시스템에 설치되어있는 여러개의 커널중 원하는 커널을 선택해서 부팅을 할수 있습니다.
음.. 미리 부팅할 수 있는 여러 개의 커널을 만들어놓고 사용하던 커널에 문제가 생길경우를 대비해 예비커널을 만들어 놓는겁니다.
명령어를 사용할때가 됬습니다.
* root 명령으로 boot device 그리고 boot partition 을 지정합니다.
* kernel 명령어로 부팅에 사용할 커널을 지정합니다.
* initrd 명령으로 initrd 이미지를 지정합니다.
* boot 명령으로 부팅을 합니다.
GRUB 설정파일을 알아봅시다
default = 엔트리번호 : 기본값으로 부팅 되도록 설정되어진 순서
GRUB 초기 부팅화면에서 부팅할 메뉴를 선택하지 않았을 경우 사용할 기본 부팅메뉴를 선택해둔 것입니다.
각 메뉴의 번호는 0번부터 시작해서 첫 번째 부팅메뉴가 0번이고 두 번째 부팅 메뉴가 1번 순서로 지정하면 됩니다.
timeout = 부팅시간(초) : timeout 에 지정된 시간에 0번째 부팅메뉴를 실행
GRUB 초기부팅화면에서 지체하는 시간을 초단위로 설정한 값입니다.
부팅 초기화면에서 부팅메뉴를 선택하는데 이때의 대기시간을 초단위로 설정한 값으로 이 시간이 경과하는
동안에 선택되지 않는다면 기본 부팅메뉴로 부팅이 진행됩니다.
splashimage (장치명,파티션) 이미지파일
GRUB 부팅 화면에 나타나는 배경 이미지를 설정해놓은 것입니다.
초기화면에서 GRUB 의 배경이미지를 변경하려면 이 파일명을 다른 이미지파일의 경로로 넣어주면 됩니다.
기본설정은 (hd0,0) 위치에 있는 /grub/splash.xpm.gz 이미지 파일을 사용 하고있습니다.
password
부팅시 GRUB 모드로 들어가기 위한 암호화된 패스워드입니다.
password항목이 존재하지 않는다면 패스워드 없이 GRUB 모드로 진입가능합니다.
title 부팅제목
GRUB 부팅화면의 메뉴에 나타나는 제목 리눅스로 부팅하기 위한 옵션입니다.
title DOS
윈도우로 부팅하기 위한 옵션입니다.
root (하드,파티션)
리눅스의 루트(/) 파티션의 위치를 지정합니다.
kernel /vmlinuz-버전 ro root=/dev/장치명
부팅할 경우에 메모리로 로드할 kernel 의 이미지를 지정해놓은 것으로
ro root 는 루트파티션의 위치로 부팅이 되지 않을 경우 강제로 루트파티션을 지정해줄 수 있습니다.
initrd
SCSI 디스크를 사용하는 경우에는 반드시 지정해야 하는 항목으로 해당 메뉴로 부팅할 때 사용할 initrd
이미지를 지정해주는 것 입니다.
initrd /initrd-x.x.x-x.el5.img 의 의미는 initrd 로 사용할 이미지 파일을 /initrd-x.x.x-x.el5.img로 지정한것이다.
initrd 이미지 파일명 : 시스템 초기화용 램 디스크 이미지 파일
initrd /initramfs-2.6................img 초기화를 담당하는 이미지 파일의 경로를 지정하는 옵션이다.
rootnoverify (hd0, 0)
rootnoverify 옵션은 리눅스 타이틀의 root 옵션과 비슷한 기능을 하지만 리눅스와 달리 해당 파티션을 마운트 하지 않는다.
GRUB 이 인식할수 없는 파티션 (ntfs nt 등) 에서는 부팅 권한만 넘겨줍니다.
fallback = 엔트리번호 : 부팅 실패시 다음 순위 부팅순서
default 항목에서 설정한 기본 부팅메뉴로 부팅되지 않았을 경우 다음으로 부팅할 부팅항목을 설정 해줍니다.
chainloder+1
chainloder 옵션을 이용하여 다른 부트로더로 제어권을 넘깁니다.
윈도우와 리눅스를 멀티부팅 하면 이 옵션을 통해서 윈도우의 부트로더인 NTLDR에 의해 윈도우가 부팅 됩니다.
GRUB 암호를 지정해봅시다
grub 으로 진입할경우 보안을 위해서 passwd 를 설정합니다.
# grub
grub> md5crypt
passwd :
encrypted 솰라솰라
grub> quit
# vi /etc/grub.conf
hidden menu 또는 splshimage 밑에
passwd --md5 솰라솰라
hidden menu 는 앞에 #을 붙여 주석처리
:wq 로 저장
음.. 너무 대충 써놨는지는 모르겠지만 간단합니다.
* 먼저 grub 모드로 진입을 합니다.
* md5crypt 명령을 써주면 password 를 입력할 수 있습니다.
* password 를 입력하면 바로 밑에 encrypt 라며 md5로 표기된 암호가 출력됩니다.
* 암호를 복사를 한뒤
* quit 명령을 통해서 grub 상태에서 빠져나옵니다.
* grub 설정파일인 /etc/grub.conf 파일을 vi 로 열어 수정해줄겁니다. (또는 /boot/grub/grub.conf)
* 활성화되어있는 hidden menu 는 #을 추가해서 주석처리를 해주세요
* hidden menu 또는 splshimage 밑부분에
* password - - md5 복사한암호
* 위 문장을 추가하고 :wq 저장하고 vi를 빠져나옵니다.
재부팅을 한다음 초기화면에서 ‘e’ 키를 눌러 grub 편집모드로 진입하려면 암호가 필요합니다.
이제 p를 눌러 암호를 입력하고 진입할수 있습니다.
꽤 오래전에 이곳저곳알아보며 썻던 자료이기에...
누군가에게는 도움이 되지 않을까 싶어 올립니다.
지적해주시면 바로바로 수정하겠습니다.