}

블로그 소개


*여러분들의 따듯한 댓글은 5%, 팔로우는 10% 블로그 포스팅 속도와 퀄리티를 높여줍니다.*

프로필

팔로우 해주시면 포스트할 때 큰 힘이 됩니다!!! 사실 저도 이 팔로우가 무슨 기능이 있는지는 모르겠습니다만, 팔로우 수가 늘면 '날 응원해주는 사람들이 있구나' 생각이 들어서 큰 힘이 됩니다.

팔로어

다른 페이지로 이동


리눅스 독학 페이지 운영체제 독학 페이지 네트워크 독학 페이지 시스템 해킹 하드웨어 독학 페이지 프로그래밍 독학 페이지 보안 페이지

오스 페이지 다이어트 정보 페이지 게임 정보 페이지 인생 꿀팁


****사진을 클릭하시면 페이지로 이동할 수 있습니다!****

<===***===↓↓↓You can use translate using chrome ↓↓↓===***===>

2020년 4월 29일 수요일

부트로더 부트스트랩, 부팅 과정, 펌웨어, BIOS, POST, MBR 자세히!

안녕하세요~ 마무입니다. 오늘은 "부팅이란"과 "ROM이란", "펌웨어란", "BIOS란", "POST란", "MBR이란", "부트로더 부트스트랩", "boot order priorities"에 대해서 포스트를 할 겁니다.


--목차--

1. 컴퓨터 부팅 과정을 그림으로 

2. 부팅과정의 용어들 설명 
i) ROM(Read Only Memory) 
ii) 펌웨어(firmware)란 
iii) BIOS(Basic Input/Output System)란
iv) POST(Power On Self Test)란
v) 부팅매체 선택과 Boot order Priorities
vi) MBR(Mater Boot Record)이란
vii) 부트로더(bootloader)란
viii) 부트스트랩(Bootstrap)란
--------

여기서 못 찾은 정보는
리눅스 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_13.html
운영체제 독학 페이지 : https://mamu2830.blogspot.com/p/blog-page_14.html
유용한 컴퓨터 정보 페이지 : https://mamu2830.blogspot.com/p/blog-page_50.html

에서 찾아보세요!




1. 컴퓨터 부팅 과정


자 제일 먼저 리눅스든 윈도우든 상관없는 공통적인 보통 PC(Personal Computer)의 부팅과정전체적으로 한번 그림으로 보신다음, 목차 "2"에서 각 용어들을 설명해드리겠습니다.

그림을 한번 쭈욱 보신다음, 2의 설명을 읽으시고 다시 이 그림으로 돌아와 보시면
머릿속에 착착 정보가 저장되실 겁니다!!


부팅과정 1단계 : 컴퓨터의 전원버튼을 누르면 메인보드에 전력이 들어오며, 메인보드에 부착된 장치들에게 전력이 공급됩니다.




부팅과정 2단계:

"CPU"가 "ROM(Read-Only Memory)"에 저장된 "펌웨어(Firmware)"인 "BIOS(Basic Input/Output System)"를 실행시킵니다.




부팅과정 3단계 : 

실행된 "BIOS""POST(Power On Self Test)"라는 주변 하드웨어 체크를 합니다. 




부팅과정 4단계 :

"부팅매체"를 선택하고 부팅매체의 "MBR"에 저장된 부팅정보를 읽어오는 "부트스트랩(Bootstrap)"을 실행합니다.





부팅과정 5단계 :


"부트스트랩(BootStrap)"과정으로 RAM에 "부트로더(Bootloader)"가 올라가고,
"부트로더"는 디스크에 있는 OS(커널) 코드를 복사해 메모리에 붙여서 OS를 실행합니다.






부팅 과정 6단계 :

성공적으로 OS가 부팅이 됐습니다.





자 여기까지가 보통 컴퓨터들의 공통된 부팅 과정이였습니다.

이제 각각에서 사용된 용어들에 대해서 설명을 하겠습니다.



2. 부팅과정의 용어들 설명 




i)ROM(Read Only Memory)이란 


"ROM(Read-Only Memory)"란 메인보드(마더보드)에 부착돼 있는, 이름 그대로 오직 
읽기(Read)만 가능한 메모리를 말합니다. 또한 전력 공급이 끊겨도 저장된 데이터가 사라지지 않죠



(출처 : http://www.ilovepcbang.com/news/articleView.html?idxno=15724)

"ROM" 위에 표시한 것처럼 생겼습니다.
뭔가 하얀 다리가 달린 검은색 벌레처럼? 생겼죠(ROM이 벌레라니! 사과해!)

위 사진을 보시면 "M_BIOS"와 "B_BIOS"가 있죠? "M_BIOS" "Main BIOS"로 저희들이 실질적으로 사용하는 BIOS가 저장된 "ROM"이고, "B_BIOS"란 "Backup BIOS"로 "메인 BIOS가 저장된 ROM"이 맛탱이가 갔을 때  백업하기 위해 존재하는 ROM입니다.

그에 반해 기존의 저희가 말하는 "메모리"란




보통 이렇게 생긴 "RAM(Random Acess Memory)"를 말하는 것으로 이 "RAM"은 자유롭게 아무곳이든 메모리 공간에 데이터를 올리고, 지우고(Read and write)가 가능하지만, 전력공급이 끊기면 데이터가 모두 사라지는 휘발성 메모리입니다.

컴퓨터의 연산을 담당하는 "CPU"가 데이터를 연산하려면 작업공간인 "메모리"가 필요합니다만, "RAM"전원이 꺼지면 데이터가 싹다 사라져서 아무것도 없잖습니까?

그래서 전원이 꺼져도 데이터가 남아있는 메모리인 "ROM"에 부팅에 필요한 프로그램들을 저장하는 겁니다.

이처럼 저희들이 주로 메모리(Memory)라고 부르던 것이, 사실 "ROM"과 "RAM"이 둘다 칭하는 말이기 때문에, 앞으론 메모리라 표현하기 보단 "RAM"또는 "RAM 메모리" 또는 "ROM" 이렇게 정확히 구분해 표현하는 게 더 좋은 습관입니다.




ii) 펌웨어(firmware)란 


"펌웨어(Firmware)"란 소프트웨어, 하드웨어과 같은 맥락으로 만들어진 단어입니다.

유저의 마음대로 언제든지 바꾸며 유동적(soft)으로 사용가능한 프로그램 제품(ware)이란 뜻으로 "소프트웨어(Software)"라고 하는 것처럼

한번 만들어 놓으면 바꿀 수 없게 고정된(Firm) 프로그램 제품(ware)라는 뜻으로, "유저 마음대로 변경이 불가능한 프로그램"을 "펌웨어(firmware)"라고 합니다.

이렇게 유저 마음대로 변경이 불가능한 프로그램인 "펌웨어"에는 대표적으로 "BIOS"
있습니다.

그리고 보통 이런 "펌웨어"들은 주로 "ROM"과 같은 비휘발성(전력이 끊겨도 데이터가 사라지지 않는)메모리에 저장해 사용합니다.




iii) BIOS(Basic Input/Output System)란 


"BIOS(Basic Input/Output System)"는 하드웨어, 그리니까 실제 컴퓨터 부품과 장치들의
입력(Input)과 출력(Output)을 조절하는 소프트웨어입니다.

그래서 실제로 운영체제가 컴퓨터 하드웨어의 입출력을 컨트롤 하고 싶을 땐 펌웨어인 BIOS를 통해서 컨트롤하는 것입니다.

간단히 보면 컴퓨터부품(Hardware) <-> BIOS(펌웨어) <-> 운영체제(OS)이런 구조라고 할 수 있죠!





iv) POST(Power On Self Test)란 


"POST(Power On Self Test)""BIOS"가 컴퓨터를 킬 때(Power on) 문제가 있나 
자가검사(Self Test)를 하는 것을 말합니다.

한 10년 전 정도 윈도우 XP를 사용하던 시절, 다들 컴퓨터를 킬 때 -삡- 소리와 함께




이런 화면이 뜨셨던 걸 보신 적이 있으실 겁니다.

이 화면이 바로 "ROM"에 저장된 "BIOS""POST(Power On Self Test)"하는 과정입니다.
컴퓨터의 각 하드웨어들이 문제 없이 잘 작동되나 테스트 하는 과정이였던 것이죠.

참고로 요즘 "UEFI BIOS"를 사용하는 컴퓨터들은 이 POST 과정이 보이지 않는 경우가
있습니다.




v) 부팅매체 선택과 Boot order priorities 


"BIOS"는 POST과정이 끝난면 부팅 매체를 선택하는데요,
"부팅매체(Booting media)"란 부팅(booting, 운영체제를 메모리에 올리는 행위)를 
하게 해주는 매체(수단) 의미합니다.

여기서 "부팅 매체"란 것은 말 그대로 부팅매체가 될 수 있는 것들로 "USB, 하드디스크, SSD 같은 것들"을 말하는 겁니다.

"BIOS"는 부팅매체를 찾을 때 보통




이렇게 설정된 "BOOT ORDER Priorities(부팅 우선 순위 순서)"에 따라서
부팅 매체를 찾습니다. 

위 사진의 경우, "Boot Option #1"은 "USB Hard Disk"라고 되어 있죠? 저건
컴퓨터가 켜질 때 제일 먼저 USB가 꽂혀있나 확인하고, "USB"내에 부팅 관련 데이터가 있을 시 그 부팅 데이터를 먼저 읽겠다는 겁니다.

그래서 만약 "USB"에 운영체제 설치 프로그램이나 포맷 프로그램 같은 것이 있다면USB내 프로그램을 먼저 읽는 것이죠.

이렇게 "USB"가 기존 디스크보다 더 우선순위가 높아야지, 여러분들의 컴퓨터가 안 켜지는 불상사가 발생했을 때 USB를 이용해 포맷을 할 수 있습니다.

그다음 "Boot Option #2"엔 "Hard DIsk:windows Boo..."라고 뜨는데 저게 바로 자신의 컴퓨터에서 사용중인 부팅 데이터와 운영체제가 들어있는 디스크죠.

여기까지 부팅 매체를 선택했으면, 그 부팅 매체에 있는 "MBR"의 정보를 읽습니다.




vi) MBR(Mater Boot Record)이란 


모든 기억장치(USB, 디스크 등)는 첫 번째 섹터(512바이트)에 "MBR(Master Boot Record)"란 영역을 갖고 있습니다. 

"MBR"이란 기억 공간 첫 번째 섹터(512바이트)에는 "리눅스 마운트" 포스터에서 파티션을 만들 때 나온 "Primary partition(주 파티션)"에 대한 정보 4개를 기록할 수 있는 64바이트 공간 디스크에 있는 운영체제(커널) 코드를 복사해서 메모리 올려주는 "부트 로더(Boot loader)"가 저장되어 있습니다.

현재 저희 삶에서 컴퓨터를 사용하는 것의 시작은 "운영체제"를 메모리에 올리는 것과 마찬가지죠? 왜냐면 운영체제 없이 컴퓨터를 사용하는 건 거의 불가능에 가까우니까 말이죠.

그래서 이렇게 중요한 "운영체제를 메모리에 올리는 것"을 뭔갈 시작하려면 신발부터 신어야 한다는 뉘앙스로 부츠 신발할 때의 "부트(Boot)"라고 하게 되었고

"부트를 하는 과정""부팅(Booting)"이라고 하게 됐습니다.




vii) 부트로더(Bootloader)란 


"부트로더(Bootloader)" "부트(운영체제)""로더(메모리에 올려주는 놈)"이란 뜻으로
"Bootloader"라고 불리는 프로그램입니다.

당연히 운영체제를 메모리에 올려야 하는 것이니 매우 중요한 프로그램으로, 모든 운영체제들이 각각 자기들만의 부트로더를 기본적으로 가지고 있습니다.

그래서 저희들이 윈도우든 리눅스든 맥OS든 운영체제를 깔면 자동으로 부트로더도 깔리기에 그 존재를 몰랐던 것이죠.

참고로 저희 리눅스에서는 "GRUB2"라는 부트로더를 사용합니다만 이 GRUB2는 나중에 차차 설명해드리겠습니다.




viii) 부트스트랩(Bootstrap)이란 


원래 "부트스트랩(Bootstrap)"이란



(출처 : http://skyvington.blogspot.com/2008/05/boot-story.html)

이걸 말합니다. 바로 부츠(Boot)를 신을 때 도와주는 줄이죠.

위와 같은 맥락으로, "부트스트랩(Bootstrap)" 또는 "부트스트랩 로더(Bootstrap loader)"
운영체제를 키는 부팅과정을 도와주는 "BIOS"나 "ROM"에 들어있는 "코드"입니다.

부팅과정을 도와준다는 점에서 "부트로더"랑 상당히 헷갈리는데요, 이렇게 생각하시면 됩니다.




위 그림처럼 "BIOS"가 디스크의 "MBR의 정보"를 읽고, "MBR의 부트로더를 메모리에 
올리는 과정"처럼 운영체제를 키는(부팅)과정을 도와주니 "부트스트랩(Bootstrap)"이고.

직접적으로 "운영체제를 메모리에 올리는(부팅)건 "loader(짐을 싣는 자)"가 하니
"부트로더(Bootloader)"라고 말이죠.




자 여기까지 끝나면 이후에 각 어떤 부트로더냐, 어떤 운영체제냐에 따라서 하는 행위가
달라집니다.

저희는 지금 리눅스 독학 포스트를 하고 있으니, 다음에는 리눅스의 부트로더인 "GRUB2"와
첫 번째 프로세스인 "init(initialization)"에 대해서 알아보겠습니다!

도움이 되셨다면 좋아요, 팔로우 클릭!! 따뜻한 댓글을 달아주시면 큰 도움이 됩니다!!

그럼 다음에 더 좋은 퀄리티 포스트로 찾아뵐게요!



댓글 23개:

  1. 그림까지 있어서 정말 알기쉬웠습니다. 마무님 설명은 정말 이해하기 쉽네요.

    답글삭제
    답글
    1. 제 노력이 도움이 돼 다행입니다 ㅠㅠ

      삭제
  2. 강좌 넘 좋내요 근데 부트스트랩할때 시스템을 전부 초기화한다고 들었는데 정확히 어느시점에 초기화가 진행되는 건가요?

    답글삭제
  3. 그리고 bios가 하는 일은 부트로더를 램에 올리는 걸로 끝인건가요?

    답글삭제
    답글

    1. 도움이 돼 다행입니다! 궁금해 하신 플래터 저장 위치와 BIOS의 많은 역할들은 "파일시스템 총 정리 포스트 : https://mamu2830.blogspot.com/2019/10/chs-lba.html"의 1~4까지를 읽어보시면 이해가 되실겁니다!

      삭제
  4. 정말 도움이 많이 되었습니다. 정확한 용어 분해 설명은 감동적이었습니다. 다른 글도 넘 좋넸요. 인터넷 글 중 가장 잘 설명된 글 같습니다.

    답글삭제
    답글
    1. 세상에... 너무 극찬을 해주셔서 너무 감동이네요 ㅠㅠ 도움이 돼 다행입니다!

      삭제
  5. 감사합니다. 이해하는데 정말 많은 도움이 되었습니다!!!

    답글삭제
  6. 좋은 글 감사합니다.

    궁금한 것이 있습니다. MBR을 설명하는 부분에서 "모든 기억장치(USB, 디스크 등)는 첫 번째 섹터(512바이트)에 "MBR(Master Boot Record)"란 영역을 갖고 있습니다." 라고 설명해주셨는데, 모든 기억장치에 MBR 영역이 있는게 맞나요?

    답글삭제
    답글
    1. 음... 제가 글을 쓸 당시에 '모든'이란 위험한 단어를 썼는데, 정확하게 말하면 당연히 모든 기억장치에 있는건 아닙니다. 예를 들어 옛날에 쓰던 플로피디스크 같이 '파티션'기능을 사용하지 않는 저장매체는 'MBR'이 없습니다. 또한 최근 컴퓨터들은 신형 BIOS인 "UEFI"를 사용하는데, 이 UEFI를 사용하려면 "MBR"이 아닌 'GPT(GUID Partition Table)'란 것을 사용해야하거든요.

      또한 약 2TB정도 되는 용량 제한이 있는 MBR에 반해서 'GPT"는 ZB(제타 바이트)까지 지원하는등, 말 그대로 GPT가 최신기술이기 때문에 요즘 컴퓨터들은 MBR을 GPT로 대체하고 있습니다. 물론 옛날 시스템과의 호환을 위해서 MBR과 GPT 둘다 가지고 있는 경우도 있습니다.

      삭제
  7. 부팅에 대한 이런 깊은 이해와 그 이해에서 나온 친절한 설명으로 저도 많은 시간 웹서핑에 공을 들였음에도 이 이상 좋은 글은 아직 못본것 같습니다. 감사합니다.

    답글삭제
    답글
    1. 노력을 알아주셔서 감사합니다! 도움이 돼 다행입니다!!!

      삭제
  8. 안녕하세요! 거의 모든 글을 정독해가고 있습니다... 양질의 글 감사합니다 ㅠㅠ

    정독하는 중에 궁금증이 생겨 여쭤보려고 합니다... 저는 ROM이 하드디스크와 같다고 생각을 했는데, 위의 그림을 보면 ROM과 디스크가 분리되어 있더라구요. 그림에서 디스크가 무엇을 의미하는것인지, ROM과 하드디스크는 명확히 다른 것인지 궁금합니다 ㅠㅠ... 너무 하찮은 질문 죄송합니다.

    답글삭제
    답글
    1. 음.. 일단 매우 간단히 설명해보자면
      우리가 사용하는 컴퓨터는 CPU라는 장치에서 대부분의 데이터 연산을 진행합니다.
      그리고 CPU에서 연산할 데이터는 우리가 RAM이라 부르는 메모리에서 읽어옵니다, 이 때 우리가 '주로' 사용하는 기억공간장치라고 해서 RAM을 '주기억장치'
      라고 합니다.

      하지만, 이 RAM(주기억장치)는 컴퓨터 전원이 꺼지면 가지고 있는 데이터가 모두 사라지는(휘발성) 특성을 가졌기에, 우리가 데이터를 저장할 장치가 따로 필요하게 됩니다.
      그것이 바로 우리가 컴퓨터에 장착해 사용하는 하드디스크나 SSD이며, 이러한 기억 공간을 '보조'로 사용한다고 하여 '보조 기억장치'라고 합니다.

      위에서 말했듯이 데이터의 저장은 보조기억장치인 하드디스크에 하기 때문에, 우리 컴퓨터에서 사용되는 필수 소프트웨어인 OS(운영체제)인 경우에도 하드디스크 C드라이브에 저장돼 있습니다.

      자 여기서 제 포스트에서 ROM을 설명한 부분으로 돌아가는데요, 기본적으로 하드디스크에 저장된 운영체제를 꺼내서 메모리에 올려주는 프로그램이란 것도 필요하지 않겠습니까? 우리가 컴퓨터를 사용하게 해주는 운영체제라는 것도, 결국 실행되서 메모리에 올라가야지!! 비로소 우리가 사용할 수 있는 것이니까요.

      하지만, RAM(주기억장치)는 휘발성 기억장치라 부팅직후 아~무것도 없습니다.
      그렇기에 ROM이란 특별한 기억장치를 따로 두어서, 그 장치에 운영체제가 실행되기 전에 필요한 작업을 할 프로그램을 둔 것입니다.(BIOS등등)

      다시 정리하자면
      디스크 : 우리가 아는 거의 모~~든 데이터를 저장해두는 보조기억공간
      ROM : 맨 처음 부팅 후 하드디스크와 RAM을 사용할 수 없을 때를 위해 사용하는 기억공간(주로 BIOS와 같은 프로그램을 저장)
      입니다.


      삭제
  9. vi) MBR(Mater Boot Record)이란
    마스터 오타요!

    잘 배웠습니당

    답글삭제
    답글
    1. 오타를 발견할 정도로 꼼꼼히 읽어주셔서 감사합니다! 도움이 돼 다행입니다!
      아쉽게도.. 구글 블로그는 포스트 수정을 하면 검색 순위가 내려가는 단점이 있기에, 포스트 수정을 할 만큼
      잘못된 정보나 오타가 쌓이면 수정을 하는편입니다 ㅠㅠ 바로 오타 수정을 못해 죄송합니다.

      삭제
  10. 책으로만 공부하기에는 헷갈리는게 많았는데 다 이해되네요 감사합니다!

    답글삭제
    답글
    1. 도움이 돼 다행입니다!! 따뜻한 댓글 감사해요~

      삭제
  11. 설명을 너무 잘하시네요. 저도 닮고 싶네요

    답글삭제
    답글
    1. 과분한 칭찬입니다 ㅎㅎ.. 도움이 돼 정말 다행입니다!

      삭제
  12. 마무님 글을 읽으면서 컴퓨터와 친해지는 기분이 듭니다 ㅎㅎ

    답글삭제
    답글
    1. ㅋㅋㅋㅋㅋ 컴퓨터와 친해져야죠!! 도움이 돼 다행입니다!!

      삭제

#1 여러분들이 소중한 시간을 투자해 달아주시는 따뜻한 댓글들은 저에게 정말 큰 힘이 됩니다!

#2 저의 각 포스트들은 엄청난 노력과 시간 투자를 통해 만들어진 포스트들로, 무단 복제나 모방하는 것을 금지합니다.

#3 저의 포스트에도 틀린 정보가 있을 수도 있습니다. 그럴 경우 친절한 말투로 근거와 함께 댓글로 달아주시면 정말 감사하겠습니다!