Linuxbootprocess

  • 18 trang
  • file .pdf
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN MẠNG MÁY TÍNH & TRUYỀN THÔNG
Tiến trình khởi động Linux
Trình bày: TS. NGÔ BÁ HÙNG
Email: [email protected]
Tiến trình khởi động Linux
Khởi động (booting)
• Là tiến trình nạp các chương trình mồi
(bootstrapping) để khởi động một hệ điều hành khi
người dùng bật/khởi động lại một máy tính
• Bao gồm một chuỗi các thao tác mà máy tính phải
thực hiện để nạp một hệ điều hành khi máy tính
được bật hoặc khởi động lại
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 2
Tiến trình khởi động Linux
Tiến trình khởi động máy tính
1. Bật máy tính
2. CPU nhảy đến địa chỉ của BIOS (0xFFFF0)
3. BIOS chạy chương trình POST (Power-On Self Test)
4. BIOS tìm các thiết bị có thể khởi động
5. Nạp và thực thi chương trình khởi động chứa trong cung
khởi động (boot sector), đối với đĩa cứng là MBR (Master
Boot Record)
6. Nạp hệ điều hành
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 3
Tiến trình khởi động Linux
Tiến trình khởi động Linux
• Các chương trình liên quan trong tiến trình khởi
động
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 4
Tiến trình khởi động Linux
BIOS (Basic Input/Output System)
• Là chương trình được nạp sẵn trong một EEPROM
(Electrically Erasable Programmable ROM) trên
mainboard máy tính
• Được thực thi đầu tiên khi khởi động máy tính
• Nhận tham số thông qua giao diện CMOS
BIOS on board BIOS on screen
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 5
Tiến trình khởi động Linux
BIOS (Basic Input/Output System)
• Thực hiện 4 chức năng chính

Thực hiện quá trình tự kiểm tra (POST) để xem các
thiết bị thiết yếu nhất có trong trạng thái sẵn sàng sử
dụng không

Các thiết bị ngoại vi được khởi động

Tìm hệ điều hành trên các phương tiện lưu trữ vào
cấu hình được thiết đặt trong CMOS

Khi đã tìm thấy một cung khởi động (boot sector)
hợp lệ, copy nó vào RAM và thực thi
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 6
Tiến trình khởi động Linux
MBR (Master Boot Record)
• Là cung đầu tiên trên đĩa cứng (sector 1 cylinder 0,
head 0)
• Có kích thước 512 bytes
• Chứa bộ nạp chương trình khởi động (Boot loader)
• Được nạp vào RAM bởi BIOS và sau đó chiếm quyền
điều khiển máy tính
• Có thể xem trên Linux bằng các lệnh

dd if=/dev/hda of=mbr.bin bs=512 count=1

od -xa mbr.bin
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 7
Tiến trình khởi động Linux
MBR (Master Boot Record)
0xAA55
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 8
Tiến trình khởi động Linux
Boot loader
• Là chương trình chứa trong MBR để nạp kernel của
một hệ điều hành điều khiển máy tính
• Có nhiều Boot loader

MS-DOS boot loader: mặc định trên các đĩa
cứng

GRUB và LILO: dùng phổ biến cho các máy Linux

NTLDR: Windows NT, 2000, ...

Bootman, NTLDR, XOSL , BootX ,loadlin, Gujin,
Boot Camp, Syslinux, GAG ,...
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 9
Tiến trình khởi động Linux
GRUB: GRand Unified Bootloader
• Một bộ nạp hệ điều hành chuẩn độc lập hệ điều hành
• Gói phần mềm khởi động đa hệ điều hành phát hành
từ dự án GNU
• Giao diện dòng lệnh linh hoạt
• Truy cập được nhiều hệ thống tập tin
• Hỗ trợ nhiều dạng tập tin thực thi
• Hỗ trợ hệ thống không đĩa cứng
• Tải hệ điều hành từ mạng
• ...
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 10
Tiến trình khởi động Linux
Tiến trình khởi động với GRUB
1. BIOS tìm thiết bị có thể khởi động (đĩa cứng) và chuyển quyền điều
khiển cho boot loader trong MBR
2. MBR chứa mã thực thi giai đoạn 1 của GRUB với nhiệm vụ load giai
đoạn kế tiếp (1,5) của GRUB
3. Giai đoạn 1,5 của GRUB nằm ở 30 kilobytes tiếp ngay sau MBR sẽ
nạp tiếp giai đoạn 2 của GRUB
4. Giai đoạn 2 của GRUB nhận điều khiển máy tính và hiển thị boot
menu để người dùng chọn hệ điều hành khởi động cho máy tính
5. GRUB nạp kernel của hệ điều hành được chọn (hoặc mặc định) và
chuyển quyền điều khiển máy tính cho hệ điều hành
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 11
Tiến trình khởi động Linux
Tập tin cấu hình của GRUB
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 12
Tiến trình khởi động Linux
Hạt nhân hệ điều hành (Kernel)
• Là thành phần cốt lõi nhất trong một hệ điều hành
• Quản lý tài nguyên trên máy tính và sự giao tiếp
giữa các thành phần phần mềm và phần cứng
• Được lưu trong bộ nhớ cho đến khi tắt máy
• Cần phải có kích thước nhỏ
• Được nén lại thành một tập tin ảnh (kernel image)

/boot/vmlinuz-2.6.x: Mount trên đĩa cứng

/boot/initrd.img-2.6.x: Mount trên RamDisk
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 13
Tiến trình khởi động Linux
Tiến trình khởi động của Kernel
• Khởi tạo các thiết bị ngoại vi
• Chuyển CPU từ Real mode sang Procected Mode
• Giải nén kernel
• Gọi thực thi hàm start_kernel() với PID =0
• Khởi động tiến trình đầu tiên init() với PID = 1
07/08/12 Ngô Bá Hùng - Khoa CNTT&TT - ĐH Cần Thơ 14