Nội dung bài học
Bài 4. Quản trị hệ thống
• Quá trình khởi động hệ thống. • Quản lý người dùng. • Hệ thống log files. • ….. Ngô Duy Hòa – KHMT - CNTT
Boot process
1. Quá trình khởi động
Các bước cụ thể
Power-up / Reset
• Máy tính bắt đầu khởi động, CPU thực
hiện chương trình ở địa chỉ 0xFFFF0 trong BIOS (Basic Input Output System).
• Nạp vào RAM code (cid:198)Kiểm tra các phần cứng • Nếu OK (cid:198) POST code bị đảy ra khỏi RAM.
– Runtime services:
• Đọc CMOS (cid:198) tìm ra boot device.
• Công việc chia làm 2 phần: – POST – Power On Self Test:
1
BIOS boot monitor
Boot Sector Floppy & HDD
• Runtime Services xác định được thiết bị khởi động: HDD, Floppy, CD-ROM,.. • Xác định MBR (Master Boot Record) của
thiết bị. – MBR – first sector : 512 Byte. – Địa chỉ: sector 1, cylinder 0, header 0. • Nạp MBR vào RAM (cid:198) BIOS trao quyền thực hiện cho MBR.
Master Boot Record
Master Boot Record
– BootLoader (446 bytes) chương trình mồi
gồm 2 phần: • Code chương trình: thực hiện việc tìm kiếm phân
vùng tích cực (để khởi động).
• Các thông báo lỗi (error message).
– Bảng phân vùng (64 bytes):
• 4 thành phần (16 bytes): lưu trữ thông tin về các
phân vùng chính (primary partition).
– Magic number: 0xAA55.
• MBR chứa 3 phần:
Cấu trúc các thành phần
Master Boot Record
– 1 phân vùng chính = 1 phân vùng mở rộng
(extended part.).
– Chia thành các phân vùng logic (logical Part.) • Sector đầu tiên của các phân vùng đều là boot sector (cid:198) có thể cài OS trong phân vùng bất kỳ.
• Chỉ có 4 phân vùng chính (primary Part.). • Nếu cần nhiều hơn 4 phân vùng:
2
Extended Partition
Stage 1 bootloader
• Xác định phân vùng tích cực thông qua boot flag.
– Nạp boot sector của phân vùng khởi động vào RAM (cid:198) trao quyền điều khiển cho chương trình boot sector.
– Bắt đầu giai đoạn thứ 2 (stage 2 bootloader)
• Nếu không tồn tại (cid:198) thông báo lỗi. • Sau khi xác định được:
Stage 2 bootloader
LILO
• Linux Loader là chương trình truyền thống của Linux hỗ trợ khởi động hệ thống với nhiều dạng HĐH khác nhau. • Nhiệm vụ chính của giai đoạn này là: – Nạp nhân HĐH (Linux kernel) vào RAM. – Nạp RamDisk vào RAM. • LILO có kích thước >> 512 byte (cid:198) được • Có sự khác biệt giữa các chương trình
• Có thể nằm ở MBR • Có thể nằm ở phân vùng cài Linux.
chia làm 2 giai đoạn: – Stage 1 (như đã nói phần trước):
– Stage 2 : nạp nhân HĐH
BootLoader: – LILO : Linux Loader – GRUB : GRand Unified Bootloader.
Các bước LILO thực hiện
File cấu hình LILO
• Cấu hình LILO: /etc/lilo.conf
– Stage 1 thực hiện và in chữ L. – Stage 1 nạp mã lệnh của Stage 2 vào RAM
và in chữ I.
– Stage 2 bắt đầu thực hiện và in chữ L. – Cửa sổ gõ lệnh xuất hiện. Thực hiện lệnh lilo để truy cập đến map-file, là file xác định các nhân HĐH.
• boot: boot device • map: map-file • install: chứa bootstrap code - chương trình mồi khởi động OS • image: kernel image
– Khi map-file được nạp hoàn toàn vào RAM (cid:198)
hiển thị ký tự cuối cùng O.
• Thực hiện và in ký tự ra màn hình:
3
Nhược điểm LILO
GRUB
• Giải quyết vấn đề của LILO bằng cách trong
• LILO đọc map-file để xác định vị trí vật lý các
nhân OS.
stage 2 chia ra hai phần: – Stage 1.5: xác định kiểu file system của phân vùng
chứa nhân OS.
• Nếu kernel hoặc ổ đĩa có 1 sự thay đổi nào đó (cid:198) map-file thay đổi (cid:198) phải tạo lại map-file.
– Stage 2: nạp nhân OS vào RAM.
Cấu hình GRUB
Chạy GRUB bằng tay
• File cấu hình: /etc/grub/grub.conf
Ví dụ
Kernel stage
• Khi màn hình hiển thị dòng chữ GRUB thì ấn C
– zImage : dạng nén với kích thước < 512KB. – bImage : dạng nén với kích thước > 512KB. • Gọi một số lệnh đặc biệt (cid:198) chia thành các chế độ làm việc riêng: user & kernel mode.
• Kernel image được nạp vào RAM (cid:198) quyền điều khiển chuyển đến kernel img. • Kernel image là dạng file nén:
để chạy chế độ dòng lệnh. – Lệnh kernel xác định kernel image. – Lệnh initrd xác định ramdisk. – Lệnh boot nạp kernel image (cid:198) khởi động hệ thống.
• Thực hiện giải nén kernel image.
4
Sơ đồ các bước thực hiện
Linux 2.6 kernel image
Sơ đồ các bước thực hiện
Vai trò RAMdisk
• Startup_32() : swapper - process 0:
– Giải nén kernel image. – Khởi tạo bảng trang trong bộ nhớ (page tables,
memory tables) – Xác định kiểu CPU.
• Startup_kernel():
– Thiết lập hệ thống ngắt (interrupt). – Nạp RAMdisk vào hệ thống.
• Init process 1: tiến trình người dùng đầu tiên.
• Tạo một file system tạm thời trong RAM. • Cho phép hệ thống khởi động mà không cần làm việc trực tiếp với ổ cứng. • Chứa một số các modules cần thiết làm việc với các thiết bị phần cứng.
• Sau khi kernel boot (cid:198) file system tạm bị đẩy ra ngoài, thay vào đó là file system thực của OS.
Cây thư mục trong RAMdisk
Init process
• Hệ thống khởi động và được cấu hình làm việc ở các mức khác nhau: runlevel. • Init là tiến trình người dùng đầu tiên luôn có PID = 1. • Init đọc cấu hình từ file /etc/inittab để khởi động các dịch vụ cần thiết. • Mỗi một mức làm việc có một tập các dịch vụ cụ thể tương ứng.
5
Runlevel
Runlevel
– Xác định mức làm việc hiện tại: runlevel. – Chuyển sang mức khác : init N
• Một số lệnh làm việc:
• Chú ý đến mức 0 và mức 6 là các mức dùng để tắt hay khởi động lại máy.
• Để tắt hay khởi động lại có thể sử dụng 1 số lệnh: shutdown, reboot, halt, poweroff
Shutdown option
halt/reboot/poweroff option
Cấu hình /etc/inittab
• Các dòng có cấu trúc như sau:
id:runlevels:action:process
6
Ví dụ 1 /etc/inittab file
/etc/rc.d/rc5.d
Linux initialization process
Một số bài tập
• 1. Sử dụng USB flash để boot hệ thống. • 2. Nếu có sẵn Window, hãy dùng NTLDR để boot Linux. • Tìm hiểu cấu trúc RAMdisk để tự xây
initial RAM disk (initrd) overview”
dựng một phiên bản RAMdisk cho riêng mình (tạo ramdisk.img giống như initrd) – Tài liệu tham khảo: google.com (cid:198) “Linux