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

7

2. Quản lý người dùng

Thank you!

8