Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 93 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
93
Dung lượng
855,5 KB
Nội dung
BỘ GIAO THÔNG VẬN TẢI TRƢỜNG ĐẠI HỌC HÀNG HẢI BỘ MÔN: KỸ THUẬT MÁY TÍNH KHOA: CÔNG NGHỆ THÔNG TIN BÀI GIẢNG HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ TÊN HỌC PHẦN : HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ MÃ HỌC PHẦN : 17308 TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN HẢI PHÒNG MỤC LỤC Chƣơng GIỚI THIỆU CHUNG VỀ LINUX 1.1 Giới thiệu chung 1.1.1 Tổng quan Linux 1.1.2 Vấn đề quyền 1.1.3 Các thành phần tích hợp Hệ điều hành Linux 1.1.4 Một số đặc điểm Linux 1.2 Các thành phần Linux 1.2.1 Nhân hệ thống (kernel) 1.2.2 Hệ vỏ (shell) 1.3 Sử dụng lệnh Linux 1.3.1 Dạng tổng quát lệnh Linux 10 1.3.2 Các ký hiệu đại diện 11 1.3.3 Trợ giúp lệnh 11 Chƣơng THAO TÁC VỚI HỆ THỐNG 12 2.1 Tiến trình khởi động Linux 12 2.2 Thủ tục đăng nhập lệnh thoát khỏi hệ thống 12 2.2.1 Đăng nhập 12 2.2.2 Ra khỏi hệ thống 12 2.2.3 Khởi động lại hệ thống 13 2.2.4 Khởi động vào chế độ đồ hoạ 13 2.3 Một số liên quan đến hệ thống 15 2.3.1 Lệnh thay đổi mật 15 2.3.2 Lệnh xem, thiết lập ngày, 15 2.3.3 Lệnh kiểm tra sử sụng hệ thống 15 2.3.4 Thay đổi nội dung dấu nhắc shell 15 2.3.5 Lệnh gọi ngôn ngữ tính toán số học 16 Chƣơng HỆ THỐNG FILE 17 3.1 Tổng quan hệ thống file 17 3.1.1 Một số khái niệm 17 3.1.2 Sơ kiến trúc nội hệ thống file 18 3.1.3 Hỗ trợ nhiều hệ thống File 20 3.1.4 Liên kết tƣợng trƣng (lệnh ln) 21 3.2 Quyền truy nhập thƣ mục file 22 3.2.1 Quyền truy nhập 22 3.2.2 Các lệnh 23 3.3 Thao tác với thƣ mục 25 3.3.1 Một số thƣ mục đặc biệt 25 3.3.2 Các lệnh thƣ mục 26 3.4 Các lệnh làm việc với file 28 3.4.1 Các kiểu file có Linux 28 3.4.2 Các lệnh tạo file 29 -1- 3.4.3 Các lệnh thao tác file 30 3.4.4 Các lệnh thao tác theo nội dung file 32 3.4.5 Các lệnh tìm file 35 3.5 Nén lƣu file 37 3.5.1 Sao lƣu file (lệnh tar) 37 3.5.2 Nén liệu 38 CHƢƠNG QUẢN TRỊ HỆ THỐNG VÀ NGƢỜI DÙNG 41 4.1 Quản trị ngƣời dùng 41 4.1.1 Tài khoản ngƣời dùng 41 4.1.2 Các lệnh quản lý ngƣời dùng 41 4.2 Các lệnh liên quan đến nhóm ngƣời dùng 44 4.2.1 Nhóm ngƣời dùng file /etc/group 45 4.2.2 Các lệnh khác có liên quan đến ngƣời dùng 46 4.3 Quản trị hệ thống 47 4.3.1 Quản lý tiến trình 47 4.3.2 Quản trị phần mềm 51 4.3.3 Quản trị hệ thống Linux 51 Chƣơng TRUYỀN THÔNG VÀ MẠNG UNIX-LINUX 53 5.1 Lệnh truyền thông 53 5.1.1 Lệnh write 53 5.1.2 Lệnh mail 53 5.1.3 Lệnh talk 54 5.2 Cấu hình Card giao tiếp mạng 54 5.3 Các dịch vụ mạng 55 5.3.1 Hệ thông tin mạng NIS 55 5.3.2 Cài đặt cấu hình cho máy chủ NIS 56 5.3.3 Cài đặt máy trạm NIS 56 5.3.4 Lựa chọn file map 57 5.3.5 Sử dụng file map passwd group 58 5.4 Hệ thống file mạng 59 5.4.1 Cài đặt NFS 59 5.4.2 Khởi động dừng NFS 59 5.4.3 Cấu hình NFS server Client 60 5.4.4 Sử dụng mount 60 5.4.5 Unmount 61 5.4.6 Mount tự động qua tệp cấu hình 61 Chƣơng LẬP TRÌNH SHELL VÀ LẬP TRÌNH C TRÊN LINUX 62 6.1 Cách thức pipes yếu tố lập trình shell 62 6.1.1 Cách thức pipes 62 6.1.2 Các yếu tố để lập trình shell 62 6.2 Một số lệnh lập trình shell 65 6.2.1 Sử dụng toán tử bash 65 6.2.2 Điều khiển luồng 67 -2- 6.2.3 Các hàm shell 75 6.2.4 Các toán tử định hƣớng vào 75 6.2.5 Hiện dòng văn 76 6.2.5 Lệnh read đọc liệu cho biến ngƣời dùng 76 6.2.6 Lệnh set 77 6.2.7 Tính toán biến 77 6.2.8 Chƣơng trình ví dụ 77 6.3 Lập trình C UNIX 78 6.3.1 Trình biên dịch gcc 78 6.3.2 Công cụ GNU make 80 6.3.3 Làm việc với file 81 6.3.4 Thƣ viện liên kết 83 6.3.5 Các công cụ cho thƣ viện 89 -3- YÊU CẦU VÀ NỘI DUNG CHI TIẾT Tên học phần: Hệ điều hành mã nguồn mở Bộ môn phụ trách giảng dạy: Kỹ thuật máy tính Mã học phần: 17303 TS tiết 60 Lý thuyết 30 Thực hành/Xemina 30 Tự học Loại học phần: Khoa phụ trách: CNTT Tổng số TC: Bài tập lớn Đồ án môn học Điều kiện tiên quyết: Sinh viên phải học xong học phần sau đƣợc đăng ký học phần này: Kiến trúc máy tính, Nguyên lý hệ điều hành Mục tiêu học phần: - Nắm bắt đƣợc hệ điều hành mã nguồn mở Nội dung chủ yếu - Các kiến thức hệ điều hành Linux Nội dung chi tiết học phần: TÊN CHƢƠNG MỤC Chƣơng 1: Giới thiệu Unix – Linux 1.1 Giới thiệu chung 1.2 Các thành phần Linux 1.3 Sử dụng lệnh Linux Chƣơng Thao tác với hệ thống 2.1 Tiến trình khởi động Linux 2.2 Thủ tục đăng nhập lệnh thoát khỏi hệ thống 2.3 Một số liên quan đến hệ thống Chƣơng Quản trị hệ thống ngƣời dùng 3.1 Quản lý ngƣời dùng 3.2 Quản lý nhóm vấn đề liên quan 3.3 Quản trị hệ thống Chƣơng Hệ thống file 4.1 Tổng quan hệ thống file 4.2 Quyền truy nhập thƣ mục file 4.3 Thao tác với thƣ mục 4.4 Các lệnh làm việc với file 4.5 Nén lƣu file Chƣơng Truyền thông mạng PHÂN PHỐI SỐ TIẾT TS LT BT TH 2 0,5 0,5 10 0.5 1 4 1 12 0,5 0,5 1 KT 1 1 4 -4- 5.1 Lệnh truyền thông 5.2 Cấu hình Card giao tiếp mạng 5.3 Các dịch vụ mạng 5.4 Hệ thống file mạng Chƣơng 6: Lập trình shell lập trình C Linux 6.1 Cách thức pipes yếu tố lập trình shell 6.2 Một số lệnh lập trình shell 6.3 Lập trình C Linux 20 1 1 2 12 1 Nhiệm vụ sinh viên : Tham dự buổi thuyết trình giáo viên, tự học, tự làm tập giáo viên giao, tham dự buổi thực hành, kiểm tra định kỳ cuối kỳ, hoàn thành tập lớn theo yêu cầu Tài liệu học tập : - Richard Petersen - Linux: The Complete Reference, Sixth Edition – Nhà xuất McGraw-Hill Osborne Media ,2007 - Michael Rash - Linux Firewalls: Attack Detection and Response with iptables, psad, and fwsnort – Nhà xuất No Starch Press ,2007 - Christopher Negus - Linux Bible – Nhà xuất Wiley, 2007 - Andrew Hudson Paul Hudson – Fedora UNLEASHED, 2007 Hình thức tiêu chuẩn đánh giá sinh viên: - Đánh giá dựa tình hình tham dự buổi học lớp, buổi thực hành, điểm kiểm tra thƣờng xuyên điểm kết thúc học phần - Hình thức thi cuối kỳ : thi viểt Thang điểm: Thang điểm chữ A, B, C, D, F Điểm đánh giá học phần Z = 0.3X + 0.7Y Bài giảng tài liệu thức thống Bộ môn Kỹ thuật máy tính, Khoa Công nghệ Thông tin đƣợc dùng để giảng dạy cho sinh viên Ngày phê duyệt: 15 / / 2010 Trƣởng Bộ môn: ThS Ngô Quốc Vinh -5- Chƣơng GIỚI THIỆU CHUNG VỀ LINUX 1.1 Giới thiệu chung 1.1.1 Tổng quan Linux Linus Tovalds (một sinh viên Phần lan) đƣa nhân (phiên đầu tiên) cho hệ điều hành Linux vào tháng năm 1991 sở cải tiến phiên UNIX có tên Minix Giáo sƣ Andrew S Tanenbaum xây dựng phổ biến Nhân Linux nhỏ song tự đóng gói Kết hợp với thành phần hệ thống GNU, hệ điều hành Linux đƣợc hình thành Và từ thời điểm đó, theo tƣ tƣởng GNU, hàng nghìn, hàng vạn chuyên gia toàn giới (những ngƣời hình thành nên cộng đồng Linux) tham gia vào tiến trình phát triển Linux Linux ngày đáp ứng nhu cầu ngƣời dùng Năm 1991, Linus Torvald viêt thêm phiên nhân v0.01 (kernel) Linux đƣa lên BBS, nhóm ngƣời dùng để ngƣời sử dụng phát triển Năm 1994, hệ điều hành Linux phiên 1.0 đƣợc thức phát hành ngày nhận đƣợc quan tâm ngƣời dùng Năm 1995, nhân 1.2 đƣợc phổ biến Phiên hỗ trợ phạm vi rộng phong phú phần cứng, bao gồm kiến trúc tuyến phần cứng PCI Năm 1996, nhân Linux 2.0 đƣợc phổ biến Phân hỗ trợ kiến trúc phức hợp, bao gồm cổng Alpha 64-bit đầy đủ, hỗ trợ kiến trúc đa xử lý Phân phối nhân Linux 2.0 thi hành đƣợc xử lý Motorola 68000 kiến trúc SPARC SUN Các thi hành Linux dựa vi nhân GNU Mach chạy PC PowerMac Năm 1999, phiên nhân v2.2 mang nhiều đặc tính ƣu việt giúp cho Linux bắt đầu trở thành đối thủ cạnh tranh đáng kể MS Windows môi trƣờng server Năm 2000 phiên nhân v2.4 hỗ trợ nhiều thiết bị (đa xử lý tới 32 chip, USB, RAM 2GB ) bắt đầu đặt chân vào thị trƣờng máy chủ cao cấp Các phiên Linux đƣợc xác định hệ thống số theo số mức (hai ba mức) Trong quy ƣớc với số từ mức thứ hai trở đi, số chẵn dòng nhân ổn định tƣơng đối hoàn thiện, số lẻ dòng nhân đƣợc phát triển tiếp 1.1.2 Vấn đề quyền Về lý thuyết, ngƣời khởi tạo hệ thống Linux cách tiếp nhận thành phần cần thiết từ site ftp biên dịch chúng Trong thời kỳ đầu tiên, ngƣời dùng Linux phải tiến hành toàn thao tác công việc vất vả Tuy nhiên, có tham gia đông đảo cá nhân nhóm phát triển Linux, tiến hành thực nhiều giải pháp nhằm làm cho công việc khởi tạo hệ thống đỡ vất vả Một giải pháp điển hình cung cấp tập gói chƣơng trình tiền dịch, chuẩn hóa Những tập hợp nhƣ hay phân phối lớn nhiều so với hệ thống Linux sở Chúng thƣờng bao gồm tiện ích bổ sung cho khởi tạo hệ thống, thƣ viện quản lý, nhƣ nhiều gói đƣợc tiền dịch, sẵn sàng khởi tạo nhiều công cụ UNIX dùng chung, chẳng hạn nhƣ phục vụ tin, trình duyệt web, công cụ xử lý, soạn thảo văn chí trò chơi Cách thức phân phối ban đầu đơn giản song ngày đƣợc nâng cấp hoàn thiện phƣơng tiện quản lý gói tiên tiến Các phân phối ngày bao gồm sở liệu tiến hóa gói, cho phép gói dễ dàng đƣợc khởi tạo, nâng cấp loại bỏ Nhà phân phối thực theo phƣơng châm Slakware, họ chuyển biến mạnh mẽ cộng đồng Linux công việc quản lý gói khởi tạo -6- Linux Tiện ích quản lý gói RPM (RedHat Package Manager) công ty RedHat phƣơng tiện điển hình Nhân Linux phần mềm tự đƣợc phân phối theo Giấy phép sở hữu công cộng phần mềm GNU GPL 1.1.3 Các thành phần tích hợp Hệ điều hành Linux Linux sử dụng nhiều thành phần từ Dự án phần mềm tự GNU, từ hệ điều hành BSDcủa Đại học Berkeley từ hệ thống X-Window MIT Thƣ viện hệ thống Linux đƣợc bắt nguồn từ Dự án GNU, sau đƣợc nhiều ngƣời cộng đồng Linux phát triển tiếp, phát triển nhƣ chủ yếu liên quan tới việc giải vấn đề nhƣ thiếu vắng địa (lỗi trang), thiếu hiệu gỡ rối Một số thành phần khác Dự án GNU, chẳng hạn nhƣ trình biên dịch GNU C (gcc), vốn chất lƣợng cao nên đƣợc sử dụng nguyên xy Linux Các tool quản lý mạng đƣợc bắt nguồn từ mã 4.3BSD song sau đƣợc cộng đồng Linux phát triển, chẳng hạn nhƣ thƣ viện toán học đồng xử lý dấu chấm động Intel trình điều khiển thiết bị phần cứng âm PC Các tool quản lý mạng sau lại đƣợc bổ sung vào hệ thống BSD Hệ thống Linux đƣợc trì gần nhƣ mạng lƣới không chặt chẽ nhà phát triển phần mềm cộng tác với qua Internet, mạng lƣới gồm nhóm nhỏ cá nhân chịu trách nhiệm trì tính toàn vẹn thành phần Một lƣợng nhỏ site phân cấp ftp Internat công cộng đóng vai trò nhà kho theo chuẩn de facto để chứa thành phần Tài liệu Chuẩn phân cấp hệ thống file (File System Hierarchy Standard) đƣợc cộng đồng Linux trì nhằm giữ tính tƣơng thích khắc phục đƣợc khác biệt lớn thành phần hệ thống 1.1.4 Một số đặc điểm Linux Dƣới trình bày số đặc điểm của hệ điều hành Linux tại: Linux tƣơng thích với nhiều hệ điều hành nhƣ DOS, MicroSoft Windows : Cho phép cài đặt Linux với hệ điều hành khác ổ cứng Linux truy nhập đến file hệ điều hành ổ đĩa Linux cho phép chạy mô chƣơng trình thuộc hệ điều hành khác Do giữ đƣợc chuẩn UNIX nên chuyển đổi Linux hệ UNIX khác dễ dàng Linux hệ điều hành UNIX tiêu biểu với đặc trƣng đa ngƣời dùng, đa chƣơng trình đa xử lý Linux có giao diện đồ hoạ (GUI) thừa hƣởng từ hệ thống X-Window Linux hỗ trợ nhiều giao thức mạng, bắt nguồn phát triển từ dòng BSD Thêm vào đó, Linux hỗ trợ tính toán thời gian thực Linux mạnh chạy nhanh nhiều tiến trình nhiều cửa sổ Linux đƣợc cài đặt nhiều chủng loại máy tính khác nhƣ PC, Mini việc cài đặt thuận lợi Tuy nhiên, chƣa xuất Linux máy tính lớn (mainframe) Linux ngày đƣợc hỗ trợ phần mềm ứng dụng bổ sung nhƣ soạn thảo, quản lý mạng, quản trị sở liệu, bảng tính Linux hỗ trợ tốt cho tính toán song song máy tính cụm (PC-cluster) hƣớng nghiên cứu triển khai ứng dụng nhiều triển vọng Là hệ điều hành với mã nguồn mở, đƣợc phát triển qua cộng đồng nguồn mở (bao gồm Free Software Foundation) nên Linux phát triển nhanh Linux số hệ điều hành đƣợc quan tâm nhiều giới -7- Linux hệ điều hành hỗ trợ đa ngôn ngữ cách toàn diện Do Linux cho phép hỗ trợ mã chuẩn từ 16 bit trở lên (trong có mã ISO10646, Unicode) việc địa hóa Linux triệt để hệ điều hành Tuy nhiên tồn số khó khăn làm cho Linux chƣa thực trở thành hệ điều hành phổ dụng, dƣới số khó khăn điển hình: Tuy có công cụ hỗ trợ cài đặt, nhiên, việc cài đặt Linux tƣơng đối phức tạp khó khăn Khả tƣơng thích Linux với số loại thiết bị phần cứng thấp chƣa có trình điều khiển cho nhiều thiết bị, Phần mềm ứng dụng chạy Linux phong phú song so với số hệ điều hành khác, đặc biệt so sánh với MS Windows, có khoảng cách Với hỗ trợ nhiều công ty tin học hàng đầu giới (IBM, SUN, HP ) tham gia phát triển hàng vạn chuyên gia toàn giới thuộc cộng đồng Linux, khó khăn Linux chắn nhanh chóng đƣợc khắc phục 1.2 Các thành phần Linux Hệ thống Linux, đƣợc thi hành nhƣ hệ điều hành UNIX truyền thống, gồm shell ba thành phần (đã dạng mã chƣơng trình) sau đây: Nhân hệ điều hành chịu trách nhiệm trì đối tƣợng trừu tƣợng quan trọng hệ điều hành, bao gồm nhớ ảo tiến trình Các mô đun chƣơng trình nhân đƣợc đặc quyền hệ thống, bao gồm đặc quyền thƣờng trực nhớ Thƣ viện hệ thống xác định tập chuẩn hàm để ứng dụng tƣơng tác với nhân, thi hành nhiều chức hệ thống nhƣng không cần có đặc quyền mô đun thuộc nhân Một hệ thống điển hình đƣợc thi hành dựa thƣ viên hệ thống hệ thống file Linux Tiện ích hệ thống chƣơng trình thi hành nhiệm vụ quản lý riêng rẽ, chuyên biệt Một số tiện ích hệ thống đƣợc gọi lần để khởi động cấu hình phƣơng tiện hệ thống, số tiện ích khác, theo thuật ngữ UNIX đƣợc gọi trình chạy ngầm (daemon), chạy cách thƣờng xuyên (thƣờng theo chu kỳ), điều khiển toán nhƣ hƣởng ứng kết nối mạng đến, tiếp nhận yêu cầu logon, cập nhật file log Tiện ích (hay lệnh) có sẵn hệ điều hành (dƣới tiện ích đƣợc coi lệnh thƣờng trực) Nội dung yếu tài liệu giới thiệu chi tiết số lệnh thông dụng Linux Hệ thống file đƣợc giới thiệu chƣơng Trong chƣơng sau có đề cập tới nhiều nội dung liên quan đến nhân shell, song dƣới số nét sơ chúng 1.2.1 Nhân hệ thống (kernel) Nhân (còn đƣợc gọi hệ lõi) Linux, môdun chƣơng trình có vai trò điều khiển thành phần máy tính, phân phối tài nguyên cho ngƣời dùng (các tiến trình ngƣời dùng) Nhân cầu nối chƣơng trình ứng dụng với phần cứng Ngƣời dùng sử dụng bàn phím gõ nội dung yêu cầu yêu cầu đƣợc nhân gửi tới shell: Shell phân tích lệnh gọi chƣơng trình tƣơng ứng với lệnh để thực Một chức quan trọng nhân giải toán lập lịch, tức hệ thống cần phân chia CPU cho nhiều tiến trình thời tồn Đối với Linux, số lƣợng tiến trình lên tới số hàng nghìn Với số lƣợng tiến trình đồng thời nhiều nhƣ vậy, thuật toán lập lịch cần phải đủ hiệu quả: Linux thƣờng lập lịch theo chế độ Round Robin (RR) thực việc luân chuyển CPU theo lƣợng tử thời gian -8- Thành phần quan trọng thứ hai nhân hệ thống môđun chƣơng trình (đƣợc gọi lời gọi hệ thống) làm việc với hệ thống file Linux có hai cách thức làm việc với file: làm việc theo byte (ký tự) làm việc theo khối Một đặc điểm đáng ý file Linux đƣợc nhiều ngƣời truy nhập tới nên lời gọi hệ thống làm việc với file cần đảm bảo việc file đƣợc truy nhập theo quyền đƣợc chia xẻ cho ngƣời dùng 1.2.2 Hệ vỏ (shell) Ngƣời dùng mong muốn máy tính thực công việc cần gõ lệnh thể yêu cầu để hệ thống đáp ứng yêu cầu Shell dịch lệnh hoạt động nhƣ kết nối trung gian nhân với ngƣời dùng: Shell nhận dòng lệnh ngƣời dùng đƣa vào; từ dòng lệnh nói trên, nhân tách phận để nhận đƣợc hay số lệnh tƣơng ứng với đoạn văn có dòng lệnh Một lệnh bao gồm tên lệnh tham số: từ tên lệnh, từ (nếu có) tham số Tiếp theo, shell sử dụng nhân để khởi sinh tiến trình (khởi tạo tiến trình) sau đó, shell chờ đợi tiến trình tiến hành, hoàn thiện kết thúc Khi shell sẵn sàng tiếp nhận dòng lệnh ngƣời dùng, dấu nhắc shell (còn gọi dấu nhắc nhập lệnh) xuất hình Linux có hai loại shell phổ biến là: C-shell (dấu nhắc %), Bourne-shell (dấu nhắc $) số shell phát triển từ shell nói (chẳng hạn, TCshell - tcsh với dấu nhắc ngầm định > phát triển từ C-shell GNU Bourne - bash với dấu nhắc bash # phát triển từ Bourneshell) Dấu mời phân biệt shell nói hoàn toàn rõ ràng Linux cho phép ngƣời dùng thay đổi lại dấu nhắc shell nhờ việc thay giá trị biến môi trƣờng PS1 PS2 Trong tài liệu này, sử dụng ký hiệu "hàng rào #" để biểu thị dấu nhắc shell C-shell có tên gọi nhƣ cách viết lệnh chƣơng trình lệnh Linux tựa nhƣ ngôn ngữ C Bourne-shell mang tên tác giả Steven Bourne Một số lệnh C- shell (chẳng hạn lệnh alias) Bourne-shell để nhận biết hệ thống làm việc với shell nào, gõ lệnh: # alias Nếu danh sách xuất shell sử dụng C-shell; ngƣợc lại, xuất thông báo "Command not found" shell Bourne-shell Lệnh đƣợc chia thành loại lệnh: Lệnh thƣờng trực (có sẵn Linux) Tuyệt đại đa số lệnh đƣợc giới thiệu tài liệu lệnh thƣờng trực Chúng bao gồm lệnh đƣợc chứa sẵn shell lệnh thƣờng trực khác File chƣơng trình ngôn ngữ máy: chẳng hạn, ngƣời dùng viết trình ngôn ngữ C qua dịch gcc (bao gồm trình kết nối link) để tạo chƣơng trình ngôn ngữ máy File chƣơng trình shell (Shell Scrip) Khi kết thúc dòng lệnh cần gõ phím ENTER để shell phân tích thực lệnh 1.3 Sử dụng lệnh Linux Nhƣ giới thiệu phần trên, Linux hệ điều hành đa ngƣời dùng, đa nhiệm, đƣợc phát triển hàng nghìn chuyên gia tin học toàn giới nên hệ thống lệnh ngày phong phú; đến thời điểm Linux có khoảng nghìn lệnh Tuy nhiên có khoảng vài chục lệnh thông dụng ngƣời dùng Cũng nhƣ nói trên, ngƣời dùng làm việc với máy tính thông qua việc sử dụng trạm cuối: ngƣời dùng đƣa yêu cầu cách gõ "lệnh" từ bàn phím giao cho hệ điều hành xử lý Khi cài đặt Linux lên máy tính cá nhân máy tính cá nhân vừa đóng vai trò trạm cuối, vừa đóng vai trò máy tính xử lý -9- if ls -lL |\ # Liet ke ca cac thong tin cua symbolic link # Su dung sub-shell de tu giai phong bien { sum=0 # Lenh read x y de bo di dong 'total 1234 ' cua lenh ls -lL read x y ; while read mode link user group size month day hour name if [ -d $name ] then echo $name $size \($mode\) fi done } 6.3 Lập trình C UNIX 6.3.1 Trình biên dịch gcc Hệ điều hành UNIX kèm theo dịch ngôn ngữ lập trình C với tên gọi cc (C compiler) Trong Linux, dịch có tên gcc (GNU C Compiler) với ngôn ngữ lập trình không khác nhiều với C chuẩn gcc cho ngƣời lập trình kiểm tra trình biên dịch Tiến trình biên dịch bao gồm bốn giai đoạn: Tiền xử lý Biên dịch Tập hợp Liên kết Ta dừng tiến trình sau giai đoạn để kiểm tra kết biên dịch giai đoạn gcc chấp nhận ngôn ngữ khác C, nhƣ ANSI C hay C truyền thống Nhƣ nói trên, gcc thích hợp biên dịch C++ hay Objective-C Ta kiểm soát lƣợng nhƣ kiểu thông tin cần debug, tất nhiên nhúng tiến trình nhị phân hóa kết giống nhƣ hầu hết trình biên dịch, gcc thực tối ƣu hóa mã Trƣớc bắt đầu sâu vào nghiên cứu gcc, ta xem ví dụ sau: #include int main (void) { fprintf( stdout, “Hello, Linux programming world!\n”); return 0; } Một chƣơng trình điển hình dùng để minh hoạ việc sử dụng gcc Để biên dịch chạy chƣơng trình gõ: $ gcc hello.c –o hello $ /hello Hello, Linux programming world! Dòng lệnh cho gcc phải biên dịch liên kết file nguồn hello.c, tạo tập tin thực thi, cách định sử dụng đối số -o hello Dòng lệnh thứ hai thực chƣơng trình, kết cho dòng thứ Có nhiều chỗ mà ta không nhìn thấy đƣợc, gcc trƣớc chạy hello.c thông qua tiền xử lý cpp, để mở rộng macro chèn thêm vào nội dung file #include Tiếp đến, biên dịch mã nguồn tiền xử lý sang mã obj Cuối cùng, trình liên kết, tạo mã nhị phân cho chƣơng trình hello - 78 - Ta tạo lại bƣớc tay, chia thành bƣớc qua tiến trình biên dịch Để cho gcc biết phải dừng việc biên dịch sau tiền xử lý, ta sử dụng tuỳ chọn –E gcc: $ gcc –E hello.c –o hello.cpp Xem xét hello.cpp ta thấy nội dung stdio.h đƣợc chèn vào file, với mã thông báo tiền xử lý khác Bƣớc biên dịch hello.cpp sang mã obj Sử dụng tuỳ chọn –c gcc để hoàn thành: $ gcc –x cpp-output -c hello.cpp –o hello.o Trong trƣờng hợp này, ta không cần định tên file output trình biên dịch tạo tên file obj cách thay c o Tuỳ chọn –x cho gcc biết bắt đầu biên dịch bƣớc đƣợc báo trƣờng hợp với mã nguồn tiền xử lý Làm gcc biết chia loại đặc biệt file? Nó dựa vào đuôi mở rộng file để xác định rõ phải xử lý file nhƣ cho dúng Hầu hết đuôi mở rộng thông thƣờng thích chúng đƣợc liệt kê bảng dƣới Phần mở rộng Kiểu Mã nguồn ngôn ngữ C c Mã nguồn ngôn ngữ C++ c, cpp Mã nguồn C tiền xử lý i Mã nguồn C++ tiền xử lý ii Mã nguồn Hơp ngữ S, s Mã đối tƣợng biên dịch (obj) o Mã thƣ viện biên dịch a, so Các phần mở rộng tên file gcc Liên kết file đối tƣợng, cuối tạo mã nhị phân: $ gcc hello.o –o hello Trong trƣờng hợp , ta muốn tạo file obj, nhƣ bƣớc liên kết không cần thiết Hầu hết chƣơng trình C chứa nhiều file nguồn file nguồn phải đƣợc biên dịch sang mã obj trƣớc tới bƣớc liên kết cuối Giả sử có ví dụ, ta làm việc killerapp.c chƣơng trình sử dụng phần mã helper.c, nhƣ để biên dịch killerapp.c ta phải dùng dòng lệnh sau: $ gcc killerapp.c helper.c –o killerapp gcc qua lần lƣợt bƣớc tiền xử lý - biên dịch – liên kết, lúc tạo file obj cho file nguồn trƣớc tạo mã nhị phân cho killerapp Một số tuỳ chọn dòng lệnh gcc: -o FILE : Chỉ định tên file output; không cần thiết biên dịch sang mã obj Nếu FILE không đƣợc rõ tên mặc định a.out -c : Biên dịch không liên kết -DF00=BAR : Định nghĩa macro tiền xử lý đặt tên F00 với giá trị BAR dòng lệnh -IDIRNAME : Trƣớc chƣa định đƣợc DIRNAME tìm kiếm file include danh sách thƣ mục( tìm danh sách đƣờng dẫn thƣ mục) -LDIRNAME : Trƣớc chƣa định đƣợc DIRNAME tìm kiếm file thƣ viện danh sách thƣ mục Với mặc định gcc liên kết dựa thƣ viện dùng chung -static : Liên kết dựa thƣ viện tĩnh - 79 - -lF00 : Liên kết dựa libF00 -g : Bao gồm chuẩn gỡ rối thông tin mã nhị phân -ggdb : Bao gồm tất thông tin mã nhị phân mà có chƣơng trình gỡ rối GNU- gdb hiểu đƣợc -O : Tối ƣu hoá mã biên dịch -ON : Chỉ định mức tối ƣu hoá mã N, 0 /usr/lib/libslang.so.1 (0x4002e000) libm.so.6 => /lib/libm/so.6 (0x40072000) libc.so.6 => /lib/libc.so.6 (0x4008f000) /lib/id-linux.so.2 => /lib/id-Linux.so.2 (0x4000000) Tìm hiểu lệnh idconfig Lệnh idconfig sử dụng cú pháp sau: ldconfig [tuỳ chọn] [libs] Lệnh ldconfig xác định rõ liên kết động (liên kết chạy) đƣợc yêu cầu thƣ viện đƣợc chia sẻ nằm thƣ mục /usr/lib /lib Dƣới tùy chọn lệnh này: Các tuỳ chọn Các miêu tả -p Đơn in nội dung /etc/ld.so.cache, danh sách thời thƣ viện đƣợc chia sẻ mà ld.so biết -v Cập nhật /etc/ld.so.cache , liệt kê số phiên thƣ viện, quét thƣ mục liên kết mà đƣợc tạo cập nhật Các tuỳ chọn hàm idconfig Biến môi trường file cấu hình Chƣơng trình tải (loader) trình liên kết (linker) ld.so sử dụng biến môi trƣờng Biến thứ $LD_LIBRARY, chứa danh sách thƣ mục chứa file thƣ viện đƣợc phân cách dấu hai chấm để tìm thƣ viện cần thiết chạy Nó giống nhƣ biến môi trƣờng $PATH Biến môi trƣờng thứ hai $LD_PRELOAD, danh sách thƣ viện đƣợc ngƣời dùng thêm vào đƣợc phân cách khoảng trống (space) ld.so cho phép sử dụng file cấu hình mà có mục đích với biến môi trƣờng đƣợc đề cập File /etc/ld.so.conf chứa danh sách thƣ mục mà chƣơng trình tải trình liên kết (loader/linker) nên tìm kiếm thƣ viện chia sẻ bên cạnh /usr/lib /lib /etc/ld.so.preload chứa danh sách file thƣ viện đƣợc phân cách khoảng trống thƣ viện thƣ viện ngƣời dùng tạo CÂU HỎI VÀ BÀI TẬP Trình bày yếu tố lập trình shell Trình bày ý nghĩa, chức tác dụng trình biên dịch gcc Thực hành lệnh lập trình shell Thực hành lệnh lập trình C - 90 - ĐỀ THI THAM KHẢO Đề 1: Câu 1: Trình bày khái niệm cấu trúc siêu khối Câu 2: Trong thƣ mục ngƣời dùng /home/tuanpv có thƣ mục vanban, bangtinh Hãy viết lệnh Linux để: Tạo thƣ mục vanban thƣ mục có tên hopdong Sao chép tệp tin có ký tự phần tên HD thƣ mục vanban vào thƣ mục vừa tạo Liệt kê tệp tin có phần tên bắt đầu ký tự “M” thƣ mục bangtinh lên hình (cho tệp tin có thuộc tính ẩn có) Xác lập quyền đọc cho tệp thƣ mục bangtinh Xoá tất tệp tin ký tự “nh” thuộc phần tên thƣ mục vanban Câu 3: Lập chƣơng trình liệt kê tên chép tệp tin thƣ mục /home/user1/vidu1 sang thƣ mục /home/user2/vidu Đề 2: Câu 1: Trình bày khái niệm cấu trúc inode Câu 2: Trong thƣ mục ngƣời dùng /home/minhnd có thƣ mục musics, games Hãy viết lệnh Linux để: Xoá tệp tin có phần mở rộng mp3 thƣ mục musics; Xoá thƣ mục lines thƣ mục games Tạo thƣ mục ngƣời dùng thƣ mục có tên temp, thƣ mục tạo hai thƣ mục ngang cấp có tên vidu1 vidu2 Liệt kê tiến trình chạy hệ thống Nén thƣ mục games thành tệp tin luugames.tar Câu 3: Lập chƣơng trình đọc hiển thị nội dung file không cấu trúc Đề 3: Câu 1: Trình bày tên tác dụng thƣ mục đặc biệt Linux Câu 2: Trong thƣ mục ngƣời dùng /home/cuongpv có thƣ mục tailieu, tapchi Hãy viết lệnh Linux để: Nối nội dung tệp sach1, sach2 thƣ mục tailieu thành tệp tapsach đặt tạo thƣ mục ngƣời dùng Liệt kê tệp tin thƣ mục tapchi (kể tệp tin có thuộc tính ẩn) Nén tệp tin thƣ mục tailieu thành tệp luutl.zip đặt thƣ mục ngƣời dùng Xóa tệp tin có ký tự “h” phần tên thƣ mục tailieu Câu 3: Cho hai vector m chiều a = (a1, a2, a3, , am) b = (b1, b2, b3, , bm) Hãy lập chƣơng trình để tính tích vô hƣớng a b theo công thức a.b = a1.b1 + a2.b2 + + am.bm Đề 4: Câu 1: Trình bày cấu trúc thông tin lƣu trữ tài khoản ngƣời dùng trong file /etc/passwd Câu 2: Trong thƣ mục ngƣời dùng /home/dungnv có thƣ mục vanhoc kythuat Hãy viết lệnh Linux để: Tìm tệp tin có chứa nội dung “Happy Birthday” Thiết lập quyền truy cập thƣ mục kythuat cho tất ngƣời dùng - 91 - Tạo thƣ mục có tên nghethuat thƣ mục ngƣời dùng, sau chép tất tệp có ký tự “01” cuối phần tên thƣ mục vanhoc vào thƣ mục vừa tạo Liệt kê cấu hình máy Câu 3: Cho số n, Hãy lập chƣơng trình để thực tính giá trị hàm cos(x) theo công thức: Cos(x) = 1- x2/2! + x4/4! - x6/6! + (-1)nx2x/(2n)! Đề 5: Câu 1: Trình bày yếu tố lập trình shell Câu 2: Trong thƣ mục ngƣời dùng /home/thanghv có thƣ mục congvan, quyetdinh Hãy viết lệnh Linux để: Tạo thƣ mục ngƣời dung thƣ mục có tên saoluu, Sao chép tất tệp thƣ mục quyetdinh vào thƣ mục vừa tạo Thiết lập quyền truy cập thƣ mục congvan cho nhóm ngƣời dùng hanhchinh Xóa tệp có hai ký tự đầu phần tên “GM” thƣ mục congvan Câu 3: Cho số thực a Hãy lập sơ đồ thuật toán để thực tìm số tự nhiên n nhỏ cho 1+1/2 + 1/3 + + 1/n > a - 92 - [...]... các hệ thống file cục bộ Hệ thống file EFS: Là một dạng hệ thống file sử dụng cho CDROM Hệ thống file EXT2: (The second extended file system) là hệ thống đƣợc dùng chủ yếu trên các phiên bản của hệ điều hành Linux Hệ thống file HFS: Là hệ thống file chạy trên các máy Apple Macintosh Hệ thống file HPFS: Là hệ thống file đƣợc sử dụng trong hệ điều hành OS/2 Linux hỗ trợ hệ thống file này ở mức chỉ đọc Hệ. .. của một máy chạy các hệ điều hành kể trên Hệ thống file VFAT: Là hệ thống file mở rộng của hệ thống FAT Hệ thống file này đƣợc sử dụng trong các hệ điều hành Windows 95/98 … Nhƣ vậy, ngoài khả năng hỗ trợ nhiều loại thiết bị, Linux còn có khả năng hỗ trợ nhiều kiểu hệ thống file Bằng cách hỗ trợ nhiều kiểu hệ thống file, Linux có thể truy cập và xử lý các file của nhiều hệ điều hành khác nhau Mặc dù... hệ thống file 3.1.3 Hỗ trợ nhiều hệ thống File Các phiên bản đầu tiên của Linux chỉ hỗ trợ một hệ thống file duy nhất đó là hệ thống file minix Sau đó, với sự mở rộng nhân, cộng đồng Linux đã thêm vào nó rất nhiều kiểu hệ thống file khác nhau và Linux trở thành một hệ điều hành hỗ trợ rất nhiều hệ thống file nhƣ: Hệ thống file CODA: Là một hệ thống file mạng cho phép ngƣời dùng có thể kết gán các hệ. .. phần mềm GNU CÂU HỎI VÀ BÀI TẬP 1 Thực hiện các thao tác đăng nhập, thoát khỏi hệ thống trên hệ điều hành Linux 2 Thực hiện các thao tác liên quan đến hệ thống Linux 3 Thực hiện các thao tác sử dụng lệnh bc để tính toán một bài toán số học đơn giản - 16 - Chƣơng 3 HỆ THỐNG FILE 3.1 Tổng quan về hệ thống file 3.1.1 Một số khái niệm File là một tập hợp dữ liệu có tổ chức đƣợc hệ điều hành quản lý theo yêu... cài đặt hệ điều hành Linux cụ thể trên máy tính 4 Nghiên cứu các thao tác giao tiếp với Linux; so sánh các thao tác với hệ điều hành Windows - 11 - Chƣơng 2 THAO TÁC VỚI HỆ THỐNG 2.1 Tiến trình khởi động Linux Một trong những cách thức khởi động Linux phổ biến nhất là cách thức do chƣơng trình LILO (LInux LOader) thực hiện Chƣơng trình LILO đƣợc nạp lên đĩa của máy tính khi cài đặt hệ điều hành Linux... chỉ đọc Hệ thống file ISOFS: Là hệ thống file đƣợc sử dụng cho các đĩa CD Hệ thống thông dụng nhất cho các đĩa CD hiện nay là ISO 9660 Hệ thống file MSDOS: Với sự hỗ trợ này, hệ thống Linux có thể truy cập đƣợc các phân vùng của hệ điều hành MSDOS Linux cũng có thể sử dụng kiểu MSDOS để truy cập các phân vùng của Window 95/98 tuy nhiên khi đó, các ƣu điểm của hệ điều hành Window sẽ không còn giá trị... cả mở rộng) Hệ thống file NFS: (Network File System) là một hệ thống file trên mạng hỗ trợ việc truy cập dữ liệu từ xa giống nhƣ hệ thống file CODA Với NFS, các máy chạy Linux có thể chia sẻ các phân vùng đĩa trên mạng để sử dụng nhƣ là các phân vùng cục bộ của chính máy mình Hệ thống file NTFS: Với sự hỗ trợ này, hệ thống Linux có thể truy cập vào các phân vùng của hệ điều hành Microsoft Window NT Hệ. .. Linux cùng các hệ điều hành khác (trong các trƣờng hợp nhƣ thế, mỗi phiên bản Linux hoặc hệ điều hành khác đƣợc gán nhãn - label để phân biệt) Khi đó ta nhập nhãn của một trong những hệ điều hành hiện có trên máy trên dòng thông báo LILO boot: Ví dụ: LILO boot: linux Sau khi Linux đã đƣợc chọn để khởi động, trình init thực hiện, chúng ta sẽ thấy một khoảng vài chục dòng thông báo cho biết hệ thống phần... đã tạo ra file Hệ điều hành đảm bảo các chức năng liên quan đến file nên ngƣời dùng không cần biết file của mình lƣu ở vùng nào trên đĩa từ, bằng cách nào đọc/ghi lên các vùng của đĩa từ mà vẫn thực hiện đƣợc yêu cầu tìm kiếm, xử lý lên các file Hệ điều hành quản lý các file theo tên gọi của file (tên file) và một số thuộc tính liên quan đến file Để làm việc đƣợc với các file, hệ điều hành không chỉ... phân vùng khởi động (trên đĩa cứng hoặc đĩa mềm) Giả sử máy tính của chúng ta đã cài đặt Linux và sử dụng LILO để khởi động hệ điều hành LILO thích hợp với việc trên máy tính đƣợc cài đặt một số hệ điều hành khác nhau và theo đó, LILO còn cho phép ngƣời dùng chọn lựa hệ điều hành để khởi động Giai đoạn khởi động Linux tùy thuộc vào cấu hình LILO đã đƣợc lựa chọn trong tiến trình cài đặt Linux Trong