TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THƠNG
BÁO CÁO PROJECT
NGUN LÝ HỆ ĐIỀU HÀNH
HỌC KÌ I 2021-2022
Sinh Viên Thực Hiện:
Họ & Tên
MSSV: ...
Mail
aCT178 – Nguyên lý hệ điều hành
MỤC LỤC
2
aCT178 – Nguyên lý hệ điều hành
3
aCT178 – Nguyên lý hệ điều hành
HỌ VÀ TÊN:
MSSV:...
Tuyên bố: Project này là do chính tơi, (MSSV: ...), tự thực hiện khơng sao chép của
bất kỳ ai. Nếu có bất cứ sao chép nào, tơi hồn tồn chịu trách nhiệm.
PHẦN 1: XÂY DỰNG LINUX KERNEL
Thực hiện ở chế độ người dùng root (root user)
$su A. CHUẨN BỊ LINUX KERNEL CODE
1. Download và cài đặt tool cần thiết vào hệ thống
#sudo apt-get install -y gcc libncurses5-dev make wget
Hình 1: #sudo apt-get install -y gcc libncurses5-dev make wget
# sudo apt-get install -y gcc libssl-dev
4
aCT178 – Nguyên lý hệ điều hành
Hình 2: # sudo apt-get install -y gcc libssl-dev
#sudo apt-get install bison
Hình 3: #sudo apt-get install bison
#sudo apt-get install flex
5
aCT178 – Nguyên lý hệ điều hành
Hình 4: #sudo apt-get install flex
2. Xác định phiên bản hiện tại của kernel:
# uname –r
Hình 5: # uname –r
3. Truy cập hoặc và
download source code của kerenl hiện tại. Kế tiếp, download kernel 5.9 và giải nén
source code:
# wget />
6
aCT178 – Nguyên lý hệ điều hành
Hình 6: # wget />
Giải nén
Hình 7: # tar xvzf linux-5.9.tar.gz
7
aCT178 – Nguyên lý hệ điều hành
B. CẤU HÌNH KERNEL MỚI
1. Đảm bảo đường dẫn hiện tại ở ~/linux-5.9 và “linux-5.9” ở top directory của
kernel source.
#cd linux-5.9
Hình 8: #cd linux-5.9
2. Tạo file cấu hình (config file)
- Để sử dụng lệnh “make” chạy lệnh sudo apt-get install make
#sudo apt-get install make
Hình 9: #sudo apt-get install make
# make menuconfig
Hình 10: #make menuconfig
8
aCT178 – Nguyên lý hệ điều hành
Chú ý, không thay đổi thơng tin gì cả. Nhấn ESC để save và thốt khỏi menu cấu hình
(configuration menu). File cấu hình sẽ được tạo ra.
C. BIÊN DỊCH KERNEL
Chỉnh sửa dòng CONFIG_SYSTEM_TRUSTED_KEYS=” debian/canonical-certs-pem”
thành CONFIG_SYSTEM_TRUSTED_KEYS=””
#nano .config
Hình 11: #nano .config
1. Tại ~/linux-5.9, tạo kernel image nén (compressed kernel image)
# make –j4
9
aCT178 – Nguyên lý hệ điều hành
Hình 12: # make –j4
2. Biên dịch kernel modules:
# make modules
Hình 13: # make modules
10
aCT178 – Nguyên lý hệ điều hành
D. CÀI ĐẶT KERNEL
1. Cài đặt kernel modules
#make modules_install
Hình 14: #make modules_install p1
Hình 15: #make modules_install
2.Cài đặt the kernel
#make install
Hình 16: #make install
11
aCT178 – Nguyên lý hệ điều hành
Hình 17: #make install
E. THAY ĐỔI FILE CẤU HÌNH GRUB (GRUB CONFIGURATION FILE)
Thay đổi file cấu hình grub:
# nano /etc/default/grub
Thực hiện các thay đổi sau:
GRUB_DEFAULT=0
GRUB_TIMEOUT=25
Hình 18: # nano /etc/default/grub
F. REBOOT VM
1. Reboot kernel mới:
12
aCT178 – Nguyên lý hệ điều hành
# reboot
2. Sau khi boot, kiểm tra thơng tin kernel mới có đúng chưa:
# uname –r
Hình 19: # uname –r
PHẦN 2: THÊM LỜI GỌI HỆ THỐNG VÀO LINUX KERNEL
A. CHUẨN BỊ LINUX CODE
1. Download source code của kernel 4.16.3
#wget />
Hình 20: #wget />
2. Giải nén source code của kernel 4.16.3
#tar xvzf linux-4.16.3.tar.gz
13
aCT178 – Nguyên lý hệ điều hành
Hình 21: #tar xvzf linux-4.16.3.tar.gz
B. TẠO LỜI GỌI HỆ THỐNG
1. Định nghĩa lời gọi hệ thống mới
#cd /root/linux-4.16.3
#mkdir hello
- Truy cập vào thư mục vừa tạo
Hình 22: #mkdir hello
#cd hello
Hình 23: #nano hello.c
2. Viết chương trình hello.c
#nano hello.c
Nội dung
14
aCT178 – Nguyên lý hệ điều hành
#inlcude <linux/kernel.h>
asmlinkage long sys_hello(void){
Printk(“xin chao ……”);
Return 0;
}
Hình 24: hello.c
3. Tạo tập tin Makefile
#nano Makefile
Hình 25: #nano Makefile
4. Chỉnh sửa tập tin Makefile
Truy cập thư mục /root/linux-4.16.3/ và sửa đổi tập tin Makefile
#cd /root/linux4.16.3/ #nano Makefile
Thêm “hello/” vào cuối dòng:
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ hello/
15
aCT178 – Nguyên lý hệ điều hành
Hình 26: #cd /root/linux4.16.3/ #nano Makefile
5. Thêm lời gọi hệ thống mới vào bảng gọi hệ thống
Truy cập vào đường dẫn
#cd /root/linux-4.16.3/arch/x86/entry/syscalls/
Hình 27: #cd /root/linux-4.16.3/arch/x86/entry/syscalls/
Sau đó
Chỉnh sửa tập tin syscall_64.tbl
#nano syscall_64.tbl
Thêm 1 dịng như sau
548
64
hello
sys_hello
16
aCT178 – Nguyên lý hệ điều hành
Hình 28: #nano syscall_64.tbl
6. Thêm lời gọi hệ thống sys_hello() vào system call header file
#cd /root/linux-4.16.3/include/linux
#nano syscalls.h
Thêm dòng “asmlinkage long sys_hello(void);” vào trước dòng #endif cuối cùng
Hình 29: #nano syscalls.h
C. BIÊN DỊCH LẠI KERNEL
1. Biên dịch lại Kernel
#cd /root/linux-4.16.3/
#make menuconfig
Không thay đổi nội dung, nhấn ESC để lưu và thoát.
17
aCT178 – Nguyên lý hệ điều hành
Hình 30: #cd /root/linux-4.16.3/
Hình 31: #make menuconfig
18
aCT178 – Nguyên lý hệ điều hành
Hình 32: #make menuconfig
2. THAY ĐỔI .CONFIG
Chỉnh sửa dòng CONFIG_SYSTEM_TRUSTED_KEYS=””
#nano .config
19
aCT178 – Nguyên lý hệ điều hành
Hình 33: #nano .config
#make –j4
Hình 34: #make –j4
20
aCT178 – Nguyên lý hệ điều hành
Hình 35: #make –j4
3. Biên dịch modules
#make modules
Hình 36: #make modules
4. Cài đặt kernel modules
#make modules_install
21
aCT178 – Nguyên lý hệ điều hành
Hình 37: #make modules_install
#make install
22
aCT178 – Nguyên lý hệ điều hành
Hình 38: #make install
D. CHỈNH SỬA CẤU HÌNH GRUB
1. Cấu hình Grub
#nano /etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=25
23
aCT178 – Nguyên lý hệ điều hành
Hình 39: #nano /etc/default/grub
E. REBOOT VM
1. Reboot
#reboot
Hình 40: #reboot
2. Kiểm tra phiên bản
Chọn kernel linux-4.16.3
#uname -r
Hình 41: #uname -r
F. TẠO LỜI GỌI HỆ THỐNG
1. Kiểm tra lời gọi hệ thống
#nano uesrspace.c
Hình 42:#nano uesrspace.c
24
aCT178 – Nguyên lý hệ điều hành
2. Nội dung userspace.c
Hình 43: uesrspace.c
3. Biên dịch và chạy file vừa tạo
$gcc userspace.c
$./a.out
Hình 44: $gcc userspace.c
4. Xem thơng điệp
$dmesg
Hình 45: $dmesg
25