-
Bootstrap process and Boot loader Recovery리눅스 공부 아자!/CentOS 2019. 9. 7. 15:22
안녕하세요,,
최근에 구글 클라우드 면접 보면서 무엇을 더 깊게 공부해야 할지 많이 느꼈습니다. 2차에서 탈락하긴 했는데 받았던 질문들에 대답 + 더 알아본 정보를 공유해보려 합니닷. 물론 아직 정확한 설명을 드리긴 부족해 나중에 혼자 보려고 쓰는 거기도 합니다,,
1. 일단 기본적으로 쉽게 풀어 쓴 컴퓨터의 부팅 과정입니다. 이 과정을 알면 어떤 하드웨어 부분에서 문제가 있는지 알 수 있습니다.
?The Progress of server booting up?
· Turn on the Power button.
· CPU pins are reset and registers are set to specific values.
· CPU jumps to address of BIOS (0xFFFF0).
· BIOS run POST (Power-On Self Test) and other necessary checks.
· BIOS jumps to MBR(Master Boot Record).
· Primary Bootloader runs from MBR and jumps to Secondary Bootloader.
· Secondary Bootloaders loads Operating System.
https://www.quora.com/What-exactly-is-the-booting-process1. CPU 2. BIOS(POST check - Hardware Check) 3. MBR(where first Bootloader is resided) 4. second Bootloader(1st + 2nd = GRUB) 5. RAM(where OS is loaded and run)
Detail: https://developer.ibm.com/articles/l-linuxboot/
여기서 BIOS는 마더보드에 부착되어 있는(Embeded) Flash Memory(Chip) 에서 실행됩니다.
부팅의 과정은 control 권한을 각각의 하드웨어에 넘겨주며 진행이 됩니다. 그리고 보통 드라이브와 같은 곳은 파일의 저장소이고 RAM이 이 저장된 파일이 실행되는 곳이고 Processor가 그 과정을 총괄하는 것입니다.
실제 OS 를 로드(실행)하는 것은 Secondary Bootloader 이고 OS는 RAM 위에 로드되어 실행됩니다.
2. GRUB(GRand Unified Bootloader) 즉 포괄적인(Linux + Window) Boot Loader.
앞서 말했듯, 컴퓨터의 부팅 과정이란 하드웨어의 Control 권한을 옮기며 결국 파일이 RAM에 로드되어 실행 돠는 것인데 BIOS에서 Control을 드라이브로 넘겨줄 때 쓰이는 것이 부트로더입니다. 하나 추가하자면 BIOS 가 컴퓨터 하드웨어 검사를 끝내고 부팅이 될 때 PXE(Booting through Network) 또는 Drive itself(MBR)로 보통 부팅을 합니다. 이 설정은 바이오스 설정에서 부트오더에 따라 진행됩니다.
아무튼 컴퓨터가 드라이브로 부팅을 할 때 이 control 권한이 MBR로 넘어가 부트로더가 실행되는 것입니다. 그리고 이제 Linux 가 시작되면 Control 이 Kernel로 옮겨져 사용자가 사용이 가능한 상태가 됩니다.
그렇다면 부트로더가 손상되면 컴퓨터가 OS 자체로 부팅하지 못하게 되거나 Emergency Mode로 부팅이 될 수도 있습니다. 실제 이 부트로더를 재설치하는 Rescue Mode 의 경우가 빈번히 발생하기 때문에 이 부트로더의 Recovery 과정을 이해하는 것도 컴퓨터를 이해하는데 큰 도움을 줍니다.
CentOS
A corrupted Grub boot loader makes a CentOS/RHEL system unable to boot and transfer the control further to Linux kernel.
Let it boot to CentOS ISO image in rescue mode or using other boot loading methods and reinstall the MBR GRUB boot loader.
The rescue program will inform you that your system has been mounted under /mnt/sysimage directory. Here, as the rescue program suggests, type chroot /mnt/sysimage in order to change Linux tree hierarchy from the ISO image to the mounted root partition under your disk.
After you’ve identified your machine hard disk, you can start installing the GRUB boot loader by issuing the below commands.
ls /sbin | grep grub2 #Identify GRUB installation command
/sbin/grub2-insatll /dev/sda #install grub부트로더가 망가지면 OS가 Mergency Mode로 들어가거나 아예 그쪽으로 부팅이 안 될 수도 있습니다. 그렇다면 새로운 Bootable Device(CD, USB) 에 inital OS를 설치하여 서버를 그쪽으로 부팅시켜줍니다(DHCP 서버가 있다면 PXE Boot을 통해 그쪽으로 부팅하여 OS installation file을 전송받아 RAM 에 로드시키는 방식으로도 가능합니다).
그리고 Primary Disk(Where OS is located) 를 이 OS 에 마운트하여 GRUB을 재설치 해주는 방식입니다.
이렇게 부팅과정을 이해할 수 있다면 그와 관련된 프로세스도 이해하기 쉬워질 것입니다. 이곳에 있는 link들도 한번씩 보면 더 디테일한 부분까지 이해할 수 있을 것이며(특히 IBM Material) 혹시 해석이 안되는 부분이 있다면 질문 남겨주시면 대답해 드리겠습니다.