SMiTTY.VNFlow boot OS của AIX
Khi Power một server AIX, boot sẽ chạy theo flow dưới đây:
(1): Power on
↓
(2): Firmware (check HW + bootlist)
↓
(3): Load boot image
↓
(4): Kernel start
↓
(5): rc.boot phase 1 (config base device)
↓
(6): rc.boot phase 2 (mount rootvg)
↓
(7): Switch RAM FS → disk FS
↓
(8): rc.boot phase 3 (config full system)
↓
(9): init → run level
↓
(10): System ready
Nhìn có vẻ cồng kềnh thế, nhưng bản chất, nó sẽ trải qua 3 phase như sau:
1./ Firmware Phase (từ step 1 → hết Step 4)
2./ Base device configuration phase (step 5)
3./ Booting System (từ Step 6 đến step 10)
Tuy nhiên, để hiểu flow trên cần chi tiết từng step:
Step 1: Chỉ là thao tác vật lý đơn thuần, press power button.
Step 2: Firmware (check HW + bootlist). Firmware chuẩn bị cho hệ thống để nạp và chạy hệ điều hành. Firmware thực hiện kiểm tra cơ bản (POST – Power On Self Test) trên các tài nguyên hệ thống cần thiết để khởi động hệ điều hành.
Step 3: Load boot image. Firmware kiểm tra User Boot List – danh sách các thiết bị boot có sẵn.
Danh sách này có thể được thay đổi bằng lệnh bootlist. Nếu User Boot List trong NVRAM không hợp lệ hoặc không tìm thấy thiết bị boot hợp lệ, hệ thống sẽ kiểm tra Default Boot List.
Thiết bị boot hợp lệ đầu tiên được tìm thấy sẽ được sử dụng để khởi động hệ thống. Firmware sẽ kiểm tra các thiết bị theo thứ tự trong danh sách và lặp lại liên tục cho đến khi tìm thấy thiết bị boot hợp lệ.
Lưu ý: Hệ thống duy trì một Default Boot List cho chế độ Normal và một Service Mode Boot List riêng. Cách truy cập Service Mode Boot List phụ thuộc vào model máy cụ thể.
Khi tìm thấy thiết bị boot hợp lệ, firmware kiểm tra sector đầu tiên (Program Sector Number – PSN, đây là lý do vì sao, hd5 luôn được lưu ở sector đầu tiên của hdisk). Nếu đây là boot record hợp lệ, nó sẽ được đọc vào bộ nhớ và thêm vào IPL Control Block.
Boot Image được đọc tuần tự từ thiết bị boot vào bộ nhớ RAM. Boot Image gồm: Kernel, RAM File System, và thông tin thiết bị cơ bản (base customized device information).
Step 4: Khi đã vượt qua được step 3, quyền điều khiển được chuyển cho Kernel, kernel bắt đầu quá trình khởi tạo hệ thống (Kernel chạy lệnh init). Tới đây, là hoàn thành Firmware phase của quá trình boot.
Step 5: rc.boot phase 1 (config base device). Lệnh init (ở Step 4) sẽ khởi động script rc.boot. Phase 1 của rc.boot thực hiện cấu hình các thiết bị cơ bản sau:
Gọi chương trình restbase để xây dựng cơ sở dữ liệu ODM (Object Data Manager) tùy chỉnh trong RAM File System từ dữ liệu nén.
Khởi động Configuration Manager, sử dụng các quy tắc cấu hình ODM Phase 1 để cấu hình các thiết bị cơ bản.
Configuration Manager khởi tạo các phương thức cấu hình cho: sys, bus, disk, SCSI, Logical Volume Manager (LVM) và rootvg volume group.
Các phương thức cấu hình sẽ load device driver, tạo special files (/dev) và cập nhật dữ liệu tùy chỉnh vào ODM database.
Và tới đây, cũng kết thúc phase số 2 (Base device configuration phase)
Step 6: Từ bước này là bắt đầu phase cuối cùng (Booting System).
rc.boot phase 2 (mount rootvg): Tại bước này, rc.boot sẽ gọi lệnh ipl_varyon để varyon volume group rootvg. Cùng với đó, sẽ mount các file system từ ổ cứng vào đúng điểm mount (/, /usr, /var, …). Sau đó, chạy lệnh swapon để kích hoạt paging space và cuối cùng sẽ copy dữ liệu tùy chỉnh từ ODM trong RAMFS sang ODM trên ổ cứng.
Step 7: Switch RAM FS → disk FS:
Bước này rất quan trọng, nếu faile, việc booting system sẽ fail. Bản chất ở bước này là có 1 sự chuyển giao từ RAM FS sang cho Disk FS, hay cụ thể hơn, có một sự chuyển đổi từ mini OS sang OS real của disk.
Step 8: rc.boot phase 3 (config full system):
RC sẽ load cấu hình của tất cả thiết bị còn lại chưa được load (hoặc có thể chưa được cấu hình).
Step 9: init → run level:
Lệnh init sẽ đọc file /etc/inittab để chạy những proces được yêu cầu, đồng thời xác đinh Run level (thường thì sẽ ở 2), sau đó chạy lệnh savebase để lưu dữ liệu ODM vào Boot Logical Volume (hd5)
Step 10: Hoàn tất, và multi user có thể login từ thời điểm này.