LabHub

LFCS — 리눅스 재단 시스템 관리자 · 실행 중인 시스템 운영 · 실습

부팅 흐름과 프로세스 시그널

LabHub 에서 이어서 보기

목표

부팅 단계와 GRUB·타깃 개념을 문서로 정리하고, /proc 을 직접 읽어 시스템 요약을 만들고, 백그라운드 프로세스에 시그널을 보내 상태 변화를 확인한다.

왜 중요한가

부팅이 실패했을 때 어디를 볼지는 "제어권이 어디까지 넘어갔는가" 로 결정된다. 화면에 아무것도 안 나오면 펌웨어와 부트로더 사이, 메뉴는 나오는데 커널 패닉이면 커널과 initramfs 사이, 로그인 프롬프트 직전에 멈추면 init 이후다. 그래서 순서를 외우는 것이 아니라 경계마다 무엇이 바뀌는지를 알아야 한다. 커널 파라미터를 GRUB 에 넣을 때도 일반 항목에만 적용할 것인지 복구 항목까지 적용할 것인지에 따라 지시어가 갈린다. 뒷부분의 시그널 실습은 앞 리딩의 상태 표를 손으로 확인하는 과정이다. 정지는 종료가 아니고, 시그널은 지정한 PID 에만 간다.

단계

1. /root/lfcs-boot/boot-order.txt 에 부팅 단계 네 개를 순서대로 한 줄씩 적으세요: firmware, bootloader, kernel, init.
2. /root/lfcs-boot/grub.defaultGRUB_TIMEOUT=5, GRUB_DEFAULT=0, GRUB_CMDLINE_LINUX_DEFAULT="quiet splash", GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0" 네 줄을 적으세요.
3. /proc/cmdline 의 내용을 그대로 /root/lfcs-boot/cmdline.txt 에 담으세요.
4. /root/lfcs-boot/sysinfo.txtkernel=<커널 릴리스>, memtotal_kb=<MemTotal 값>, swaptotal_kb=<SwapTotal 값> 세 줄을 적으세요. 값은 숫자만 적습니다.
5. /root/lfcs-boot/targets.txt 에 런레벨과 타깃의 대응을 네 줄로 적으세요: 0=poweroff.target, 1=rescue.target, 3=multi-user.target, 5=graphical.target.
6. sleep 4000 을 백그라운드로 띄워 그 PID 를 /root/lfcs-boot/stopped_pid.txt 에 적고, 그 프로세스에 정지 시그널을 보내세요. 그리고 /root/lfcs-boot/stopped.txtstate=<현재 상태 문자> 한 줄을 적으세요.
7. 두 번째 sleep 4000 을 띄워 그 PID 를 /root/lfcs-boot/term_pid.txt 에 적고, 그 프로세스에만 종료 시그널을 보내 없애세요. 그리고 /root/lfcs-boot/term.txtpid=<그 PID>alive=no 두 줄을 적으세요. 6단계에서 정지시킨 프로세스는 그대로 살아 있어야 합니다.

참고

단계 7개

  1. 부팅 단계 정리
  2. GRUB 기본 설정 파일
  3. 지금 커널이 받은 파라미터
  4. /proc 에서 시스템 요약 만들기
  5. 런레벨과 타깃 대응
  6. 프로세스 정지시키기
  7. 두 번째 프로세스만 종료하기