본문 바로가기
프로그래밍/IT지식

펌웨어(Firmware)

by 준보틱스 2024. 6. 23.

펌웨어

펌웨어는 컴퓨팅과 공학 분야에서 특정 하드웨어 장치에 포함된 소프트웨어로, 소프트웨어를 읽어 실행하거나 수정하는 것도 가능한 영구적 소프트웨어를 뜻한다.
출처 : 위키백과

 

펌웨어는 하드웨어의 기본적인 구동 및 제어를 담당하는 특수 용도의 소프트웨어를 말한다. 소프트웨어라고 하지만 보통 하드웨어 엔지니어가 도맡아 지원한다.

펌웨어와 소프트웨어

위키백과에서 펌웨어는 소프트웨어라고 정의했다. 여기서 처음 들었던 의문점은 "소프트웨어면 소프트웨어지 왜 굳이 펌웨어라는 명칭을 사용할까" 였다.

  • 일반적인 소프트웨어(OS, Application 등)는 RAM에서 구동된다.
  • 펌웨어는 영구적인 명령어와 데이터로 이루어져 있으므로, 제조단계에서 ROM(혹은 PROM)에 기록된다.

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

펌웨어 역할

서버에는 서로 다른 역할이 있는 여러 장치들로 구성된다. 펌웨어는 이 장치들이 각자 기능을 수행하기 위해 필요한 최소한의 프로그램이다.

새로운 소프트웨어나 버전이 나오면 하드웨어도 그 기능에 맞춘 논리회로가 필요한데, 매번 물리적으로 제조하려면 시간 낭비가 크기 때문에 논리적으로 기능을 보강하거나 대신해주는 프로그램이 펌웨어다. 즉 펌웨어는 하드웨어의 일부분이며, 없으면 장치가 정상 동작하지 못하게 된다.

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

하지만 펌웨도 버전이 있고 요구되는 버전으로 올려야 한다. 소프트웨어의 버전이 올라가면, 펌웨어도 하드웨어 업체에서 제공하는 소프트웨어를 통해 업데이트 할 수 있다.

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

장치 드라이버

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

장치 드라이버가 없거나 버전이 맞지 않으면, 운영체제에서 장치가 인식되지 않을 수 있다. 한마디로, 하드웨어 장치와 운영체제 사이의 매개체라고 보면 된다.

펌웨어 대표적인 예시 - BIOS

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

서버 뿐만 아니라 우리가 흔히 사용하는 데스크탑, 노트북에도 모두 BIOS가 있다. 부팅 과정에서만 들어갈 수 있다.

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

BIOS 기능

(1) 하드웨어 진단

BIOS에는 POST(Power-on Self Test)라는 하드웨어 진단 루틴이 담겨 있는데, 부팅 시 하드웨어 및 주변장치가 정상인지 빠르게 검사를 수행한다.

(2) 날짜 및 시간 설정

BIOS에서 날짜 및 시간을 설정할 수 있다. 엔지니어는 하드웨어에 문제가 발생하면 발생한 시점을 확인하고 해결을 해야한다. 그렇기에 날짜와 시간을 정확히 설정해두는건 필수요소이다.

(3) Boot Mode 전환

  • Legacy BIOS

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

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

  • UEFI(Unified Extensible Firmware Interface)

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

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

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

- 보안 향상된 Secure Boot

- 직관적인 GUI 제공

(4) Boot Order 설정

보통 OS 설치 전에 설정하는데, 원하는 부팅 디바이스에 우선을 두어 부팅 순서를 지정해줄 수 있다. 대부분 멀티부팅 설정 시 많이 사용한다.

(5) 장치 기능 ON/OFF

CPU의 Hyperthreading이나 하드웨어 전원 기능 관련 설정 등 장치의 기능을 ON/OFF 할 수 있다.