본문 바로가기

Cloud/Server

[Server] 펌웨어의 개념 (Feat. BIOS/UEFI)

펌웨어 (Firmware)

하드웨어의 기본적인 구동 및 제어를 담당하는 특수 용도의 소프트웨어.

소프트웨어라고는 하지만 보통 하드웨어 엔지니어가 도맡아 지원한다.

 

 

 

 

Q1. 소프트웨어면 소프트웨어지, 헷갈리게 왜 펌웨어라고 칭할까?

일반적인 소프트웨어(OS, Application 등)는 RAM에서 구동된다.

펌웨어는 영구적인 명령어와 데이터로 이루어져 있으므로, 제조 단계에서 ROM(혹은 PROM)에 기록된다.

 

즉, 내용이 날아가면 안되고 사용자가 특별한 프로그램이나 기계 도움없이는 수정이 불가능하다.

우리가 아는 소프트웨어와 확실한 차이가 있고 구분되어야 한다.

 

 

 

Q2. 정확히 어떤 역할을 하는걸까?

서버는 서로 다른 역할이 있는 여러 장치들로 구성된다.

펌웨어는 이 장치들이 각자 기능을 수행하기 위해 필요한 최소한의 프로그램이다.

 

새로운 소프트웨어나 버전이 나오면 하드웨어도 그 기능에 맞춘 논리회로가 필요한데,

매번 물리적으로 제조하려면 시간 낭비가 크기 때문에 논리적으로 기능을 보강하거나 대신해주는 프로그램이 펌웨어다.

즉 펌웨어는 하드웨어의 일부분이며, 없으면 장치가 정상 동작하지 못하게 된다.

 

이처럼 역할은 하드웨어와 가깝고, 형태는 소프트웨어와 가까워서 둘의 중간 개념으로 불린다.

 

 

 

Q3. 그럼 펌웨어만 있으면 하드웨어는 알아서 동작하는건가?

펌웨어도 버전이 있고, 요구되는 버전으로 올려야 한다.

소프트웨어의 버전이 올라가면, 펌웨어도 하드웨어 업체에서 제공하는 소프트웨어를 통해 업데이트 할 수 있다.

 

반드시 최신 버전을 유지할 필요는 없지만, 왠만하면 최신 버전을 유지하는게 많은 업체의 권장사항이다.

- 애플워치를 장착했는데 인식이 안될 때, 애플에서 가이드하는 것 중 하나도 펌웨어 업데이트다.

 

보통 업데이트하면 재부팅이 필요하므로 서버 입장에서는 사실 맘 먹고 작업을 잡아야 한다.

그리고, 장치 드라이버도 필요하다.

 

 

 

Q4. 장치 드라이버란?

운영체제가 RAM에서 구동되는 것처럼, 펌웨어를 구동시켜주는 것이 장치 드라이버(Device Driver)다.

 

장치 드라이버(Device Driver)가 없거나 버전이 맞지 않으면, 운영체제에서 장치가 인식되지 않을 수 있다.

한마디로, 하드웨어 장치와 운영체제 사이의 매개체라고 보면 된다.

 

ex. 새 컴퓨터에 Windows를 설치했는데, 랜 카드 인식이 제대로 되지 않는다면?

랜카드 제조사 홈페이지에서 드라이버를 다운받아 설치해줘야 한다.

 

 

Windows의 장치 관리자에서 드라이버를 볼 수 있다.

 

 

 

운영체제가 주변장치를 인식하는 레이어

 

 


BIOS (Basic Input/Output Systemㆍ기본 입출력 시스템)

 

펌웨어의 대표적인 예시가 바로 BIOS다.

 

서버 뿐 아니라 우리가 흔히 집에서 사용하는 데스크탑, 노트북에도 모두 BIOS가 있다.

보통 전원 기동하자마자 [F2]를 빠르게 여러번 누르면 진입된다. 즉, 부팅 과정에서만 들어갈 수 있다.

- F2] 키가 아닌 경우도 있는데, 서버 부팅 때 어떤 키인지 뜬다.

 

 

BIOS 자체도 펌웨어이지만,

하드웨어에 연결된 주변장치(NIC, FC 케이블 등)의 펌웨어도 BIOS에서 조회하거나 업데이트할 수 있다.

 

요즘엔 종종 펌웨어도 OS 레벨에서 확인하거나 업데이트하는 경우가 있는데, 가장 정확한건 BIOS 레벨에서의 수행이라는 것 !

주요 기능은 아래와 같다.

 

 

 

 

01. 하드웨어 진단

하드웨어 부팅 과정에서 자세하게 설명한 적이 있다. (https://smallrich.tistory.com/76)

 

BIOS에는 POST (Power-on Self Test)라는 하드웨어 진단 루틴이 담겨 있는데,

부팅 시 하드웨어 및 주변장치가 정상인지 빠르게 검사를 수행한다.

 

비정상이라면 당연히 부팅이 되지 않는다.

 

 

 

02. 날짜 및 시간 설정

하드웨어에 이상이 생기면, 운영자 혹은 엔지니어는 원인을 파악해야 한다.

 

문제가 발생한 시점이 불분명하면 혼동이 생길 수 있으므로, 날짜와 시간을 정확히 설정해두는건 필수요소이다.

 

 

 

03. Boot Mode 전환

Boot Mode는 2가지가 있다.

 

 1) Legacy BIOS

 - 오래된 유틸리티로, 최신 PC나 서버와는 호환이 어려운 경우가 많다.

 - 드라이브가 MBR 파티션 형식으로 인식되기 때문에, 2TB 이상의 드라이브에서 OS 부팅이 불가능하다.

 

 2) UEFI (Unified Extensible Firmware Interface)

 - Legacy BIOS를 대체하는 최신 표준 Boot Mode 방식

 - 드라이브가 GPT 파티션 형식으로 인식되어 2TB 이상의 드라이브에서도 OS 부팅이 가능하다.

 - 하드웨어 진단 과정을 생략한 FastBoot

 - 보안 향상된 Secure Boot

 - 직관적인 GUI 제공

 

 

※ 요즘은 대부분이 UEFI를 사용한다고 보면 된다. 혼동스럽지만, 위에 설명한 BIOS도 이제는 UEFI라고 부르는게 맞다.

그리고 Boot Mode는 도중에 전환하는 것이 아닌 OS 설치 전에 설정해줘야 한다.

 

 

 

04. Boot Order 설정

보통 OS 설치 전에 설정한다. 

원하는 부팅 디바이스에 우선을 두어 부팅 순서를 지정해줄 수 있다.

 

ex. 포맷이 하고 싶다면?

이미 Windows가 설치된 디스크로 부팅되지 않도록, Windows 설치된 USB로 부팅 순서를 바꿔줄 수 있다.

 

 

 

05. 장치 기능 On/Off

CPU의 Hyperthreading이나 하드웨어 전원 기능 관련 설정 등,

장치의 기능을 On/Off 처리할 수있다.

 

 

 

 

이처럼 BIOS (UEFI)는 보통 OS 설치 전에 기본으로 하드웨어 엔지니어가 설정해주는 구간이라고 생각하면 된다.

 

 

 

 

 

 


 

펌웨어 전문 인력이 아닌, IT 운영직무를 수행하다가 이것저것 경험하고 찾으며 정리한 포스팅이므로

 

내용 지적할게 있다면 언제든 환영입네다^ㅡ^