Tài liệu Tự học sử dụng Linux

pdf 146 trang phuongnguyen 6790
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu Tự học sử dụng Linux", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_tu_hoc_su_dung_linux.pdf

Nội dung text: Tài liệu Tự học sử dụng Linux

  1. Tự học sử dụng Linux Tác giả: Kostromin V. A. Dịch và cộng tác: Phan Vĩnh Thịnh Phiên bản: 0.9.4 Ngày 13 tháng 9 năm 2006
  2. Dành cho người dùng mới và rất mới
  3. Mục lục 1 HĐH Linux: lịch sử và các bản phân phối 2 1.1 Thế nào là HĐH nói chung và Linux nói riêng 2 1.1.1 Các hệ điều hành dạng UNIX 2 1.1.2 Một chút về lịch sử 3 1.1.3 Đặc điểm chính của HĐH Linux 6 1.2 Bản phân phối Linux 8 1.3 Yêu cầu đối với máy tính 11 1.4 Lấy Linux ở đâu? 12 2 Cài đặt HĐH Linux trên cùng máy tính với Windows 14 2.1 Chuẩn bị cài đặt 14 2.2 Phòng xa và những lời khuyên 16 2.3 Phân vùng trên đĩa và quá trình khởi động 18 2.3.1 Thế nào là cấu trúc “hình học của đĩa” 18 2.3.2 Phân vùng và bảng phân vùng của đĩa 18 2.3.3 Quá trình khởi động các HĐH của công ty Microsoft 20 2.3.4 Vấn đề với các đĩa lớn 22 2.4 Lựa chọn trình khởi động 23 2.4.1 Trình khởi động GRUB 23 2.4.2 Trình khởi động LILO 25 2.4.3 Các trình khởi động khác 26 2.4.4 Các phương án khởi động 27 2.5 Chuẩn bị các phân vùng trên đĩa 28 2.5.1 Lời khuyên khi tạo phân vùng 28 2.5.2 Chương trình để phân chia ổ đĩa 30 2.6 Windows NT và Linux: khởi động qua NT OS Loader 31 2.7 Sử dụng trình khởi động GRUB 34 2.7.1 Cài đặt GRUB 34 2.7.2 Cấu hình GRUB 34 2.8 Sử dụng trình khởi động LILO 36 2.8.1 Cài đặt và cấu hình LILO 36 2.8.2 Cài đặt các hệ điều hành khác sau Linux 39 2.8.3 Chuyển thư mục /boot lên phân vùng DOS 39 2.9 Khởi động Linux từ MS-DOS bằng loadlin.exe 40
  4. iv MỤC LỤC 3 Khởi động Linux lần đầu 43 3.1 Khởi động HĐH Linux 43 3.2 Đăng nhập vào hệ thống 44 3.3 Console, terminal ảo và shell 47 3.4 Soạn thảo dòng lệnh. Lịch sử lệnh 49 3.5 Ngừng làm việc với Linux 51 3.6 Trợ giúp khi dùng Linux 53 3.6.1 Các nguồn thông tin trợ giúp 53 3.6.2 Các trang trợ giúp man 54 3.6.3 Câu lệnh info 55 3.6.4 Câu lệnh help 56 3.6.5 Tài liệu đi kèm với bản phân phối và chương trình ứng dụng 56 3.6.6 Câu lệnh xman 57 3.6.7 Câu lệnh helptool 57 3.6.8 Sách và Internet 57 4 Làm quen với hệ thống tập tin ext3fs 60 4.1 Tập tin và tên của chúng 60 4.2 Thư mục 63 4.3 Công dụng của các thư mục chính 65 4.4 Dạng tập tin 70 4.4.1 Các tập tin thiết bị 70 4.4.2 Các ống có tên (pipes) 71 4.4.3 Các socket 72 4.4.4 Liên kết mềm 72 4.5 Quyền truy cập đến tập tin và thư mục 73 4.6 Các câu lệnh cơ bản để làm việc với tập tin và thư mục 79 4.6.1 Câu lệnh chown và chgrp 80 4.6.2 Câu lệnh mkdir 80 4.6.3 Câu lệnh cat 80 4.6.4 Câu lệnh cp 81 4.6.5 Câu lệnh mv 82 4.6.6 Câu lệnh rm và rmdir 82 4.6.7 Câu lệnh more và less 83 4.6.8 Câu lệnh tìm kiếm find và mẫu tên tập tin 83 4.6.9 Câu lệnh split 86 4.6.10 So sánh các tập tin và lệnh patch 87 4.7 Các câu lệnh lưu trữ và nén tập tin 88 4.7.1 Chương trình tar 89 4.7.2 Chương trình gzip 91 4.7.3 Chương trình bzip2 92 4.7.4 Sử dụng kết hợp tar với gzip và bzip2 94 4.8 Tạo và gắn các hệ thống tập tin 95
  5. MỤC LỤC v 5 Bash 100 5.1 Hệ vỏ là gì? 100 5.2 Các ký tự đặc biệt 101 5.3 Thực thi các câu lệnh 102 5.3.1 Thao tác ; 102 5.3.2 Thao tác & 103 5.3.3 Thao tác && và || 103 5.4 Đầu vào/đầu ra tiêu chuẩn 103 5.4.1 Dòng dữ liệu vào – ra 103 5.4.2 Lệnh echo 104 5.4.3 Lệnh cat 104 5.5 Chuyển hướng đầu vào/đầu ra, đường ống và bộ lọc 105 5.5.1 Sử dụng >, < và » 105 5.5.2 Sử dụng | 107 5.5.3 Bộ lọc 107 5.6 Tham biến và các biến số. Môi trường của hệ vỏ 108 5.6.1 Các dạng tham biến khác nhau 108 5.6.2 Dấu nhắc của hệ vỏ 110 5.6.3 Biến môi trường PATH 111 5.6.4 Biến môi trường IFS 112 5.6.5 Thư mục hiện thời và thư mục cá nhân 112 5.6.6 Câu lệnh export 112 5.7 Khai triển biểu thức 112 5.7.1 Khai triển dấu ngoặc 113 5.7.2 Thay thế dấu ngã (Tilde Expansion) 114 5.7.3 Phép thế các tham biến và biến số 114 5.7.4 Phép thế các câu lệnh 114 5.7.5 Phép thế số học (Arithmetic Expansion) 115 5.7.6 Phân chia từ (word splitting) 115 5.7.7 Khai triển các mẫu tên tập tin và thư mục (Pathname Ex- pansion) 115 5.7.8 Xóa các ký tự đặc biệt 116 5.8 Shell - một ngôn ngữ lập trình 116 5.8.1 Toán tử if và test (hoặc [ ]) 117 5.8.2 Toán tử test và điều kiện của biểu thức 117 5.8.3 Toán tử case 120 5.8.4 Toán tử select 120 5.8.5 Toán tử for 121 5.8.6 Toán tử while và until 122 5.8.7 Các hàm số 123 5.8.8 Tham số 123 5.8.9 Biến nội bộ (local) 123 5.9 Script của hệ vỏ và lệnh source 124 5.10 Câu lệnh sh 125
  6. vi MỤC LỤC 6 Sử dụng Midnight Commander 126 6.1 Cài đặt chương trình Midnight Commander 126 6.2 Vẻ ngoài của màn hình Midnight Commander 127 6.3 Trợ giúp 129 6.4 Sử dụng chuột 130 6.5 Điều khiển các bảng 131 6.5.1 Dạng danh sách tập tin 131 6.5.2 Những chế độ hiển thị khác 134 6.5.3 Các tổ hợp phím điều khiển bảng 136
  7. Danh sách hình vẽ 3.1 Màn hình khởi động của GRUB 44 6.1 Midnight Commander tiếng Việt 127 6.2 Màn hình Midnight Commander 128 6.3 Hộp thoại chọn định dạng hiển thị 131 6.4 Hộp thoại sắp xếp 134 6.5 Chế độ thông tin 135 6.6 Chế độ cây thư mục 135 6.7 Chế độ xem nhanh 136
  8. Danh sách bảng 1.1 Yêu cầu đối với phần cứng 11 2.1 Cấu trúc của sector khởi động chính 21 2.2 Nhu cầu sử dụng không gian đĩa của HĐH 28 3.1 Những câu lệnh đơn giản của Linux 46 3.2 Những phím soạn thảo dòng lệnh 50 3.3 Tổ hợp phím điều khiển lịch sử lệnh 52 3.4 Các phần chính của trợ giúp man 54 3.5 Phím sử dụng để xem trang man 55 4.1 Cấu trúc thư mục của Linux 66 4.2 Những tập tin thiết bị chính 71 4.3 Những tùy chọn chính của lệnh cp 81 4.4 Tiêu chí tìm kiếm của câu lệnh find. 85 4.5 Những tùy chọn chính của tar 89 4.6 Những tùy chọn chính của chương trình gzip 92 4.7 Những tùy chọn chính của chương trình bzip2 93 4.8 Những tùy chọn chính của câu lệnh mount 98 5.1 Các câu lệnh bộ lọc 108 5.2 Thay thế các tham biến đặc biệt 109 5.3 Ký tự xác định dạng dấu nhắc 111 5.4 Các ký tự tạo mẫu 116 6.1 Các tổ hợp phím di chuyển dùng chung 129 6.2 Di chuyển trong trình xem tập tin 129 6.3 Di chuyển khi xem trợ giúp 130
  9. Lời mở đầu Đây là bản dịch cuốn “Linux cho người dùng” (sêri sách tự học) của Kostromin Victor Alexeevich cộng thêm một vài kinh nghiệm sử dụng Linux của người dịch. Bản gốc được viết trên tiếng Nga. Theo yêu cầu của Kostromin A. V., xin được đưa ra các liên kết tới bản gốc sau đây: Cảm ơn Trước tiên cần cảm ơn Kostromin V. A. đã viết một cuốn sách về Linux cho người dùng mới tuyệt vời, hai bác Nguyễn Đại Quý và Nguyễn Đặng Hoàng Tuân đã giúp trong việc sử dụng LATEX. Bác Nguyễn Đại Quý đã đọc và sửa cho phiên bản 0.9. Xin hãy gửi thư nhắc người dịch tại teppi82@gmail.com nếu như người dịch có quên ai đó. Bản quyền Cuốn “Tự học sử dụng Linux” này sử dụng bản quyền Creative Commons Public License 2.5 ( Tác giả Kostromin V. A. cũng như người dịch và cộng tác không chịu trách nhiệm về hậu quả do việc sử dụng cuốn sách này gây ra. Mọi đề nghị sửa đổi, thông báo lỗi chính tả, lỗi kiến thức của bản dịch cũng như đề nghị giúp đỡ dịch xin gửi cho Phan Vĩnh Thịnh theo địa chỉ teppi82@gmail.com.
  10. Chương 1 HĐH Linux: lịch sử và các bản phân phối “Just for fun” – Linus Torvalds. Người dịch: Lịch sử luôn là điểm khởi đầu khi nghiên cứu một ngành khoa học nào đó. Không có ngoại lệ đối với Toán học, Vật lý, môn chuyên ngành của tôi – Hoá học và tất nhiên cả HĐH Linux. Trong chương đầu tiên của cuốn sách “Tự học sử dụng Linux” này chúng ta sẽ trả lời ngắn gọn cho câu hỏi “Linux là gì?”. Đồng thời nói đôi dòng về những điểm đặc biệt của Linux, yêu cầu của Linux đối với phần cứng, khái niệm bản phân phối Linux, và cách có được những bản phân phối này. Hơn thế nữa bạn đọc sẽ hiểu ít nhiều về OpenSource, GNU và FSF. 1.1 Thế nào là HĐH nói chung và Linux nói riêng 1.1.1 Các hệ điều hành dạng UNIX Hệ điều hành (HĐH) đó là một bộ các chương trình hỗ trợ việc điều khiển phần cứng của máy tính, tổ chức làm việc với các tập tin (trong đó có chạy và điều khiển việc thực hiện của các chương trình), và đồng thời thực thi sự giao tiếp với người dùng, tức là dịch các câu lệnh của người dùng và hiển thị kết quả làm việc của những lệnh này. Không có hệ điều hành thì máy tính không thực hiện được chức năng của mình. Trong trường hợp đó máy tính chỉ là một tập hợp các thiết bị điện tử không làm việc, không hiểu là để làm gì. Đến thời điểm hiện nay thì các hệ điều hành nổi tiếng nhất cho máy tính là Microsoft Windows (C) và UNIX. Windows bắt nguồn từ hệ điều hành MS-DOS trước đây làm việc trên các máy tính của hãng IBM. Hệ điều hành UNIX do nhóm các nhà phát triển Bell Labs viết ra vào năm 1969 dưới sự điều khiển của Dennis Ritchie, Ken Thompson và Brian Kernighan. Nhưng bây giờ khi nói đến hệ điều hành UNIX thường có ý không nói cụ thể một hệ điều hành cụ thể nào mà là một nhóm các hệ điều hành dòng UNIX (UNIX-liked OS). Chính bản thân từ UNIX (viết hoa tất cả các chữ cái) trở thành nhãn hiệu thương mại của tổng công ty AT&T.1 1Người dịch: Người mỹ “không ngại ngần” đăng ký nhãn hiệu thương mại bất kỳ thứ gì, kể cả Yoga mà bắt nguồn từ Ấn Độ.
  11. 1.1 Thế nào là HĐH nói chung và Linux nói riêng 3 Vào cuối những năm 70 của thế kỷ trước (thế kỷ XX) các nhà phát triển của trường đại học California ở Berkeley đã thêm vào mã nguồn của UNIX rất nhiều sự cải tiến trong đó có hỗ trợ giao thức2 TCP/IP (giao thức mạng chính hiện nay). Sản phẩm này nổi tiếng dưới tên BSD ("Berkeley Systems Distribution"). Điều đặc biệt ở chỗ bản quyền của sản phẩm cho phép người khác phát triển và cải tiến và chuyển kết quả thu được đến người thứ ba (cùng với mã nguồn hoặc không) với điều kiện là phải chỉ ra phần nào của mã được phát triển ở Berkeley. Hệ điều hành dòng UNIX, trong đó có BSD, lúc đầu được phát triển để làm việc với các máy tính nhiều người dùng – các mainframe. Nhưng dần dần cấu hình trang thiết bị của máy tính cá nhân cũng mạnh lên và hiện nay có khả năng cao hơn so với những mainframe của những năm 70 thế kỷ trước. Và và đầu những năm 90 một sinh viên của trường đại học Helsinki (Phần Lan), Linus Torvalds, đã bắt đầu phát triển một HĐH kiểu UNIX cho các máy tính cá nhân tương thích với IBM (IBM-compatible PC). 1.1.2 Một chút về lịch sử HĐH Linux vừa kỷ niệm sinh nhật lần thứ 15 của mình. Đây là bức thư mà Linus gửi vào nhóm tin tức comp.os.minix ngày 25 tháng 8 năm 1991 (được coi là ngày sinh nhật của HĐH này): From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki Hello everybody out there using minix - I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-) Linus (torvalds@kruuna.helsinki.fi) PS. Yes — it’s free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have :-(. Trong thư này Linus cho biết anh đang phát triển một hệ điều hành tự do cho các máy tính đời 386 (486) và yêu cầu những ai quan tâm cho biết những thành phần nào của hệ thống cho người dùng cần phải có đầu tiên. Những người dùng trong nhóm tin tức này đã làm việc dưới hệ điều hành Minux do giáo sư Andy 2protocol
  12. 4 HĐH Linux: lịch sử và các bản phân phối Tanenbaum viết ra để làm công cụ học tập cho các sinh viên lập trình. Minux làm việc trên các máy tính với bộ xử lý 286 và được Linus dùng làm mô hình cho HĐH mới. Tập tin phiên bản đầu tiên của Linux (phiên bản 0.01) được công bố trên Internet ngày 17 tháng 09 năm 1991. Linus Torvalds viết: “As I already men- tioned, 0.01 didn’t actually come with any binaries: it was just source code for people interested in what linux looked like. Note the lack of announcement for 0.01: I wasn’t too proud of it, so I think I only sent a note to everybody who had shown interest.” (“Như tôi đã nói trước đây, 0.01 không đi kèm theo binary nào: nó chỉ là mã nguồn cho những ai muốn biết linux trông ra sao. Chú ý rằng không có thông báo cho bản 0.01: tôi không tự hào lắm về nó, vì thế chỉ gửi thông báo đến tất cả những ai muốn thể hiện sự quan tâm.”)3 Sau đó ngày 05 tháng 10 năm 1991 phiên bản 0.02 ra đời. Đây là phiên bản đã có thể làm việc trên máy. Nếu bạn đọc quan tâm đến lịch sử của HĐH này thì hãy đọc trang web sau: Ở đó bạn sẽ nhận được thông tin chi tiết về lịch sử xuất hiện và phát triển Linux. Linus Torvalds không đăng ký bằng sáng chế cũng như không giới hạn việc phân phối HĐH mới này. Ngay từ đầu Linux đã được phân phối theo điều kiện của bản quyền General Public License (GPL)4 thường dùng cho các phần mềm ứng dụng Open Source và dự án GNU. Theo tiếng lóng của Linux thì bản quyền này đôi khi được gọi là Copyleft. Về bản quyền này, Open Source và dự án GNU cần phải nói đến một cách đặc biệt. Vào năm 1984 nhà bác học người mỹ Richard Stallman sáng lập ra Tổ chức phần mềm tự do (FSF, Free Software Foundation) có trang chủ nằm tại địa chỉ Mục đích của tổ chức này là loại trừ tất cả những điều cấm đoán và hạn chế phân phối, sao chép, sửa đổi, nghiên cứu chương trình ứng dụng. Bởi vì tính đến thời điểm bắt đầu xây dựng tổ chức thì các công ty thương mại giữ rất cẩn thận các chương trình ứng dụng của mình, bảo vệ nó bằng các bằng sáng chế, các dấu hiệu bảo vệ quyền tác giả, giữ bí mật nghiêm ngặt mã nguồn của chương trình viết trên các ngôn ngữ bậc cao (như C++). Stallman cho rằng việc này rất có hại đối với phát triển chương trình ứng dụng, dẫn đến việc giảm chất lượng chương trình và sự có mặt của rất nhiều lỗi không xác định được trong những chương trình này. Tồi tệ nhất là làm chậm quá trình trao đổi ý tưởng trong ngành lập trình, làm chậm quá trình tạo ứng dụng mới vì mỗi nhà lập trình sẽ phải viết lại từ đầu một ứng dụng thay vì dùng đoạn mã nguồn đã có trong ứng dụng khác. Trong khuôn khổ Tổ chức phần mềm tự do đã bắt đầu làm việc dự án GNU ( – dự án tạo chương trình ứng dùng miễn phí. GNU là từ viết tắt của GNU’s Not Unix, tức là những gì thuộc về dự án GNU không phải là một phần của Unix (vào thời gian đó thậm chí từ UNIX đã trở thành thương 3Người dịch: Rất thú vị là sau khi Linus Torvalds phát triển HĐH của mình thì giữa anh và giáo sư Andy Tanenbaum đã nổ ra một cuộc tranh cãi. Nếu bạn đọc quan tâm thì có thể tìm đọc những thư mà hai người này gửi cho nhau trong nhóm tin tức nói trên, hoặc tìm đọc cuốn “Linux: Just for fun”, một cuốn sách nói về đời tư của Linus Torvalds đến thời điểm anh làm cho Transmeta và việc phát triển HĐH Linux. 4Người dịch: Thật ra lúc đầu nhân Linux được phân phối theo bản quyền mà FSF không không nhận là tự do vì nghiêm cấm phân phối thương mại. Bản quyền này có thể tìm thấy trong những phiên bản đầu tiên của nhân trên ftp.kernel.org, ví dụ 0.01. Bản quyền được đổi sang GPL từ phiên bản 0.12, hãy xem RELNOTES-0.12 theo địa chỉ ở trên.
  13. 1.1 Thế nào là HĐH nói chung và Linux nói riêng 5 hiệu, do đó không còn tự do). Trong “Manifesto GNU” ( gnu/manifesto.html) vào năm 1985 Stallman viết rằng động lực để ông sáng lập ra FSF và dự án GNU đó là sự khó chịu trong quyền sở hữu của một số người đối với chương trình ứng dụng. Những gì do dự án GNU phát triển đề là tự do, nhưng không có nghĩa là chúng được phân phối không có bản quyền và không được luật pháp bảo vệ. Những chương trình Open Source (Mã nguồn mở) được phân phối theo điều kiện của bản quyền General Public License (GPL). Bạn có thể đọc bản quyền này theo địa chỉ Bản dịch tiếng Việt không chính thức nằm tại Nếu như nói một cách thật ngắn gọn thì bản chất của GPL như sau. Chương trình ứng dụng phân phối theo GPL được quyền phát triển, sửa đổi, chuyển hoặc bán cho người khác không hạn chế với một điều kiện là kết quả thu được cũng phải phân phối theo bản quyền copyleft. Điều kiện cuối là quan trọng và then chốt của bản quyền này. Nó bảo đảm rằng kết quả lao động của các nhà phát triển phần mềm tự do sẽ luôn luôn mở và không trở thành một phần của sản phẩm nào đó dùng bản quyền bình thường (ý nói sản phẩm đóng). Điều kiện này cũng phân biệt phần mềm tự do với phần mềm phân phối miễn phí. Nói như các nhà sáng lập ra FSF, thì bản quyền GPL “làm cho chương trình ứng dụng tự do và đảm bảo là chương trình này sẽ tự do”5. Gần như tất cả các chương trình ứng dụng phân phối theo điều kiện GPL có thể coi là miễn phí đối với người dùng (trong phần lớn các trường hợp để nhận được nó bạn chỉ phải trả tiền đĩa CD, DVD hoặc kết nối Internet). Điều đó không có nghĩa là các nhà lập trình không còn nhận được phần thưởng (tiền) cho công việc của mình. Ý tưởng chính của Stallman là ở chỗ không phải bán chương trình ứng dụng, mà bán chính sức lao động của nhà lập trình. Ở đây cần phải đưa ra ví dụ để bạn đọc hiểu rõ hơn: nguồn thu nhập có thể là các sản phẩm đi kèm hoặc dịch vụ cài đặt và cấu hình cho những máy tính mới hoặc phát triển cho những điều kiện làm việc mới, dạy cách sử dụng, v.v. . . Một phần thưởng tốt nữa đó là khi chương trình trở lên nổi tiếng thì tác giả của chương trình sẽ có điều kiện tìm một công việc có lương cao. Các nhà phát triển xvnkb ( unikey ( và pdfLaTeX ( là những người hiểu rõ nhất điều này. Hãy viết thư cho họ để học hỏi kinh nghiệm! Trong khuôn khổ của hoạt động Open Source nói chung và dự án GNU nói riêng, đã phát triển một lượng đáng kể các chương trình ứng dụng, nổi tiếng nhất trong số chúng đó là trình soạn thảo Emacs và trình biên dịch GCC (GNU C Compliler) – trình biên dịch ngôn ngữ C tốt nhất hiện nay. Việc mở mã nguồn đồng thời nâng cao rất nhiều chất lượng của chương trình ứng dụng: tất cả những gì tốt nhất, những ý tưởng và cách giải quyết mới được phân phối rộng rãi ngay lập tức, còn các lỗi sẽ được nhận ra và sửa nhanh chóng. Ở đây chúng ta gặp lại cơ chế đào thải (hay tốt hơn là chọn lọc) tự nhiên như trong thuyết sinh học của Darwin. Cơ chế này bị kìm nén trong thế giới chương trình ứng dụng thương mại. 5Người dịch: Bạn đọc cũng nên biết là sắp tới sẽ có phiên bản thứ 3 của GPL (GPLv3). Cùng với sự ra đời của phiên bản thứ 3 này đã nảy ra rất nhiều tranh cãi xung quanh tính tự do của bản quyền. Tham gia vào tranh cãi có cả người viết ra nhân Linux đầu tiên – Linus Torvalds.
  14. 6 HĐH Linux: lịch sử và các bản phân phối Tuy nhiên bây giờ xin quay lại với lịch sử của Linux. Cần nói rằng Linus Torvalds chỉ phát triển phần nhân (kernel) của hệ điều hành. Nhân này “đậu” đúng vào miền “đất lành”, vì trong dự án GNU đã phát triển số lượng lớn các tiện ích khác nhau. Nhưng để chuyển GNU thành một HĐH hoàn chỉnh thì chỉ còn thiếu nhân. Dự án GNU cũng đã bắt đầu phát triển nhân cho riêng mình (được gọi là Hurd), nhưng vì lý do nào đó đã bị chậm lại. Vì thế sự xuất hiện của nhân Linux là rất đúng lúc. Nó đồng nghĩa với việc ra đời của một hệ điều hành mới tự do phân phối cùng với mã nguồn mở. Stallman tất nhiên đã đúng khi đòi hỏi hệ điều hành Linux phải được gọi là GNU/Linux. Nhưng đã thành lệ người dùng thường sử dụng tên gọi của nhân làm tên gọi của hệ điều hành, và chúng ta cũng làm như vậy trong cuốn sách này. 1.1.3 Đặc điểm chính của HĐH Linux Do mã nguồn Linux phân phối tự do và miễn phí, nên ngay từ đầu đã có rất nhiều nhà lập trình tham gia vào quá trình phát triển hệ thống. Nhờ đó đến thời điểm hiện nay Linux là hệ điều hành hiện đại, bền vững và phát triển nhanh nhất, hỗ trợ các công nghệ mới gần như ngay lập tức. Linux có tất cả các khả năng, đặc trưng cho các hệ điều hành đầy đủ tính năng dòng UNIX. Xin đưa ra đây danh sách ngắn gọn những khả năng này. 1. Nhiều tiến trình thật sự Tất cả các tiến trình là độc lập, không một tiến trình nào được cản trở công việc của tiến trình khác. Để làm được điều này nhân thực hiện chế độ phân chia thời gian của bộ xử lý trung tâm, lần lượt chia cho mỗi tiến trình một khoảng thời gian thực hiện. Cách này hoàn toàn khác với chế độ “nhiều tiến trình đẩy nha” được thực hiện trong Windows 95, khi một tiến trình phải nhường bộ xử lý cho các tiến trình khác (và có thể làm chậm trễ rất lâu việc thực hiện). 2. Truy cập nhiều người dùng Linux không chỉ là HĐH nhiều tiến trình, Linux hỗ trợ khả năng nhiều người dùng làm việc cùng lúc. Khi này Linux có thể cung cấp tất cả các tài nguyên hệ thống cho người dùng làm việc qua các terminal ở xa khác nhau. 3. Swap bộ nhớ lên đĩa Swap bộ nhớ cho phép làm việc với Linux khi dung lượng bộ nhớ có hạn. Nội dung của một số phần (trang) bộ nhớ được ghi lên vùng đĩa cứng xác định từ trước. Vùng đĩa cứng này được coi là bộ nhớ phụ thêm vào. Việc này có làm giảm tốc độ làm việc, nhưng cho phép chạy các chương trình cần bộ nhớ dung lượng lớn mà thực tế không có trên máy tính. 4. Tổ chức bộ nhớ theo trang Hệ thống bộ nhớ Linux được tổ chức ở dạng các trang với dung lượng 4K. Nếu bộ nhớ đầy, thì HĐH sẽ tìm những trang bộ nhớ đã lâu không được sử dụng để chuyển chúng từ bộ nhớ lên đĩa cứng. Nếu có trang nào đó trong số những trang này lại trở thành cần thiết, thì Linux sẽ phục hồi chúng từ đĩa cứng (vào bộ nhớ). Một số hệ thống Unix cũ và một số hệ thống hiện đại
  15. 1.1 Thế nào là HĐH nói chung và Linux nói riêng 7 (bao gồm cả Microsoft Windows) chuyển lên đĩa tất cả nội dung của bộ nhớ thuộc về những ứng dụng không làm việc tại thời điểm hiện thời (tức là TẤT CẢ các trang bộ nhớ thuộc về ứng dụng sẽ được lưu lên đĩa khi không đủ bộ nhớ) và như vậy kém hiệu quả hơn. 5. Nạp môđun thực hiện “theo yêu cầu” Nhân Linux hỗ trợ việc cung cấp các trang bộ nhớ theo yêu cầu, khi này chỉ phần mã cần thiết của chương trình mới nằm trong bộ nhớ, còn những phần mã không sử dụng tại thời điểm hiện tại thì nằm lại trên đĩa. 6. Cùng sử dụng chương trình Nếu cần chạy một lúc nhiều bản sao của cùng một ứng dụng nào đó6, thì Linux chỉ nạp vào bộ nhớ một bản sao của mã chương trình và tất cả các tiến trình giống nhau cùng sử dụng một mã này. 7. Thư viện chung Thư viện – bộ các quá trình (thao tác) được chương trình dùng để làm việc với dữ liệu. Có một số thư viện tiêu chuẩn được dùng cùng lúc cho vài tiến trình. Trên các hệ thống cũ những thư viện đó nằm trong mỗi tập tin chương trình, và thực hiện cùng lúc những chương trình này dẫn đến hao hụt bộ nhớ không đáng có. Trên các hệ thống mới (bao gồm Linux) có hỗ trợ làm việc với các thư viện động (dynamic) và tĩnh (static) được chia ra, và như vậy cho phép giảm kích thước bộ nhớ bị ứng dụng chiếm. 8. Bộ đệm động của đĩa Bộ đệm của đĩa đó là một phần bộ nhớ của hệ thống dùng làm nơi lưu những dữ liệu thường dùng của đĩa, nhờ đó nâng cao rất nhiều tốc độ truy cập tới những chương trình và tiến trình thường dùng. Người dùng MS- DOS sẽ nhớ đến chương trình SmartDrive, chương trình này dự trữ một phần bộ nhớ có kích thước xác định để làm bộ đệm cho đĩa. Linux sử dụng hệ thống đệm linh động hơn: bộ nhớ được dự trữ cho đệm được tăng lên khi bộ nhớ không được sử dụng, và sẽ giảm xuống khi hệ thống hay tiến trình cần nhiều bộ nhớ hơn. 9. 100% tương ứng với tiêu chuẩn POSIX 1003.1. Hỗ trợ một phần các khả năng của System V và BSD POSIX 1003.1 (Portable Operating System Interface – giao diện của hệ điều hành lưu động) đưa ra giao diện tiêu chuẩn cho các hệ thống Unix, đó là một bộ các thủ tục ngôn ngữ C. Ngày nay giao diện này được tất cả các hệ điều hành mới hỗ trợ. Microsoft Windows NT cũng hỗ trợ POSIX 1003.1. Linux 100% tương ứng với tiêu chuẩn POSIX 1003.1. Thêm vào đó Linux còn hỗ trợ các khả năng của System V và BSD để tăng tính tương thích. 10. System V IPC Linux sử dụng công nghệ IPC (InterProcess Communication) để trao đổi thông tin giữa các tiến trình, để sử dụng tín hiệu và bộ nhớ chung. 6hoặc một người dùng chạy vài tiến trình giống nhau, hoặc nhiều người dùng chạy cùng một chương trình
  16. 8 HĐH Linux: lịch sử và các bản phân phối 11. Khả năng chạy chương trình của HĐH khác Trong lịch sử Linux không phải là hệ điều hành đầu tiên. Người ta đã viết ra hàng loạt các chương trình ứng dụng, trong đó có cả những chương trình có ích và không đến nỗi tồi, cho các HĐH đã phát triển trước Linux, bao gồm DOS, Windows, FreeBSD và OS/2. Để chạy những chương trình như vậy dưới Linux đã phát triển các trình giả lập (emulator) cho DOS, Windows 3.1, Windows 95 và Wine. Ngoài ra, còn có một loạt các chương trình tạo máy ảo7 mã nguồn mở cũng như sản phẩm thương mại: qemu, bochs, pearpc, vmware,. . . HĐH Linux còn có khả năng chạy chương trình dành cho bộ xử lý Intel của các hệ thống Unix khác, nếu hệ thống đáp ứng tiêu chuẩn iBCS2 (intel Binary Compatibility). 12. Hỗ trợ các định dạng hệ thống tập tin khác nhau Linux hỗ trợ một số lượng lớn các định dạng hệ thống tập tin, bao gồm các hệ thống tập tin DOS và OS/2, và cả các hệ thống tập tin mới, như reiserfs, HFS,. . . . Trong khi đó hệ thống tập tin chính của Linux, được gọi là Second Extended File System (ext2fs) và Third Extended File System (ext3fs) cho phép sử dụng không gian đĩa một cách có hiệu quả. 13. Khả năng hỗ trợ mạng Linux có thể gắn vào bất kỳ mạng nội bộ nào. Hỗ trợ tất cả các dịch vụ Unix, bao gồm Networked File System (NFS), kết nối từ xa (telnet, rlogin, ssh), làm việc trong các mạng TCP/IP, truy cập dial-up qua các giao thức SLIP và PPP,v.v. . . Đồng thời có hỗ trợ dùng Linux là máy chủ hoặc máy khách cho mạng khác, trong đó có chia sẻ (dùng chung, sharing) các tập tin và in từ xa trong các mạng Macintosh, NetWare và Windows. 14. Làm việc trên các phần cứng khác nhau Mặc dù đầu tiên HĐH Linux được phát triển cho máy tính cá nhân (PC) trên nền tảng Intel 386/486, bây giờ nó có thể làm việc trên tất cả các bộ vi xử lý Intel bắt đầu từ 386 và kết thúc là các hệ thống nhiều bộ xử lý Pentium IV, bao gồm cả các bộ xử lý 64bit. Đồng thời Linux còn làm việc trên rất nhiều bộ xử lý tương thích với Intel của các nhà sản xuất khác, như AMD. Trong Internet còn có những thông báo nói rằng trên các bộ xử lý Athlon và Duron của AMD Linux còn làm việc tốt hơn so với trên Intel. Ngoài ra còn có phiên bản Linux cho các bộ xử lý khác bao gồm ARM, DEC Alpha, SUN Sparc, M68000 (Atari và Amiga), MIPS, PowerPC và những bộ xử lý khác8. Xin được nói luôn là trong cuốn sách này chúng ta chỉ xem xét trường hợp Linux cho các máy tính tương thích với IBM. 1.2 Bản phân phối Linux Trong bất kỳ hệ điều hành nào cũng có thể chia ra 4 phần chính: nhân, cấu trúc (hệ thống) tập tin, trình dịch lệnh người dùng và các tiện ích. Nhân đó là 7cho phép sử dụng nhiều hệ điều hành trên một máy 8Người dịch: bản phân phối Linux hỗ trợ nhiều bộ xử lý nhất cần phải kể đến Debian ( debian.org)
  17. 1.2 Bản phân phối Linux 9 thành phần chính, nòng cốt của HĐH, nó điều khiển các thiết bị phần cứng và điều khiển việc thực hiện chương trình. Cấu trúc tập tin (hệ thống tập tin) – là hệ thống lưu tập tin trên các thiết bị lưu. Trình dịch lệnh hay hệ vỏ (shell) – là chương trình tổ chức giao tiếp giữa máy tính và người dùng. Và cuối cùng các tiện ích – đó đơn giản là các chương trình riêng lẻ, nói chung không khác so với những chương trình bình thường khác mà người dùng có thể chạy, nhưng có chức năng chính là thực hiện các công việc dịch vụ (service). Như đã nói ở trên, nếu chính xác thì từ “Linux” chỉ có nghĩa là nhân. Vì thế khi nói về hệ điều hành nói chính xác hơn sẽ là “hệ điều hành dựa trên nhân Linux”. Nhân của HĐH Linux hiện thời đang được phát triển dưới sự lãnh đạo của Linus Torvalds và phân phối một cách tự do (với bản quyền GPL) giống như một số lượng khổng lồ các chương trình ứng dụng và tiện ích khác. Một trong những kết quả của việc phân phối tự do chương trình ứng dụng cho Linux đó là có nhiều công ty cũng như nhóm các nhà phát triển độc lập đã phát hành ra các bản Linux khác nhau được gọi là “bản phân phối Linux”. Bản phân phối – đó là một bộ các chương trình ứng dụng bao gồm tất cả bốn phần chính của HĐH, tức là nhân, hệ thống tập tin, hệ vỏ shell và các tiện ích, đồng thời còn có thêm các chương trình cho công việc hàng ngày của người dùng. Thông thường tất cả những chương trình nằm trong bản phân phối Linux đều dùng bản quyền GPL. Rất có thể xuất hiện trong bạn đọc ý nghĩ rằng bất kỳ ai cũng có khả năng cho ra bản phân phối Linux, hay nói đúng hơn là bất kỳ người nào không lười sưu tập các chương trình tự do. Và suy nghĩ đó có phần nào đúng. Tuy nhiên các nhà phát triển của một bản phân phối Linux cần tạo ra ít nhất một chương trình cài đặt để đưa HĐH lên máy tính trống không chưa có HĐH nào. Ngoài ra, cần tìm cách giải quyết sự phụ thuộc và mâu thuẫn giữa các gói (và giữa các phiên bản của gói) chương trình. Và như chúng ta sẽ thấy ở sau đó không phải là bài toán đơn giản. Tuy vậy, trên thế giới đang có hàng trăm (hàng nghìn?) bản phân phối Linux và mỗi ngày lại xuất hiện các bản mới. Có thể tìm thấy danh sách tương đối đầy đủ cùng với đặc điểm ngắn gọn của mỗi bản phân phối trên linuxhq.com (còn có một số bản phân phối khác tiếng Anh). Ngoài ra, trên trang đó cũng như nhiều trang web khác còn có liên kết đến những danh sách bản phân phối khác, vì thế nếu muốn có thể tìm thấy tất cả những gì có trên thế giới (hầu hết những trang này dùng tiếng Anh và các bản phân phối Việt Nam ít được nói đến). Một vài tác giả đã thử phân loại các bản phân phối dựa trên những tiêu chí khác nhau: ˆ cấu trúc hệ thống tập tin ˆ chương trình cài đặt ˆ phương tiện dùng để cài đặt các gói chương trình ˆ thành phần của các tiện ích và chương trình ứng dụng có trong bản phân phối. Mặc dù hầu hết các tác giả cho rằng sự khác nhau giữa các bản phân phối là không cơ bản. Nhưng hiện nay có thể chia ít nhất 3 nhóm bản phân phối, mà đại diện của mỗi nhóm là Red Hat, Slackware và Debian.
  18. 10 HĐH Linux: lịch sử và các bản phân phối Vậy thì cần lựa chọn bản phân phối theo tiêu chuẩn nào? Theo ý kiến của tác giả thì đối với người dùng Việt Nam có hai tiêu chuẩn: thứ nhất phải có giao diện người dùng tiếng Việt và thứ hai phải có một nhóm các nhà phát triển hỗ trợ bản phân phối này. Và tốt nhất nếu nhóm các nhà phát triển này nhận được nguồn lợi từ sản phẩm Linux của mình, tức là làm việc như một công ty thương mại. Thậm chí chỉ trong khoảng thời gian không lâu mà tôi sử dụng Linux (khoảng 5 năm) đã có nhiều bản phân phối Việt Nam cũng như nước ngoài đã chào tạm biệt thế giới Linux vì nhóm hỗ trợ của chúng không thu được nhiều lợi nhuận và sau đó một thời gian ngừng hỗ trợ tác phẩm của mình. Đối với người dùng Linux Việt Nam hiện thời có hai lựa chọn: thứ nhất, sử dụng các sản phẩm Linux tiếng Việt do một số người tự nguyện duy trì; thứ hai, sử dụng các sản phẩm Linux lớn có hỗ trợ tiếng Việt. Chúng ta sẽ nói đến hai sự lựa chọn này một cách kỹ càng hơn. Lựa chọn thứ nhất, theo ý kiến của tôi không được ưu tiên ở đây. Lý do chính là chưa đạt được tiêu chuẩn thứ hai nêu trên. Hiện thời có một bản phân phối như vậy: vnlinux-CD (cùng với một vài biến thể) do anh Larry Nguyễn, một Việt kiều ở Mỹ duy trì. Lựa chọn thứ hai đó là sử dụng các bản phân phối hỗ trợ tiếng Việt tốt như Debian, Ubuntu và Mandriva, openSuSE cũng đang dần dần hỗ trợ tiếng Việt ( Lựa chọn thứ hai này được ưu tiên vì: ˆ chúng có hỗ trợ tiếng Việt và càng ngày càng hoàn thiện ˆ chúng có trình cài đặt tốt, hỗ trợ nhiều phần cứng khác nhau ˆ có thể cài đặt thêm các phần mềm khác một cách dễ dàng phần lớn chương trình đã được biên dịch sẵn cho mọi yêu cầu của người dùng ˆ những bản phân phối này được một nhóm các nhà phát triển duy trì, cập nhật thường xuyên thông thường là theo một lịch định sẵn. Ngoài ra còn đảm bảo là bạn sẽ nhận được phiên bản mới của nó trong tương lai. Không sợ trường hợp “đem con bỏ chợ”. Để kết thúc câu chuyện về lựa chọn bản phân phối Linux cần nói thêm là gần đây bác Nguyễn Đại Quý ( đã cho ra đời một bản phân phối mới hướng về người dùng Việt Nam – FCxVnOSS. Bản phân phối này dựa trên nền tảng của FC cộng thêm giao diện tiếng Việt và một số ứng dụng “mang tính Việt Nam” như chương trình gõ tiếng Việt, từ điển tiếng Việt,. . . Cần nói vài lời về đánh số phiên bản. Cần phân biệt số phiên bản của bản phân phối và số phiên bản của nhân. Khi nói đến phiên bản của Linux thường có ý là phiên bản nhân (vì một hệ điều hành là Linux chỉ khi nó sử dụng nhân Linux). Vì Linus Torvalds tiếp tục điều hành việc phát triển nhân, nên phiên bản của nhân tăng lên theo thứ tự, chứ không phân nhánh và nhân lên giống như trường hợp bản phân phối. Phiên bản nhân Linux thường được ký hiệu bằng ba số9, phân cách nhau bởi dấu chấm. Ví dụ, bản phân phối openSuSE Linux 10.1 được dựa trên nhân phiên bản 2.6.16.13, tức là Linux phiên bản 2.6.16.13. Phiên bản nhân với số thứ hai 9Người dịch: Điều này chỉ đúng với các phiên bản nhân trước 2.6. Từ 2.6 trở đi Linus và các nhà phát triển khác thử nghiệm dùng bốn số.
  19. 1.3 Yêu cầu đối với máy tính 11 lẻ (ví dụ, 2.5.0) thường không được sử dụng để tạo các bản phân phối, vì đó là phiên bản thử nghiệm (chỉ dành cho phát triển). Chúng được dành cho những người tình nguyện có mong muốn thử nghiệm để tìm ra các lỗi. Tất nhiên phiên bản như vậy có thể làm việc, nhưng không bền vững. Phiên bản với số thứ hai chẵn (ví dụ 2.6.16.13) được coi là làm việc ổn định. Tất nhiên là bạn có thể cài đặt bất kỳ phiên bản nào, nhưng đối với người dùng mới thì nên chọn phiên bản nhân với số thứ hai trong phiên bản là chẵn. Nếu cài đặt một bản phân phối đầy đủ thì đương nhiên lựa chọn nhân đã được các nhà phát triển làm giùm bạn đọc, nhưng cần biết cách đánh số phiên bản nếu khi nào đó bạn muốn cập nhật nhân Linux của mình. 1.3 Yêu cầu đối với máy tính Tôi đã đọc ở đâu đó nói rằng có những phiên bản Linux đặc biệt, làm việc thậm chí trên bộ xử lý 8086 với 512Kbyte bộ nhớ, còn phiên bản đặc biệt có thể chạy từ một hoặc hai đĩa mềm không cần đĩa cứng thì tôi đã gặp. Vì thế nếu bạn có một cái máy tính cũ, trên đó không thể chạy nổi Windows, thì có thể sử dụng nó để học Linux và rất có thể sẽ ngạc nhiên về khả năng của HĐH này. Nhưng trong cuốn sách này chúng ta sẽ không xem xét những trường hợp đặc biệt như vậy. Vì HĐH Linux sử dụng chế độ bảo vệ của bộ vi xử lý, nên để cài đặt HĐH này cần ít nhất là một máy tính có bộ xử lý 386. Theo các nguồn thông tin khác nhau thì tất cả các biến thể đều dùng tốt: SX, DX v.v. . . Xin đừng lo lắng, những máy tính sản xuất gần đây đáp ứng được toàn bộ những yêu cầu đã đưa ra và sẽ đưa ra dưới đây. Yêu cầu đối với phần cứng của hệ thống muốn cài đặt Linux còn được xác định bởi lựa chọn phần mềm của người dùng (và tức là sẽ phụ thuộc vào phiên bản của các phần mềm và ít nhiều vào bản phân phối). Bảng 1.1 dưới đây sẽ đưa ra một vài con số chỉ với mục đích giúp bạn đọc làm quen, những con số này là không chính xác10 nhưng không khác biệt nhiều giữa các bản Linux khác nhau. Bảng 1.1: Yêu cầu đối với phần cứng Mong muốn của người dùng Yêu cầu, MB Bộ nhớ Đĩa cứng Yêu cầu nhỏ nhất: chỉ làm việc trong giao diện văn 8 200 bản với dòng lệnh của shell, có đủ một số ứng dụng người dùng như vim, emacs,. . . Dùng được giao diện đồ hoạ X Window cùng với một 32 400 số trình quản lý cửa sổ nhỏ nhẹ như icewm, fluxbox, windowmaker. Dùng môi trường làm việc đồ hoạ KDE. 128 1000 Chạy các ứng dụng cần nhiều bộ nhớ (như GIMP, các 256 1500 ứng dụng nằm trong KOffice, OpenOffice.org). Như vậy Linux có một ưu điểm lớn đó là khả năng làm việc thậm chí trên 10Người dịch: bản gốc đưa ra một bản đã quá cũ, tôi xin đưa ra một bản mới dựa trên cơ sở của openSuSE 10.1.
  20. 12 HĐH Linux: lịch sử và các bản phân phối những máy rất cũ, mà trước đây chỉ có thể dùng MS DOS (tất nhiên là trong trường hợp này chúng ta chỉ thu được chế độ dòng lệnh, nhưng điều này không ngăn cản việc dùng các máy tính cũ làm việc có lợi ví dụ làm router11). Để bắt đầu học Linux thì chỉ cần có một máy tính với bộ xử lý 486, 16MB bộ nhớ và ổ cứng khoảng 300MB. Tất nhiên đối với dung lượng bộ nhớ cũng như cấu hình máy nói chung thì máy càng mạnh, càng nhiều bộ nhớ, ổ cứng càng rộng thì càng tốt. Không có gì là thừa thãi. Người dịch: Để kết thúc xin đưa ra đây trường hợp cấu hình máy của tôi: bộ xử lý 686, bộ nhớ 256Mb (+256Mb swap), 10GB ổ cứng dành cho cài đặt Linux, phần còn lại dành cho dữ liệu. Tôi hiện sử dụng openSuSE Linux 10.1 với môi trường làm việc KDE. Có thể làm việc đồng thời nhiều ứng dụng yêu cầu: OpenOffice.org, KBabel, Kile (dùng để viết những dòng này), StarDict (chương trình từ điển), Konqueror, GIMP. Nếu máy tính của bạn có thể làm việc với các hệ điều hành Windows 2000 và Windows XP thì việc chạy Linux trên nó sẽ không có gì khó khăn. 1.4 Lấy Linux ở đâu?12 Và trong phần cuối của chương thứ nhất chúng ta sẽ trả lời ngắn gọn cho câu hỏi “Lấy Linux ở đâu?”. Như đã nói ở trên, Linux cùng với một số lượng khổng lồ các chương trình ứng dụng được phân phối gần như miễn phí. Có nghĩa là người dùng không có ý định thay đổi chương trình hoặc mua bán những chương trình này, thì có toàn quyền sao chép toàn bộ bản phân phối Linux hoặc một phần bất kỳ của nó ở chỗ người quen, hoặc tải xuống từ Internet hoặc mua đĩa CD (DVD) Linux ở chỗ những người bán hàng đâu đó trên hè phố mà không sợ bị truy cứu vì vi phạm bản quyền (các chương trình có bản quyền thương mại thường dùng từ “sự đồng ý” giữa người dùng và nhà phân phối) của các nhà (công ty) phát triển. Trong số ba phương án kể trên thì đối với người dùng Linux Việt Nam phương án mua CD, DVD là tốt nhất. Cần nói thêm là những đĩa ghi vỉa hè thường có lỗi và có thể gây mất dữ liệu hoặc làm hỏng phần cứng. Tốt hơn hết là nên mua đĩa của một công ty máy tính hoặc qua một cửa hàng trên mạng. Khi đó còn có khả năng lựa chọn và có bảo đảm là sẽ đổi được đĩa xấu. Tất nhiên là chênh lệnh giá thành đĩa phải không quá cao, giá thành bán Linux bao nhiêu đó là quyền của người bán (ngoài ra giá thành cao còn có ở các bản phân phối chuyên nghiệp như Xandros, Novell Desktop,. . . ). Hiện giờ trên mạng Việt Nam đã xuất hiện một vài cửa hàng bán đĩa Linux. Địa chỉ cụ thể xin không đưa ra ở đây vì quảng cáo trong thế giới hiện đại đã không còn là miễn phí. Và việc giấu địa chỉ không làm ảnh hưởng đến những ai có mong muốn mua Linux để nghiên cứu. Cần nói riêng về hệ thống phát đĩa với bản phân phối Ubuntu một cách miễn phí. Chỉ cần vào địa chỉ đăng ký số lượng đĩa bạn cần, tất nhiên có kèm theo địa chỉ bưu điện, sau một thời gian khoảng 1 tháng – 11máy giúp chuyển hướng các gói mạng 12Phần này do người dịch viết
  21. 1.4 Lấy Linux ở đâu? 13 1 tháng rưỡi bạn sẽ nhận được chúng. Theo tôi nghĩ đây là cách tốt nhất nếu bạn không có điều kiện để mua đĩa.
  22. Chương 2 Cài đặt HĐH Linux trên cùng máy tính với Windows “Software is like sex, it’s good when it’s free” – Linus Torvalds. Thông thường trên các đĩa của bản phân phối Linux đã có hướng dẫn ngắn gọn cách cài đặt Linux. Ngoài ra, trên Internet bạn có thể tìm thấy rất nhiều cuốn sách nó về vấn đề này. Và tất cả các bản phân phối lớn (Debian, Slackware, Fedora, Mandrake, ) đều đã có cuốn hướng dẫn cài đặt rất chi tiết, cho mọi tình huống sử dụng. Hãy chờ đợi và hy vọng trong tương lai không xa sẽ có bản dịch Tiếng Việt của những cuốn sách này. Chính vì vậy trong cuốn sách này, tác giả sẽ không đưa ra các bước cụ thể của việc cài đặt, mà xin bạn đọc hãy tìm các cuốn hướng dẫn tương ứng. Thay vào đó là những gì bạn cần biết và chuẩn bị trước khi cài đặt, đồng thời, tác giả sẽ đi cụ thể và chi tiết vào những gì đặc biệt khi cài đặt Linux trên máy tính đã có một trong các hệ điều hành (HĐH) Windows cũng như việc khởi động nhiều hệ điều hành. Vấn đề ở chỗ, phần lớn người dùng Việt Nam trước khi bắt đầu học Linux đã làm quen và rất có thể đã có kinh nghiệm sử dụng các HĐH dòng Windows như Windows 98, Windows 2000 và Windows XP. Và trên thực tế thì tạm thời Linux khó có thể là HĐH đầu tiên mà người dùng làm quen. Như thế, một cách tự nhiên, nếu người dùng đã làm việc với HĐH Windows và quyết định thử nghiệm với Linux, thì họ không muốn mất đi môi trường làm việc quen thuộc của mình, cùng với những gì đã tạo ra và đã cấu hình dưới dưới Windows. Rất may là không nhất thiết phải đánh mất tất cả những thứ đó. Bởi vì trên một máy tính có thể cùng “chung sống hòa bình” hai HĐH và thậm chí nhiều hơn nữa (nếu có đủ chỗ trên đĩa!). Chính vì thế, ở phía dưới sẽ nói cách cài đặt HĐH Linux trên máy tính đã cài đặt một trong các hệ điều hành của hãng Microsoft. 2.1 Chuẩn bị cài đặt Có thể cài đặt Linux bằng một trong các cách sau: ˆ Từ ổ đĩa CD-ROM ˆ Từ bản sao chép Linux trên ổ đĩa cứng ˆ Từ máy chủ tập tin của mạng nội bộ qua NFS;
  23. 2.1 Chuẩn bị cài đặt 15 ˆ Từ máy tính khác trong mạng nội bộ qua SMB; ˆ Từ máy tính ở xa (ví dụ từ Internet) qua giao thức FTP; ˆ Từ một máy chủ WWW qua giao thức HTTP. Theo ý kiến cá nhân của tác giả thì thuận tiện và có tính thực tế nhất là cài đặt Linux từ CD-ROM, hơn nữa việc mua các đĩa CD bây giờ không gây khó khăn gì. Trước khi bắt đầu cài đặt, hãy thu thập (hãy viết lên một tờ giấy) tất cả những thông tin cấu hình cần thiết của máy tính. Nếu như máy tính của bạn tạm thời vẫn còn làm việc dưới HĐH Windows 95/98/2000/XP, thì bạn sẽ tìm thấy rất nhiều thông tin nếu nhấn chuột phải vào biểu tượng My Computer, chọn lệnh Properties. Ở đây bạn có thể tìm thấy gần hết tất cả thông tin cần thiết. Nếu như bạn không thấy thông tin nào đó, thì cần tìm kiếm theo các cách khác, kể cả việc mở vỏ máy và đọc những dòng chữ trên thiết bị. Để giúp bạn đọc, xin được đưa ra đây danh sách những thông tin cần thu thập. Xin đừng lười biếng và hãy cố gắng ghi càng nhiều dữ liệu về một thiết bị càng tốt (tất cả những thông tin có thể tìm thấy), những dữ liệu này sẽ cần đến khi cài đặt và cấu hình, khi mà việc tìm kiếm chúng sẽ khó khăn hơn. ˆ BIOS: – nhà sản xuất; – số hiệu phiên bản. ˆ Controller ổ đĩa cứng: loại (IDE hay SCSI) và dung lượng của ổ đĩa (nếu như bạn đọc dùng đĩa IDE, thì cần kiểm tra xem BIOS có hỗ trợ việc truy cập ở chế độ LBA hay không): – hda (Master trên controller số 1 hay Primary Master); – hdb (Slave trên controller số 1 hay Primary Slave); – hdc (Master trên controller số 2 hay Secondary Master); – hdd (Slave trên controller số 2 hay Secondary Slave). – nhà sản xuất và số mẫu mã của adapter SCSI (nếu có). ˆ Dung lượng của bộ nhớ (tính bằng Kilobyte ˆ CD-ROM: – Giao diện (IDE, SCSI, hay giao diện khác); – đối với các ổ đĩa CD-ROM không phải IDE, cũng như SCSI - nhà sản xuất và số mẫu mã. ˆ Chuột: – loại chuột (serial, PS/2, hay bus mouse); – giao thức (Microsoft, Logitech, MouseMan, v.v. . . );
  24. 16 Cài đặt HĐH Linux trên cùng máy tính với Windows – số nút; – đối với chuột cắm vào cổng nối tiếp thì cần số thứ tự của cổng đó. ˆ Cạc màn hình – nhà sản xuất; – số mẫu mã (hay chipset sử dụng) – dung lượng bộ nhớ; ˆ Màn hình – nhà sản xuất – số mẫu mã; – các giá trị giới hạn (min, max) của tần số làm mới theo chiều dọc và theo chiều ngang (những giá trị này bạn đọc chỉ có thể tìm thấy trong tài liệu đi kèm với màn hình, Windows không hiển thị những giá trị này, và chúng rất quan trọng trong khi cấu hình giao diện đồ họa). ˆ Nếu như bạn đọc muốn kết nối mạng (mà UNIX nói chung là HĐH dành cho mạng), thì hãy ghi lại những dữ liệu sau: – nhà sản xuất và số mẫu mã cạc mạng; – địa chỉ IP của mình; – tên của máy tính trong mạng; – mặt nạ mạng con (subnet mask); – địa chỉ IP của gateway; – địa chỉ IP của các máy chủ tên miền (DNS server); – địa chỉ IP của máy chủ WINS(Windows Internet Name Service); – tên miền của công ty bạn đọc. ˆ Loại và nhà sản xuất cạc âm thanh và game controller (nếu như có) 2.2 Phòng xa và những lời khuyên Trước khi cài đặt HĐH Linux sau Windows, rất nên thực hiện vài thao tác “phòng xa” (“phòng cháy hơn chữa cháy”). Vì rất có thể bạn đọc sẽ phải phân vùng lại ổ đĩa, thay đổi bản ghi khởi động (Boot Record) và làm việc với các tập tin khởi động cũng như các tập tin cấu hình. Các thao tác này không phải lúc nào cũng đem lại đem lại một kết quả theo ý muốn, và trong trường hợp xấu có thể máy tính của bạn đọc sẽ không khởi động nữa. Có biết cách thoát ra khỏi tình huống này và phục hồi dữ liệu cần thiết không đó còn là một câu hỏi. Nhưng rơi vào tình huống như vậy hết sức dễ dàng nhất là với người dùng lần đầu tiên cài đặt Linux. Chính vì vậy, đầu tiên, cần tạo một đĩa mềm khởi động hay một đĩa mềm giúp phục hồi hệ thống (nếu bạn đọc còn chưa tạo). Thứ hai, cần ghi lại những dữ liệu có giá trị (backup). Và thứ ba, chuẩn bị các tập tin (đĩa mềm, CD) cài đặt
  25. 2.2 Phòng xa và những lời khuyên 17 cho hệ thống cũ. Một lời khuyên quan trọng khác: nếu có gì đó xảy ra không theo ý muốn thì không nên hoang mang. Xin chia sẻ một kinh nghiệm buồn: khi lần đầu tiên tác giả cài Linux trên máy tính đã có Windows NT, và kết quả là máy tính không thể khởi động được. Không hiểu hết vấn đề tác giả nghĩ là không còn cách gì khác ngoài định dạng lại ổ đĩa và cài đặt lại từ đầu. Bây giờ thì tác giả đã hiểu là có thể phục hồi lại nếu như không quyết định quá vội vàng. Vì vậy có thể nói rằng Werner Almesberger đúng, khi trong hướng dẫn sử dụng LILO có đưa ra những lời khuyên sau cho người dùng khi rơi vào trường hợp khó khăn như vậy: ˆ Không hoảng hốt. Nếu như có gì đó không làm việc, hãy thử mọi cách để tìm ra nguyên nhân, kiểm tra lại nhiều lần thao tác của mình. Chỉ sau khi đó mới thực hiện các bước sửa lỗi. ˆ Hãy đọc tài liệu. Đặc biệt trong các trường hợp, khi hệ thống làm những gì bạn đọc không mong đợi. Xin thêm một lời khuyên phổ biến sau: * Hãy xem các tập tin log, tức là các tập tin ghi lại sự kiện của hệ thống (cần tìm chúng trong thư mục /var/log). Như đã nói ở trên, quá trình cài đặt HĐH Linux nói riêng không phải là đề tài của cuốn sách. Người dùng cần tìm các cuốn hướng dẫn tương ứng. Tuy nhiên, tác giả cũng muốn đưa ra vài lời khuyên để giúp người dùng đưa ra quyết định trong khi cài đặt. Thứ nhất, đừng vội vàng và hãy chú ý đọc những thông báo sẽ hiển thị trên màn hình, và hãy suy nghĩ kỹ khi chọn câu trả lời. Để minh chứng cho lời khuyên này xin được kể lại trường hợp khi tác giả cài Red Hat 7.1, và tự động nhấn lên nút Next, vì cho rằng phương án theo mặc định là đủ. Kết quả là tác giả không thể truy cập được đến máy này qua các giao thức mạng (telnet, ftp, NFS, Samba), mặc dù đã cấu hình giao diện mạng cho máy. Nguyên nhân là trong phương án theo mặc định thì tường lửa được cài đặt, và tường lửa đóng hết các truy cập từ mạng. Để mở truy cập này, thì trong quá trình cài đặt cần chỉ rõ các dịch vụ được mở. Nhưng chúng ta quá vội vàng! Thứ hai, tác giả khuyên không nên đồng ý với việc tự động khởi động vào giao diện đồ họa. Vì cuối cùng người dùng không khó khăn gì khi gõ câu lệnh startx, còn việc cấu hình giao diện đồ họa (nếu có gì đó làm việc không đúng) với người dùng mới rất khó thành công. Sau khi làm xong các công việc phòng xa, cần quyết định sẽ tổ chức khởi động nhiều HĐH như thế nào, chuẩn bị các ổ đĩa (phân vùng) để cài đặt, tức là cần chia ổ đĩa thành số phân vùng cần thiết. Nhưng trước khi chuyển sang các bước cụ thể để chuẩn bị ổ đĩa, xin được nói qua một chút về cấu trúc của đĩa và quá trình khởi động HĐH. Nếu ai đó không đủ kiên nhẫn để đọc phần lý thuyết này, thì có thể bỏ qua chúng và chuyển thẳng đến vấn đề chọn chương trình khởi động.
  26. 18 Cài đặt HĐH Linux trên cùng máy tính với Windows 2.3 Phân vùng trên đĩa và quá trình khởi động 2.3.1 Thế nào là cấu trúc “hình học của đĩa” Như bạn đọc biết, đĩa cứng gồm vài đĩa có phủ lớp từ tính, nằm trên cùng một trục và quay với vận tốc lớn. Đọc/Ghi dữ liệu được thực hiện bởi các đầu đọc nằm giữa các đĩa này, di chuyển từ tâm đĩa ra rìa ngoài của đĩa. Vòng tròn đầu đọc vẽ ra trên các đĩa khi quay quanh chúng gọi là rãnh (track), còn tập hợp các rãnh nằm chồng lên nhau gọi là cylinder. Mỗi rãnh lại chia thành các sector, và có thể ghi vào mỗi sector 512 byte thông tin. Vì thế đặc điểm của một ổ đĩa thường là tập hợp ba sô: số cylinder/số rãnh trong cylinder/số sector trên rãnh hay còn viết tắt là C/H/S (ba chữ cái đầu tiên của các thuật ngữ Tiếng Anh tương ứng: Cyliner/Head/Sector). Ba số này gọi là cấu trúc “hình học của đĩa”. Đĩa với cấu trúc hình học C/H/S có dung lượng C*H*S*512 byte. Đĩa cứng là các thiết bị khối, tứ là đọc và ghi thông tin theo các khối, và kích thước nhỏ nhất của khối bằng một sector (512 byte). Để có thể ghi thông tin lên đĩa, cần đặt đầu đĩa đúng vị trí, tức là chỉ cho controller biết cần ghi thông tin này vào sector nào. Sector được đánh địa chỉ theo số thứ tự cylinder, số thứ tự đầu đọc (hay rãnh) và số thứ tự sector trên rãnh. 2.3.2 Phân vùng và bảng phân vùng của đĩa Trong các hệ thống Intel ổ đĩa thường được chia thành các phân vùng. Rất có thể nguyên nhân của việc phân vùng là nguyên nhân lịch sử: các phiên bản MS-DOS đầu tiên không thể sử dụng được các đĩa lớn, mà dung lượng đĩa lại phát triển nhanh hơn khả năng của DOS. Khi đó đã nghĩ ra việc chia ổ đĩa thành các phân vùng. Để làm được điều này, trong sector số 0 của đĩa (sector số 0 của rãnh đầu tiên trong cylinder số 0) ghi nhớ bảng chia ổ đĩa thành các phân vùng (partition table). Mỗi phân vùng được dùng như một đĩa vật lý riêng rẽ. Một trường hợp nói riêng đó là trong các phân vùng khác nhau có thể cài đặt các hệ điều hành khác nhau. Bảng phân vùng chứa 4 bản ghi 16 byte cho 4 phân vùng chính. Mỗi bản ghi có cấu trúc như sau: struct partition { char active; /* 0x80: phân vùng kích hoạt, 0: không kích hoạt */ char begin[3]; /* CHS sector đầu tiên, 24 bit char type; /* loại phân vùng (ví dụ, 83 LINUX_NATIVE) */ char end[3]; /* CHS sector cuối cùng, 24 bit */ int start; /* số của sector đầu tiên (32-bit, tính từ 0) */ int length; /* số sector có trong phân vùng (32 bit) */ }; Bảng phân vùng đĩa thường được tạo bởi chương trình fdisk. Trên HĐH Linux ngoài chương trình fdisk “truyền thống” (tuy vậy rất khác so với chương trình fdisk trong MS-DOS và Windows), còn có hai chương trình để làm việc với phân vùng đĩa: cfdisk và sfdisk. Chương trình cfdisk, giống như fdisk chỉ dành để làm việc với bảng phân vùng đĩa: nó không quan tâm chú ý đến thông tin có trên đĩa. Chỉ khác biệt với fdisk ở giao diện thuận tiện: chỉ dẫn sử dụng
  27. 2.3 Phân vùng trên đĩa và quá trình khởi động 19 lệnh và hệ thống trình đơn (thực đơn). Chương trình sfdisk có vài khả năng cao hơn, ví dụ, cho phép thao tác trên các phân vùng đã có của đĩa. DOS sử dụng trường begin và end của bảng phân vùng và Interrupt 13 của BIOS (Int 13h) để truy cập tới đĩa, vì thế không thể sử dụng đĩa có dung lượng lớn hơn 8,4 Gbyte, ngay cả với các BIOS mới (về vấn đề này sẽ nói đến ở sau), còn phân vùng thì không thể lớn hơn 2,1 Gbyte (nhưng đây là do hạn chế của hệ thống tập tin FAT16). Linux thì chỉ sử dụng trường start và length của bảng phân vùng đĩa và hỗ trợ các phân vùng chứa đến 232 sector, tức là dung lượng có thể đạt 2 Tbyte Vì trong bảng chia ổ đĩa chỉ có 4 dòng cho các phân vùng, số phân vùng chính trên đĩa ngay từ đầu dã hạn chế: không thể lớn hơn 4. Khi mà 4 phân vùng trở thành ít, thì người ta sáng chế ra phân vùng lôgíc. Một trong số các phân vùng chính trở thành mở rộng (loại phân vùng - 5 hay F hay 85 trong hệ cơ số mười sáu). Và trong phân vùng mở rộng người ta tạo ra các phân vùng lôgíc. Phân vùng mở rộng không được sử dụng trực tiếp mà chỉ dùng để ghi các phân vùng lôgíc. Sector đầu tiên của phân vùng mở rộng ghi nhớ bảng phân vùng với bốn đầu vào: một dùng cho phân vùng lôgíc, một cho phân vùng mở rộng khác, còn hai cái còn lại không được sử dụng. Mỗi phân vùng mở rộng có một bảng chia của mình, trong bảng này, cũng giống như trong phân vùng mở rộng chính, chỉ sử dụng có hai dòng để đưa ra một phân vùng lôgíc và một phân vùng mở rộng. Như vậy, thu được một chuỗi các mắt xích từ bảng phân vùng, mắt xích đầu tiên mô tả ba phân vùng chính, và mỗi mắt xích tiếp theo – một phân vùng lôgíc và vị trí của bảng tiếp theo. Chương trình sfdisk trên Linux cho thấy toàn bộ chuỗi này: [root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16 /dev/hda2 190 783 594 4771305 5 Extended /dev/hda3 0 — 0 0 0 Empty /dev/hda4 0 — 0 0 0 Empty /dev/hda5 190+ 380 191- 1534176 6 FAT16 — 381 783 403 3237097+ 5 Extended — 190 189 0 0 0 Empty — 190 189 0 0 0 Empty /dev/hda6 381+ 783 403- 3237066 7 HPFS/NTFS — 381 380 0 0 0 Empty — 381 380 0 0 0 Empty — 381 380 0 0 0 Empty Số phân vùng lôgíc theo nguyên tắc không hạn chế, vì mỗi phân vùng lôgíc có thể chứa bảng phân vùng và các phân vùng lôgíc của mình. Tuy nhiên trên thực thế vẫn có những hạn chế. Ví dụ, Linux không thể làm việc với hơn 15 phân vùng trên các đĩa SCSI và hơn 63 phân vùng trên đĩa IDE. Phân vùng mở rộng trên một đĩa vật lý, hay trong một phân vùng mở rộng chứa nó (có thể gọi là “mẹ”) chỉ có thể làm một: không một chương trình phân
  28. 20 Cài đặt HĐH Linux trên cùng máy tính với Windows chia ổ đĩa nào trong số đã có (fdisk và tương tự) có thể tạo thêm một phân vùng mở rộng thứ hai. Ổ đĩa trên Linux nói riêng (ổ đĩa vật lý) được truy cập qua tên của thiết bị: /dev/hda, /dev/hdb, /dev/sda, v.v. . . Các phân vùng chính có thêm số 1- 4 trong tên thiết bị: /dev/hda1, /dev/hda2, /dev/hda3, còn phân vùng lôgíc thì có các tên: /dev/hda5, /dev/hda6, /dev/hda7 . . . (bắt đầu từ số 5). Từ những gì đề cập đến ở trên có thể suy ra tại sao lại có thể bỏ qua các tên như /dev/hda3 hay /dev/hda4 (đơn giản là phân vùng chính thứ ba và thứ tư không được tạo ra) và ngay sau /dev/hda2 bạn đọc thấy /dev/hda5 (phân vùng lôgíc trong phân vùng mở rộng /dev/hda2), và sau đó thì việc đánh số lại theo thứ tự thông thường. Trong Windows các phân vùng lôgíc nhận được tên (chữ cái), bắt đầu từ chữ cái cuối dùng dành cho phân vùng chính. Ví dụ nếu một đĩa cứng có hai phân vùng chính (C: và D:) và một phân vùng mở rộng, trong phân vùng mở rộng tạo ra hai phân vùng lôgíc, thì những phân vùng lôgíc này sẽ được đặt tên E: và F:. Xin nói thêm, trong Windows NT và 2000/XP có thể thay đổi tên của các phân vùng đĩa. 2.3.3 Quá trình khởi động các HĐH của công ty Microsoft Dù hệ điều hành có là gì, thì để có thể bắt đầu điều khiển máy tính, cần nạp HĐH vào bộ nhớ. Vì thế hãy xem xét qua quá trình khởi động của các HĐH khác nhau. Chúng ta chỉ quan tâm đến việc khởi động từ ổ đĩa cứng, nên sẽ không xem xét đến việc khởi động từ đĩa mềm, CD-ROM và qua mạng. Hãy bắt đầu từ MS-DOS và MS Windows cũ (xin đừng quên rằng, việc phát triển và hoàn thiện máy tính cá nhân song song với sự phát triển của HĐH của Microsoft và những quyết định sử dụng trong các HĐH này có ảnh hưởng mạnh đến quyết định của các nhà phát triển thiết bị). Như bạn đọc biết, khi bật máy tính đầu tiên sẽ chạy chương trình POST (Power On Self Test). Chương trình xác định dung lượng bộ nhớ, thử nghiệm bộ nhớ, và xác định các thành phần khác (bàn phím, ổ cứng. . . ), khởi động các thẻ adaptor. Trên màn hình thường xuất hiện các thông báo về dung lượng bộ nhớ, về việc thử nghiệm bộ nhớ, danh sách các thiết bị nhận ra (ổ đĩa cứng và mềm, bộ xử lý, cổng COM và v.v. . . ). Sau khi hoàn thành việc thử nghiệm POST gọi Int 19h. Công việc của Int 19h là tìm thiết bị khởi động. Việc tìm kiếm thực hiện theo thứ tự xác định trong Setup BIOS và theo cách thăm dò sector số 0 của các thiết bị tương ứng. Nếu đĩa có thể khởi động, thì trong sector số 0 của đĩa có bản ghi khởi động chính – Master Boot Record (MBR). Hai byte cuối cùng của MBR – “số màu nhiệm”, là dấu hiệu cho biết sector có MBR, và theo đó đĩa có thể khởi động. Ngoài “số màu nhiệm” MBR còn chứa bảng phân vùng đĩa đã nói ở trên, và một chương trình nhỏ – trình khởi động chính, kích thước chỉ có 446 (0x1BE) byte. Bảng 2.1 cho thấy cấu trúc của sector khởi động chính sau khi cài đặt Win- dows. MS-DOS, Windows95 và NT ghi nhớ DOS MBR trong khi cài đặt. Ngoài ra cũng có thể tạo MBR của MS với câu lệnh DOS sau: fdisk /mbr. Xin trở lại với quá trình khởi động. Int 19h của BIOS nạp trình khởi động
  29. 2.3 Phân vùng trên đĩa và quá trình khởi động 21 Bảng 2.1: Cấu trúc của sector khởi động chính Dịch chuyển Nội dung 0x000 Mã của trình khởi động chính 0x1BE Bảng phân vùng ổ đĩa 0x1FE “Số màu nhiệm” (0xAA55) chính vào bộ nhớ máy tính và chuyển quyền điều khiển cho chương trình này. Nhưng chương trình “bé nhỏ” này không đủ khả năng khởi động HĐH; tất cả những gì mà nó có thể làm – đó là nạp vào bộ nhớ chương trình mạnh hơn – trình khởi động thứ hai. Để làm được điều này, nó tìm trong bảng phân vùng kích hoạt và đọc vào bộ nhớ trình khởi động thứ hai, bắt đầu từ sector lôgíc đầu tiên của phân vùng kích hoạt. Hãy chú ý đến cụm từ “bắt đầu từ”. Vì trình khởi động thứ hai trên các hệ thống khác nhau có độ dài khác nhau. Trong phân vùng được định dạng dưới hệ thống tập tin FAT, trình khởi động thứ hai chiếm một sector (512 byte). Trong phân vùng định dạng dưới hệ thống tập tin NTFS, trình khởi động thứ hai chiếm vài sector. Trình khởi động thứ hai nạp lớp chương trình đầu tiên, cần thiết cho việc khởi động hệ điều hành. Trong trường hợp MS DOS chương trình khởi động động nạp IO.SYS theo địa chỉ 700h, sau đó MSDOS.SYS và chuyển quyền điều khiển cho SYSINIT của môđun IO.SYS. Nếu vì lý do nào đó không tìm thấy trên đĩa phân vùng kích hoạt, thì quá trình khởi động sẽ tiếp tục với việc xử lý Int 18h. Trường hợp này trên thực tế rất hiếm khi sử dụng, nhưng khả năng này có thể có ích trong trường hợp nào đó. Trong khi khởi động từ xa, khi hệ điều hành khởi động từ máy chủ, thì Int này được POST chuyển hướng lên ROM của cạc mạng. Đối với các HĐH khác của Microsoft thì quá trình khởi động diễn ra tương tự. ˆ Windows95 khởi động giống như DOS nhưng thay thế IO.SYS và MS- DOS.SYS bởi các tập tin của mình. Các tập tin DOS được giữ lại dưới các tên tương ứng IO.DOS và MSDOS.DOS. Khi bạn đọc chọn khởi động DOS, Windows95 sẽ đổi tên các tập tin của mình với phần mở rộng w40 và phục hồi tên ban đầu của các tập tin hệ thống của DOS. Quá trình khởi động tiếp tục với việc nạp IO.SYS. Như thế, sector khởi động của DOS và Windows95 là như nhau. ˆ Windows NT4 sử dụng MBR DOS, nhưng thay thế bản ghi khởi động của phân vùng kích hoạt bằng cách thay thế NTLDR vào chỗ IO.SYS. Đây là một chương trình mạng và có thể làm được nhiều thứ. Ví dụ, có thể tìm tập tin boot.ini và nếu như tham số timeout lớn hơn 0, thì đưa ra trình đơn (thực đơn) khởi động. Mỗi dòng của phần [operating systems] trong tập tin boot.ini xác định một phương án (một HĐH) khởi động và được viết theo mẫu sau: địa_chỉ_trình_khởi_động_thứ_hai=‘‘tên_gọi_của_phương_án’’ Địa chỉ của trình khởi động thứ hai có thể là một phân vùng cụ thể nào đó của đĩa cũng như tập tin khởi động. Dưới đây là một ví dụ tập tin boot.ini:
  30. 22 Cài đặt HĐH Linux trên cùng máy tính với Windows [operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4" C:\="Microsoft Windows" C:\BOOTSECT.LNX="Linux" Nếu người dùng chọn NT, thì sẽ khởi động theo địa chỉ phân vùng được chỉ trên dòng đầu tiên. Trên dòng tương ứng với phương án Microsoft Windows, chỉ đưa ra “C:\”, vì tên của tập tin khởi động được lấy theo mặc định: bootsect.dos. Tập tin được nạp vào bộ nhớ và quá trình khởi động được tiếp tục giống như khi bản ghi khởi động được nạp bởi mã chương trình từ MBR. Đối với việc khởi động các hệ thống khác, có thể sử dụng cách đó. Chỉ cần thêm vào boot.ini các dòng chứa liên kết đến tập tin khởi động khác. Khi chọn các dòng này sẽ khởi động HĐH tương ứng. Trong ví dụ trên Linux cũng được khởi động theo các này. Trong tập tin C:\BOOTSECT.LNX cần ghi nội dung của bản ghi khởi động, tạo bởi Linux (nói đúng hơn – LILO, trình khởi động tiêu chuẩn của Linux). 2.3.4 Vấn đề với các đĩa lớn Trên MS-DOS và các phiên bản đầu tiên của Windows truy cập tới đĩa (trong đó có cả bước khởi động đầu tiên của HĐH) được tổ chức qua Int 13 (Int 13h) của BIOS. Khi này sử dụng sự đánh địa chỉ sector trên đĩa trên cơ sở C/H/S (xem trên). Chính xác hơn: ˆ AH — chọn thao tác; ˆ CH — 8 bit nhỏ hơn của số cylinder; ˆ CL — 7-6 bit tương ứng bit lớn của số cylinder, 5-0 tương ứng số sector; ˆ DH — số của đầu đọc; ˆ DL — số của đĩa(80h hay 81h). (Cần lưu ý rằng việc đánh số cylinder vật lý và rãnh thường bắt đầu từ 0, còn sector trên rãnh đánh số bắt đầu từ 1). Tuy nhiên trên thực tế số đầu đọc không quá 16, còn số sector trên rãnh – không quá 63, và dù có dùng 10 bit để chỉ ra cylinder, BIOS vẫn không thể làm việc với đĩa dung lượng lớn hơn 1024*63*16*512 = 528 Mbyte. Để vượt qua hạn chế này, người ta áp dụng nhiều cách “láu cá” khác nhau. Ví dụ, Extended CHS (ECHS) hay “Large disk support” (đôi khi còn gọi là “Large”) sử dụng ba bit chưa dùng đến của số thứ tự đầu đọc để tăng số cylinder. Cách này cho pehsp sử dụng cấu trúc “hình học giả mạo của đĩa” với 1024 cylinder, 128 đầu đọc và 63 sector/rãnh. Biến đổi Extended CHS thành địa chỉ CHS thực (có thể chứa đến 8192 cylinder) được BIOS thực hiện. Cách này cho phép làm việc với đĩa có dung lượng đến 8192*16*63*512 = 4 227 858 432 byte hay 4,2 Gbyte. Nhưng các nhà phát triển càng ngày càng tăng mật độ ghi của đĩa, số đĩa và số rãnh, và còn phát minh ra các phương pháp khác để tăng dung lượng đĩa. Ví dụ, số sector trên rãnh không còn cố định mà trở thành khác nhau trên các rãnh
  31. 2.4 Lựa chọn trình khởi động 23 khác nhau (trên các rãnh nằm gần rìa ngoài của đĩa, dài hơn, số sector được tăng lên). Kết quả là bộ ba số C/H/S không còn phản ánh đúng cấu trúc “hình học của đĩa”, và các phiên bản BIOS cũ không thể hỗ trợ truy cập tới toàn bộ không gian đĩa. Khi đó người ta nghĩ ra phương pháp khác để làm việc với các đĩa lên qua Int 13h - đánh địa chỉ các khối theo đường thẳng (“Linear Block Addressing” hay LBA). Không đi sâu vào chi tiết, có thể nói rằng tất cả sector trên đĩa được đánh số một cách tuần tự, bắt đầu từ sector đầu tiên trên rãnh số 0 của cylinder số 0. Thay vào chỗ địa chỉ CHS mỗi sector nhận được một địa chỉ lôgíc – số thứ tự của sector trong tổng số tất cả sector. Việc đánh số sector lôgíc bắt đầu từ 0, trong đó sector số 0 chứa bản ghi khởi động chính (MBR). Trong Setup BIOS hỗ trợ biến đổi số thứ tự theo đường thẳng thành địa chỉ CHS có dạng “Hỗ trợ LBA”. Như vậy, trong các phiên bản BIOS mới thường có lựa chọn với ba phương án: “Large”, “LBA”, và “Normal” (phương án cuối cùng có nghĩa là không thực hiện biến đổi địa chỉ). Tuy nhiên trong chế độ LBA việc sử dụng đĩa vật lý vẫn được thực hiện qua Int 13h, mà Int 13h vẫn sử dụng bộ 3D (C,H,S). Vì nguyên nhân này xuất hiện hạn chế lên dung lượng của đĩa: BIOS, và theo đó, MS-DOS và các phiên bản Windows đầu tiên không thể đánh địa chỉ các đĩa có dung lượng lớn hơn 8,4 Gbyte. Cần chú ý rằng hạn chế nói trên chỉ áp dụng với các đĩa có giao diện IDE. Trong các controller của đĩa SCSI, số của sector được chuyển vào các lệnh SCSI, và sau đó tự đĩa tìm ra vị trí cần thiết, vì thế hạn chế lên dung lượng đĩa không xuất hiện. Một lần nữa muốn nhắc lại rằng, tất cả những hạn chế nói trên chỉ có ý nghĩa trong giai đoạn khởi động HĐH. Bởi vì Linux và các phiên bản Windows mới nhất khi làm việc với đĩa đã không còn sử dụng Int 13 của BIOS, mà sử dụng driver riêng của mình. Nhưng trước khi có thể sử dụng driver của mình, hệ thống phải được nạp. Vì thế trong giai đoạn khởi động đầu tiên bất kỳ hệ thống nào cũng cần sử dụng BIOS. Điều này hạn chế việc đặt nhiều hệ thống ra ngoài vùng 8 Gbyte đĩa đầu tiên: chúng không thể khởi động từ đó, mặc dù sau khi khởi động thì có thể làm việc với các đĩa có dung lượng lớn hơn nhiều. Để có thể hiểu cách thoát khỏi những hạn chế này, chúng ta cần một chút kiến thức về quá trình khởi động của HĐH Linux. 2.4 Lựa chọn trình khởi động 2.4.1 Trình khởi động GRUB1 GRUB (GRand Unified Bootloader) – trình khởi động hết sức mạnh có khả năng khởi động rất nhiều HĐH miễn phí cũng như HĐH thương mại. GRUB được Erich Boleyn viết vào năm 1995 để khởi động hệ thống GNU Mach, vì không thể sử dụng những trình khởi động khác. Sau đó vào năm 1999 Gordon Matzigkeit và Yoshinori K. Okuji chuyển GRUB thành một gói chương trình GNU, đưa chương trình này thành một phần mềm mã nguồn mở. Mặc dù mới ra đời và số phiên bản 1Phần về GRUB này do người dịch viết.
  32. 24 Cài đặt HĐH Linux trên cùng máy tính với Windows còn rất nhỏ2 nhưng đây là sự lựa chọn tốt đối với phần lớn người dùng máy tính cá nhân. Nếu không có nhu cầu đặc biệt nào đó thì bạn nên chọn trình khởi động này. Các bản phân phối Linux lớn (Debian, SuSE, Fedora,. . . ) cũng đã chuyển sang sử dụng GRUB làm lựa chọn theo mặc định. Một trong những tính năng quan trọng của GRUB là tính mềm dẻo. GRUB có thể hiểu các hệ thống tập tin và định dạng thực thi của nhân, vì thế bạn có thể nạp HĐH theo cách ưa thích. Ngoài ra, nếu không muốn dùng giao diện dòng lệnh, thì bạn có thể cài đặt và sử dụng giao diện thực đơn và thay đổi giao diện thực đơn theo mong muốn của mình. Một điểm mạnh khác của GRUB đó là “grub shell” có thể chạy khi bắt đầu khởi động hoặc sau khi đã khởi động xong hệ thống. Bằng grub shell bạn có thể “giả lập” (emulate) trình khởi động này và cài đặt GRUB. Bây giờ chúng ta xem xét ngắn gọn về tên gọi thiết bị dùng trong GRUB, vì cú pháp thiết bị trong trình khởi động này có khác một chút so với những gì mà bạn đã thấy trên những hệ thống của mình. Bạn cần hiểu cú pháp này để biết cách chỉ ra một ổ đĩa hay phân vùng nào đó. Ví dụ một cú pháp là: (fd0) Trước tiên cần nói GRUB yêu cầu tất cả các tên thiết bị phải đặt trong ngoặc ‘(’ và ‘)’. Phần fd có nghĩa là đĩa mềm. Số ‘0’ chỉ ra số thứ tự của ổ, đếm bắt đầu từ 0. Ví dụ 2: (hd0,1) Ở đây ‘hd’ có nghĩa là ổ cứng. Số nguyên ‘0’ đầu tiên cho biết số thứ tự của ổ, tức là ổ cứng thứ nhất. Số nguyên thứ hai (‘1’) cho biết số thứ tự của phân vùng (chúng ta không xem xét các HĐH khác Linux). Xin nhắc lại một lần nữa là các số đếm đều bắt đầu từ số không ‘0’. Trong trường hợp này đây là phân vùng thứ hai của ổ cứng thứ nhất. GRUB sử dụng một phân vùng của đĩa chứ không phải toàn bộ đĩa. Ví dụ 3: (hd0,4) Đây là phân vùng mở rộng (“extended partition”) thứ nhất của đĩa cứng thứ nhất. Chú ý rằng các phân vùng mở rộng được đếm bắt đầu từ ‘4’ không phụ thuộc vào số phân vùng chính (“primary partition”) thực tế có trên đĩa. Cần chú ý thêm là GRUB không phân biệt IDE và SCSI. Nó đếm số thứ tự ổ bắt đầu từ ‘0’ không phụ thuộc vào dạng đĩa. Làm sao để chỉ ra một tập tin? Hãy xem ví dụ sau đây: (hd0,0)/vmlinuz Dòng này chỉ ra tập tin ‘vmlinuz’ nằm trên phân vùng đầu tiên của ổ cứng đầu tiên. Hết sức đơn giản! Thông tin trong phần này sẽ giúp bạn hiểu được cấu hình của GRUB sẽ nói đến sắp tới đây. 2hãy so sánh số phiên bản của GRUB và LILO
  33. 2.4 Lựa chọn trình khởi động 25 2.4.2 Trình khởi động LILO Trình khởi động LILO được viết bởi Werner Almesberber. LILO có thể khởi động nhân Linux từ đĩa mềm, đĩa cứng, và cũng có thể khởi động các hệ điều hành khác: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixware v.v. . . LILO cho phép chọn đến 16 hệ điều hành khác nhau để khởi động. LILO không phải là chương trình đơn lẻ mà là một bộ gồm nhiều chương trình: trình khởi động, các chương trình sử dụng để cài đặt và cấu hình trình khởi động, và các tập tin phục vụ: ˆ chương trình /sbin/lilo, chạy dưới Linux, phục vụ để ghi tất cả thông tin cần thiết trong giai đoạn khởi động vào các chỗ tương ứng. Cần chạy chương trình này sau mỗi lần có thay đổi trong nhân hay trong tập tin cấu hình LILO; ˆ các tập tin phục vụ, cần cho LILO trong thời gian khởi động. Những tập tin này thường nằm trong thư mục /boot. Quan trọng nhất trong số chúng – đó là bản thân trình khởi động (xem phía dưới) và tập tin map (/boot/map); trong tập tin này có chỉ ra vị trí của nhân. Một tập tin quan trọng khác – tập tin cấu hình LILO; thường có tên /etc/lilo.conf; ˆ trình khởi động – đây là phần LILO được nạp vào bộ nhớ đầu tiên qua Int của BIOS; trình khởi động nạp nhân Linux hay sector khởi động của hệ điều hành khác. Trình khởi động gồm có hai phần. Phần thứ nhất được ghi vào sector khởi động và phục vụ để nạp phần thứ hai, có kích thước lớn hơn rất nhiều. Cả hai phần thường được ghi trên đĩa trong tập tin /boot/boot.b. Cần nhớ rằng, định dạng của sector khởi động tạo ra bởi LILO khác với định dạng MBR của DOS. Vì thế nếu ghi sector khởi động LILO vào MBR, thì các hệ điều hành đã cài của Microsoft sẽ ngừng khởi động (nếu như không có các biện pháp bổ sung). Sector khởi động của LILO có thể được thiết kế để sử dụng như sector khởi động của phân vùng, trong đó có chỗ cho bảng phân vùng. Sector khởi động của LILO trong khi cài đặt có thể đặt vào những chỗ sau: ˆ sector khởi động của đĩa mềm trong định dạng Linux (/dev/fd0, . . . ); ˆ MBR của đĩa cứng đầu tiên (/dev/hda, /dev/sda, . . . ); ˆ sector khởi động của phân vùng chính với hệ thống tập tin Linux trên đĩa cứng đầu tiên (/dev/hda1, /dev/hda2, . . . ); ˆ sector khởi động của phân vùng lôgíc trong phân vùng mở rộng đĩa cứng đầu tiên (/dev/hda5, . . . ). Sự thật là phần lớn chương trình dạng fdisk không đề ra khả năng khởi động khởi động từ phân vùng mở rộng và từ chối việc kích hoạt phân vùng này. Vì vậy trong thành phần LILO có chứa một chương trình đặc biệt (activate) cho phép vượt qua hạn chế này. Tuy nhiên chương trình fdisk của bản phân phối Linux hỗ trợ khả năng kích hoạt phân vùng mở rộng. Cần sử dụng tùy chọn -b hoặc biến BOOT.
  34. 26 Cài đặt HĐH Linux trên cùng máy tính với Windows Sector khởi động của LILO không thể đặt vào các chỗ sau: ˆ sector khởi động của đĩa mềm hay phân vùng chính, với định dạng hệ thống tập tin khác Linux; ˆ trong phân vùng swap của Linux; ˆ trên đĩa cứng thứ hai. Ngoài ra, cần nhớ rằng, LILO trong thời gian khởi động cần những tập tin sau: ˆ /boot/boot.b; ˆ /boot/map (tạo ra bởi lệnh /sbin/lilo); ˆ tất cả phiên bản nhân khởi động (nếu bạn đọc chọn phiên bản nhân khi khởi động); ˆ sector khởi động của các hệ điều hành khác mà bạn đọc muốn khởi động qua LILO; ˆ tập tin chứa các thông báo đưa ra khi khởi động (nếu được xác định). Như vậy, sector khởi động LILO cũng như những tập tin đã liệt kê (trong số đó có các tập tin bạn đọc sẽ cài đặt sau này) cần nằm trong phạm vi 1024 cylinder đầu tiên của đĩa cứng, bởi vì chúng cần được truy cập qua BIOS. Xem phần nói về hạn chế của BIOS ở trên. Bắt đầu từ phiên bản 21, LILO đưa ra màn hình trình đơn (thực đơn) cho phép chọn hệ thống để khởi động (trước đây cần nhấn phím Tab để gọi trình đơn này). 2.4.3 Các trình khởi động khác Ngoài GRUB và LILO để khởi động Linux có thể khởi động các trình khởi động khác. ˆ Nếu như trước khi cài đặt Linux đã có HĐH Windows NT/2000/XP, thì trình khởi động bạn đọc có thể sử dụng là OS Loader của NT. So sánh với LILO thì trình khởi động OS Loader có ít nhất hai ưu thế. Thứ nhất, tất cả cấu hình cũ không bị mất (chúng ta có thể chọn khởi động Windows hay Linux theo lựa chọn), và thứ hai, có thể cài đặt Linux lên đĩa mà LILO không thể khởi động, ví dụ, ổ đĩa thứ hai trên controller thứ hai (Secondary Slave). ˆ Nếu như trước khi cài đặt Linux bạn đọc chỉ có HĐH Windows 95 hay Windows 98 và không có Windows NT/2000 hay XP, thì OS Loader không được cài đặt. Và nếu như vì một lý do nào đó bạn đọc không muốn cài đặt LILO, thì có thể sử đụng chương trình khởi động loadlin.exe (thường đi kèm với bản phân phối Linux);
  35. 2.4 Lựa chọn trình khởi động 27 ˆ Thời gian gần đây trong thành phần bản phân phối Linux thường có chương trình khởi động GRUB. ˆ Trong thành phần OS/2 của công ty IBM có chương trình khởi động Boot Manager. Trong rất nhiều hướng dẫn người ta khuyên dùng chương trình này để tổi chức khởi động nhiều HĐH. ˆ Trong các nguồn thông tin khác nhau còn nhắc đến chương trình System Commander; ˆ Thêm một trình khởi động khác có trong thành phần gói PartitionMagic của công ty Power Quest. Chúng ta sẽ nói về chương trình này trong phần nhỏ tiếp theo. Ngoài ra tác giả còn thấy nói đến một loạt các trình khởi động khác (một số có thể tìm thấy trong thư mục /public/ftp/pub/Linux/system/boot/loaders trên trang Nhưng vì tác giả không sử dụng những chương trình này, nên không thể nói cụ thể cách sử dụng chúng. Và tất cả những lời khuyên dùng sau của tác giả sẽ dựa trên việc sử dụng LILO, NT Loader và load- lin.exe. Nếu như có ý muốn cài đặt chương trình khởi động khác, thì bạn đọc cần đọc hướng dẫn cài đặt và sử dụng của nó. 2.4.4 Các phương án khởi động Như vậy, theo ý kiến của tác giả có các phương án khởi động sau: ˆ Nếu trên máy chỉ có một hệ điều hành Linux duy nhất, hãy dùng GRUB. ˆ Nếu đã cài đặt Windows NT hay Windows 2000/XP, thì hãy sử dụng GRUB. ˆ Nếu có Windows 95 hay Windows 98 trên FAT16, và bạn đọc không muốn cài đặt chương trình khởi động nào khác, thì có thể sử dụng GRUB hoặc LILO, hoặc đầu tiên chạy DOS và sau đó khởi động Linux nhờ chương trình loadlin.exe (hay một chương trình tương tự, có vài chương trình như vậy, nhưng chúng ta sẽ không xét đến). ˆ Nếu đã cài đặt Windows 95 OSR2 hay Windows 98 trên FAT32, và bạn đọc không muốn cài đặt thêm chương trình khởi động, thì cần sử dụng loadlin.exe. Rất nhiều HOWTO khẳng định rằng không cần sử đụng LILO, nếu như phân vùng kích hoạt có định dạng FAT32, mặc dù tác giả không rõ nguyên nhân. Tuy nhiên thí nghiệm khởi động Linux qua NT Loader, cài đặt trên phân vùng FAT32, của tác giả đã kết thúc không thành công. Vì thế, trong trường hợp này tác giả đã phải sử dụng chương trình loadlin.exe. Chương trình này đã hoàn thành tốt nhiệm vụ, và tạo cho tác giả một ấn tượng tốt, vì thế tác giả khuyên bạn đọc sử dụng loadlin.exe để khởi động Linux. Trong những phần tiếp theo tác giả sẽ cho biết cách cài đặt Linux, sử dụng tất cả bốn phương án khởi động: qua trình khởi động NT Loader, trình khởi động GRUB, trình khởi động LILO và trình khởi động loadlin.exe. Tuy nhiên trước khi cài đặt trình khởi động cần chuẩn bị các phân vùng trên đĩa, hay ít nhất là nghĩ cách tổ chức chúng.
  36. 28 Cài đặt HĐH Linux trên cùng máy tính với Windows 2.5 Chuẩn bị các phân vùng trên đĩa 2.5.1 Lời khuyên khi tạo phân vùng Đưa ra lời khuyên ở đây không phải là việc dễ dàng, vì phân vùng đĩa phục thuộc rất nhiều vào ý thích và nhu cầu của chủ nhân đĩa. Nhưng cũng xin thử đưa ra vài đề nghị sau. Tác giả sẽ đặt tên đĩa và phân vùng theo “tiêu chuẩn” của Linux, tức là /dev/hda, /dev/hdb, v.v. . . đối với đĩa và /dev/hda1, /dev/hda2, v.v. . . – đối với các phân vùng. Việc phân chia đĩa thành các phân vùng là cần thiết, bởi vì Windows và Linux sử dụng các cách lưu trữ thông tin trên đĩa và sau đó đọc chúng từ đĩa khác nhau. Chính vì thế tốt hơn hết là dành cho mỗi hệ điều hành một (hoặc thậm chí một vài như chúng ta sẽ thấy ở dưới) phân vùng riêng. Đầu tiên chúng ta hãy xem xét một trường hợp đơn giản – dung lượng ổ đĩa của bạn đọc không vượt quá 8,4 Gbyte (nói chính xác hơn – số cylinder không vượt quá 1024). Trong trường hợp này mọi thứ đều đơn giản: bạn đọc chỉ việc chia đĩa làm sao để đủ chỗ cho hệ điều hành sẽ cài đặt. Có thể sử dụng dữ liệu cho biết kích thước đĩa nhỏ nhất cần thiết để cài đặt hệ điều hành với cấu hình cơ bản trong bảng 2.2. Bảng 2.2: Nhu cầu sử dụng không gian đĩa của HĐH Hệ điều hành Yêu cầu Windows 95 100 Mbyte Windows 98 200 Mbyte Windows NT 200 Mbyte Windows 2000 700 Mbyte Linux Red Hat 6.2 (Worksta- 700 Mbyte tion với KDE) Tuy nhiên xin hãy nhớ rằng, không những phải tính kích thước các tập tin của bản thân hệ điều hành, mà còn phải tính cả kích thước của các chương trình bạn đọc dự tính chạy. Và còn phải dành một phần dự trữ không nhỏ cho các chương trình sẽ cài đặt sau này (không thể tránh khỏi!). Hãy tính rằng, 700 Mbyte dành cho Linux ở trong bảng nói trên chỉ dành cho các chương trình cài đặt cùng với Linux theo mặc định, trong số đó có, ví dụ, chương trình soạn thảo rất mạnh Lyx. Đối với Windows cũng tương tự như vậy. Theo kinh nghiệm của tác giả thì để làm việc với Windows 95/98, Windows NT và Linux các phân vùng với kích thước 800-1000 Mbyte là đủ (tất nhiên, nếu bạn đọc không cài đặt các gói chương trình lớn, như OpenOffice.Org), còn đối với Windows 200 thì cần phân vùng lớn hơn. Bây giờ chúng ta sẽ xem xét vấn đề chia các phân vùng cho Linux. Ở đây không thể chỉ chia một phân vùng. Thứ nhất, cần chia một phân vùng swap riêng biệt cho Linux. Khi xác định dung lượng của phân vùng swap Linux cần tính đến những yếu tố sau: ˆ Trong Linux, RAM và không gian swap hợp lại tạo thành bộ nhớ ảo chung. Ví dụ, nếu bạn đọc có 256 MByte RAM và 128 Mbyte không gian swap, thì sẽ có 384 Mbyte bộ nhớ ảo.
  37. 2.5 Chuẩn bị các phân vùng trên đĩa 29 ˆ Để làm việc với Linux cần ít nhất 16 Mbyte bộ nhớ ảo, vì thế nếu bạn đọc chỉ có 4 Mbyte RAM, thì cần phân vùng swap không nhỏ hơn 12 Mbyte. ˆ Kích thước của phân vùng swap có thể lớn bao nhiêu tùy thích, tuy nhiên không cần cấu hình quá nhiều nếu không cần thiết. Thông thường chỉ cần dùng swap khi máy ít bộ nhớ RAM hoặc chạy máy chủ với nhiều ứng dụng nặng. Trong tất cả mọi trường hợp tốt nhất tránh dùng swap vì nó chậm hơn RAM nhiều.3 ˆ Khi tính kích thước của không gian swapping, cần nhớ rằng kích thước quá lớn có thể là vô ích. Trên máy tính với 16 Mbyte RAM khi cài đặt Linux với cấu hình chuẩn và các chương trình ứng dụng chuẩn thì 48 Mbyte không gian swapping là đủ. Còn nếu cài đặt Linux với cấu hình nhỏ nhất, thì không cần đến không gian swap. Tất nhiên, kích thước chính xác của không gian swap phụ thuộc lớn vào chương trình sẽ được cài đặt. Nói chung, chỉ nên suy nghĩ về vấn đề dung lượng của phân vùng swap khi có một đĩa nhỏ và ít bộ nhớ RAM. Trong trường hợp ngược lại hãy phân chia để tổng số dung lượng của bộ nhớ ảo (gồm RAM và phân vùng swap) không nhỏ hơn 128 Mbyte. Còn nếu như bạn đọc có 128 Mbyte RAM hay nhiều hơn, thì phân vùng này có thể không cần thiết. Tất cả các phần còn lại của Linux và các chương trình hỗ trợ theo nguyên tắc có thể đặt vào một phân vùng. Tuy nhiên, việc đặt hệ thống tập tin Linux lên vài phân vùng riêng rẽ là có ý nghĩa. Ví dụ, có nhà chuyên gia khuyên nên dành cho hệ thống tập tin Linux ba phân vùng (nếu tính cả swap thì thành 4). Phân vùng thứ nhất (theo ý kiến cá nhân tác giả, 1 Gbyte là đủ) sẽ chứa hệ thống tập tin gốc (/). Phân vùng thứ hai dành cho thư mục /home. Còn phân vùng thứ ba được gắn vào thư mục /usr. Việc phân chia như vậy dựa trên những lý lẽ sau. Dù HĐH Linux có ổn định và đáng tin cậy đến đâu, thì thỉnh thoảng cũng cần cài đặt lại. Ví dụ, bạn đọc muốn cập nhật phiên bản mới của bản phân phối, hoặc vì ít kinh nghiệm sử dụng nên làm hỏng tập tin hệ thống quan trọng, hoặc đơn giản là muốn cài đặt một bản phân phối khác. Nếu như tất cả được cài đặt vào một phân vùng, thì khi cài đặt lại những dữ liệu đã làm ra và ghi nhớ trong thư mục cá nhân sẽ bị mất (nếu không có bản sao chép). Ngoài ra, sẽ bị mất cả những chương trình đã cài từ mã nguồn, hay cài bằng phương pháp khác. Phần lớn những gói chương trình này được cài vào thư mục /usr. Nếu dành cho thư mục này một phân vùng riêng và khi cài đặt không định dạng lại chúng, thì những chương trình nói trên sẽ được giữ lại và có thể sẽ làm việc (rất có thể cần vài cấu hình nhỏ) sau khi cài đặt lại hệ thống. Trong tiêu chuẩn về hệ thống tập tin của Linux FHS (cụ thể xin xem ở chương ??) cũng có lời khuyên về việc đặt thư mục /usr lên một phân vùng riêng. Theo tác giả thấy, những ý kiến nói trên đã đủ để bạn đọc tự tìm ra phương án phân chia ổ đĩa của mình, trong trường hợp chỉ có một ổ đĩa nhỏ. Bây giờ chúng ta xem xét trường hợp đĩa với số cylinder lớn hơn 1024. Từ những gì đã nói đến ở phần trước (hạn chế dung lượng đĩa cứng), cần đặt chương trình khởi động trong phạm vi 1024 cylinder đầu tiên. Nhân tiện, NT Loader không nhất thiết phải đặt vào phân vùng NTFS, cũng như không nhất 3Xin cám ơn bác Tony Lý về mục này
  38. 30 Cài đặt HĐH Linux trên cùng máy tính với Windows thiết phải đặt vào phân vùng chứa các tập tin khác của HĐH. Như đã nói ở trên, đối với Linux có thể đặt thư mục gốc cùng với thư mục con /boot vào các cylinder “thấp” (trong vòng 1024 đầu tiên), còn các thư mục khác – ở chỗ nào tùy thích. Như vậy trong trường hợp này, những đề nghị của tác giả cho ra bảng tổng kết sau: ˆ phần khởi động của tất cả các hệ thống Microsoft đặt vào phân vùng chính đầu tiên của đĩa, với định dạng FAT16 (DOS); ˆ phân vùng chính tiếp theo dành cho thư mục gốc (/), kích thước khoảng 1 Gbyte; ˆ phân vùng chính thứ ba dành cho swap của Linux (lời khuyên về kích thước của phân vùng này xem ở trên); ˆ phần còn lại của đĩa đặt thành phân vùng mở rộng; ˆ trong phân vùng mở rộng tạo các phân vùng lôgíc cho mỗi HĐH sẽ cài đặt: Windows 98, Windows NT/2000/XP, và đồng thời cho các hệ thống tập tin /home và /usr của HĐH Linux (trong /home sẽ đặt các tập tin riêng của người dùng, còn trong /usr – chương trình sẽ cài đặt). Tất nhiên, nếu như bạn đọc chỉ có Windows 95 với FAT16, thì có thể để Win- dows trên phân vùng đầu tiên. Nếu như trên máy đã cài đặt Windows NT hay có FAT32, thì một phân vùng FAT16 cũng không thừa. Thứ nhất, kể cả trong trường hợp hệ thống có vấn đề, bạn đọc có thể khởi động từ đĩa mềm DOS (tạm thời khi chưa làm quen với Linux một cách “tường tận”) và thấy được rằng đĩa cứng làm việc bình thường. Thứ hai, hệ thống tập tin FAT16 được hỗ trợ trên mọi HĐH, trong đó có Linux, vì thế phân vùng này có thể phục vụ cho việc trao đổi tập tin giữa các hệ thống. Nhưng không nên để phân vùng này lớn, vì FAT16 sử dụng không gian đĩa rất không hợp lý. Chính vì vậy hãy dành cho phân vùng này khoảng 256 hoặc 512 Mbyte. Những lời khuyên này đưa ra với giả thiết rằng, bạn đọc chỉ có một đĩa cứng. Nếu như bạn đọc có 2, thì vẫn sử dụng được những lời khuyên này, chỉ có điều phân vùng swap tốt hơn đặt trên đĩa khác với đĩa dành cho Linux. Người ta nói rằng như vậy tăng tốc độ làm việc trong Linux (cũng dễ hiểu vì đầu đọc ít phải chạy hơn). 2.5.2 Chương trình để phân chia ổ đĩa Sau khi hoàn thành kết hoạch chia ổ đĩa, cần lựa chọn công cụ để đưa kế hoạch này thành hiện thực. Chương trình phân chia đĩa được biết đến nhiều nhất là fdisk; trên mọi hệ điều hành đều có phiên bản riêng của chương trình này. Và không cần gì hơn ngoài chương trình này, nếu như phân chia ổ đĩa trắng, không chứa bất ký dữ liệu nào. Nhưng chúng ta đang xem xét trường hợp đã có HĐH nào đó trên đĩa và cần phân chia ổ đĩa mà không làm mất thông tin. fdisk không thích hợp cho những mục đích như vậy. Trong thành phần các bản phân phối Red Hat và BlackCat (rất có thể trong các bản phân phối khác) có chương trình fips, phục vụ cho phân chia ổ đĩa.
  39. 2.6 Windows NT và Linux: khởi động qua NT OS Loader 31 Tuy nhiên, theo ý kiến của người dùng thì không nên sử dụng chương trình này. Vì thế lời khuyên của tác giả với bạn đọc, những người dùng Linux mới – nếu như muốn phân chia lại ổ đĩa mà không làm mất thông tin, thì hãy tìm chương trình Partition Magic của công ty Power Quest ( và sử dụng chương trình này. Thứ nhất, chương trình này cho phép phân chia lại ổ đĩa mà không làm mất thông tin (tức là, tất cả những cài đặt và cấu hình trước đó sẽ được ghi lại). Khi này, không chỉ tạo được phân vùng mới từ chỗ trống trên đĩa, mà còn có thể di chuyển các phân vùng đã có theo ý muốn. Thứ hai, chương trình này (thậm chí trong phiên bản dành cho DOS) cung cấp một giao diện đồ họa dễ sử dụng có hỗ trợ chuột, và mọi thao tác cũng như thay đổi đều thấy rõ ràng. Điều này rất quan trọng với người dùng mới. Khi tạo phân vùng cần để ý không cho ranh giới giữa các phân vùng cắt lẫn nhau. Tác giả cho rằng, những thông tin đã đưa đủ để bạn đọc lập kế hoạch và thực hiện việc phân chia ổ đĩa thành các phân vùng. Vì thế tiếp theo chúng ta sẽ xem xét các phương án cài đặt hai HĐH trên một máy tính. 2.6 Windows NT và Linux: khởi động qua NT OS Loader Trong phần này, khi nói về Windows NT xin ngầm hiểu cả Windows 2000 và NT, vì “quan hệ” của chúng đối với việc cài đặt Linux hoàn toàn giống nhau. Chúng ta giả thiết là Windows NT đã được cài vào phân vùng /dev/hda2 (nếu như bạn đọc nhớ, /dev/hda1 sẽ dành cho phân vùng FAT16). Nếu HĐH Windows NT đã được cài đặt, nghĩa là trình khởi động OS Loader cũng đã được cài đặt. Và như thế có thể sử dụng chương trình này để khởi động Linux. Tác giả hy vọng rằng bạn đọc đã sao lưu những thông tin có giá trị của mình. Các bước cài đặt có thể mô tả như sau: 1. Nếu như bạn đọc chưa cài đặt Linux bao giờ, thì trước khi bắt đầu cần chuẩn bị đĩa mềm khởi động và phục hồi Windows NT. Để tạo đĩa mềm khởi động chỉ cần định dạng lại đĩa mềm, rồi sao chép lên đó các tập tin ntldr, ntdetect.com và boot.ini từ thư mục gốc của ổ đĩa khởi động NT. Chương trình tạo đĩa phục hồi Windows 2000/XP có thể chạy từ trình đơn hệ thống (lệnh Backup trong Start/Program/Accessories). 2. Dùng chương trình Partition Magic để lấy một phần đĩa trống và từ đó tạo ra phân vùng với dạng ext2(3) (hệ thống tập tin Linux) và phân vùng swap. Cách tính kích thước của chúng đã nói ở trên. 3. Cài đặt Linux theo chỉ dẫn của bản phân phối. Trong khi cài đặt cần chú ý đến những điểm sau: ˆ thứ nhất, trong quá trình cài đặt nhất định phải tạo ra các đĩa mềm khởi động Linux. Tức là cần trả lời “Yes, make a BOOT DISK” (hay tương tự thế, tùy thuộc vào bản phân phối) khi được hỏi có tạo đĩa mềm khởi động hay không. Đĩa mềm này sẽ được dùng đến ở sau. Ngoài ra, có thể sử dụng đĩa mềm này để khởi động Linux. Đây cũng
  40. 32 Cài đặt HĐH Linux trên cùng máy tính với Windows là một phương án khởi động, và hơn nữa khác với đĩa mềm khởi động DOS, sau khi khởi động hệ thống không còn yêu cầu đĩa mềm nữa, có thể bỏ nó ra khỏi ổ, sử dụng ổ để đọc các đĩa mềm khác. Tuy nhiên cách khởi động này cũng có điều tiện, vì thế không nên sử dụng thường xuyên. Chỉ sử dụng trong trường hợp “bất đắc dĩ”. Đĩa mềm này còn cần thiết cho cấu hình để khởi động nhiều HĐH. ˆ thứ hai, khi cài đặt Linux cần cài LILO vào sector đầu tiên của phân vùng dành cho thư mục gốc (/) của Linux, chứ không phải vào sector khởi động chính của đĩa (MBR). Chúng ta giả thiết Linux được cài vào phân vùng /dev/hda3. Như vậy LILO sẽ được cài vào sector đầu tiên của /dev/hda3 Theo nguyên tắc, nếu như bạn đọc cài LILO vào MBR, thì không phải mọi thứ đã hỏng hết. Kết quả cuối cùng (khởi động qua NT Loader) vẫn có thể đạt được nhưng cần bỏ ra một chút công sức. Vấn đề ở chỗ, định dạng MBR tạo bởi LILO và Windows (DOS) khác nhau. Vì thế nếu bạn đọc cài LILO vào MBR, thì cầu phục hồi lại MBR của Windows. Tác giả cũng sẽ nói cách phục hồi, nhưng tốt hơn hết là bạn đọc cài LILO ngay lập tức vào sector đầu tiên của phân vùng đã cài Linux. 4. Sau khi cài đặt xong, khởi động Linux bằng đĩa mềm (nếu như bạn đọc cài LILO vào phân vùng của Linux và không động gì đến MBR, thì đây là khả năng duy nhất). 5. Sao chép sector khởi động của Linux vào một tập tin; tập tin này sẽ cần để trình khởi động Windows NT/2000 có thể khởi động Linux. Việc sao chép thực hiện như sau: đầu tiên gắn một đĩa mềm trắng (mới mua thì càng tốt), [root]# mount -t vfat /dev/fd0 /mnt/floppy chuyển vào thư mục /mnt/floppy [root]# cd /mnt/floppy và thực hiện câu lệnh [root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1 để ghi nội dung sector khởi động của đĩa /dev/hda3 vào tập tin /mnt/floppy/bootsect.lnx4 6. Tiếp theo cần khởi động lại để vào Windows NT, bằng câu lệnh: [root]# shutdown -h now 4Ghi chú: nếu đĩa C: (/dev/hda1) có định dạng FAT, thì có thể tạo tập tin bootsect.lnx trong thư mục gốc của đĩa C:. Tác giả không biết (chưa thử) có thể khởi động không cần đĩa mềm không, nếu phân vùng chính đầu tiên có định dạng NTFS. Tuy nhiên ở đây cũng không có vấn đề gì, chỉ cần sao chép sector khởi động qua đĩa mềm như đang trình bày. Tạm thời nhân Linux còn chưa hỗ trợ tốt việc ghi lên phân vùng NTFS.
  41. 2.6 Windows NT và Linux: khởi động qua NT OS Loader 33 Vì MBR chưa có gì thay đổi, nên Windows NT sẽ khởi động. Trong NT cần sao chép tập tin bootsect.lnx vào thư mục gốc của đĩa C:, hay chính xác hơn là vào thư mục gốc của phân vùng mà từ đó khởi động Windows NT. Đây có thể là phân vùng FAT16 hay phân vùng NTFS. Đặc điểm để nhận ra phân vùng này là hai tập tin ntldr và boot.init chứa trong đó (những tập tin này có thể ẩn!). Tập tin bootsect.lnx có thể đặt thuộc tính chỉ đọc (read-only). 7. Sau đó tìm tập tin boot.ini và thêm vào dòng sau: C:\bootsect.lnx="LINUX" (tất nhiên, trong dấu ngoặc kép bạn đọc có thể đặt tên bất kỳ.) 8. Việc còn lại là khởi động lại máy tính một lần nữa, và trong trình đơn chọn hệ điều hành sẽ có LINUX. Nếu chọn LINUX, thì LILO sẽ được chạy và sau đó nó (LILO) sẽ nạp Linux. Còn bây giờ chúng ta sẽ xem xét trường hợp bạn đọc (do vô tình hay cố ý) cài đặt LILO vào bản ghi khởi động chính của đĩa (Master Boot Record, MBR). Trong trường hợp này bản ghi khởi động Windows NT (hay 2000) sẽ bị xóa, và việc khởi động Windows NT (bước thứ 6 ở trên) là không thể. Nếu như bạn đọc vẫn còn muốn sử dụng trình khởi động OS Loader của NT, chứ không muốn dùng LILO, thì những bước trên có thay đổi một chút: thay cho bước thứ 6 cần làm các thao tác sau. 1. Khởi động Windows NT từ đĩa mềm khởi động (đã tạo trước khi cài đặt Linux, nếu không có thì bạn đọc cần tìm một máy khác đang chạy Windows NT rồi tạo). Trong trình đơn (thực đơn) của trình khởi động cần chọn lệnh Recover, rồi chọn chế độ Command mode. Sau đó đăng nhập vào tài khoản nhà quản trị (administrator). 2. Phục hồi lại bản ghi khởi động chính của đĩa. Sử dụng câu lệnh fdisk /mbr. Tác giả dùng lệnh này thành công, mặc dù trong một số bài báo nói cách phục hồi MBR như vậy không phải lúc nào cũng làm việc. Trong Windows 2000 có các lệnh chuyên dùng fixboot và fixmbr (chạy từ console phục hồi hệ thống). Chạy hai lệnh này theo thứ tự đã chỉ ra. Sau đó Windows 2000 sẽ khởi động bình thường. 3. Khởi động lại máy tính từ đĩa mềm khởi động Linux và đăng nhập vào hệ thống với quyền người dùng root. 4. Nhập lệnh cd /etc và mở tập tin lilo.conf. Ở đầu tập tin này có liên kết đến phân vùng khởi động theo mặc định, ví dụ, /dev/hda. 5. Dùng bất kỳ trình soạn thảo nào, ví dụ, CoolEdit của Midnight Comman- der, để thay thế giá trị này thành phân vùng đã cài Linux lên (chính xác hơn là thành phân vùng được gắn như gốc (/) của Linux). Nếu Linux được cài vào phân vùng /dev/hda3, thì cần ghi cái đó, tức là thay thế /dev/hda thành /dev/hda3. Nếu như bạn đọc không nhớ đã cài Linux vào đâu, thì hãy chạy câu lệnh mount và tìm kết quả tương tự như sau5: 5có nghĩa là tìm phân vùng đã gắn vào thư mục gốc /, trong ví dụ này là /dev/hda3
  42. 34 Cài đặt HĐH Linux trên cùng máy tính với Windows /dev/hda3 on / type reiserfs (rw) 6. Chạy lệnh /sbin/lilo để ghi trình khởi động vào phân vùng /dev/hda3 (cần chạy lệnh lilo không có tham số). Sẽ có cảnh báo về việc phân vùng không phải là đầu tiên trên đĩa. Đây chính là điều chúng ta cần, bản ghi khởi động của Windows được giữ nguyên vẹn. 7. Thực hiện các bước 6-8 như ở trên. Dễ dàng đoán ra rằng, “quy trình” phức tạp với hai lần khởi động lại chỉ để chuyển sector khởi động Linux từ MBR vào sector đầu tiên của phân vùng dành cho Linux, và phục hồi MBR của Windows. Quá trình cài đặt Linux kết thúc ở đây. Bạn đọc đã có thể chọn HĐH sẽ khởi động và điều khiển máy tính của mình. 2.7 Sử dụng trình khởi động GRUB6 Như đã nói trong phần lựa chọn chương trình khởi động, nếu trên máy đã cài Windows 98 với hệ thống tập tin FAT16, thì lựa chọn tốt hơn cho trình khởi động là chương trình có trong thành phần của mọi bản phân phối HĐH Linux – GRUB (GRand Unified Bootloader). 2.7.1 Cài đặt GRUB Cách dễ nhất để có thể cài đặt trình khởi động GRUB là chọn dùng trình khởi động này trong quá trình cài đặt hệ thống Linux của bạn. Trong những phiên bản mới của các bản phân phối Linux mới khi này có thể chọn cấu hình cho những hệ điều hành đã có trên máy. Một số bản phân phối, ví dụ Xandros còn tự động tìm thấy những hệ điều hành đã có này và thêm chúng vào tập tin cấu hình của GRUB. Nhờ đó sau khi cài đặt bạn có thể chọn khởi động Linux hoặc hệ điều hành (thường là Windows) đã có. Mặc dù việc tự động cấu hình này hết sức thuận tiện, nhưng sẽ có ích nếu bạn biết được cách cấu hình Linux để xử lý những lỗi có thể xảy ra và hơn thế nữa biết cách cấu hình để khởi động hệ điều hành mong muốn khi không có tự động cấu hình. Chúng ta sẽ xem xét cấu hình GRUB trong phần tiếp theo. 2.7.2 Cấu hình GRUB GRUB có một giao diện trình đơn để từ đó người dùng có thể chọn một mục (một hệ điều hành) bằng các phím mũi tên rồi nhấn để khởi động. Để dùng được trình đơn đó, bạn cần một tập tin cấu hình ‘menu.lst’ nằm trong thư mục khởi động /boot. Thông thường tập tin này được tạo ra khi cài đặt. Hãy xem ví dụ một tập tin như vậy dưới đây: # GRUB example configuration file on the teppi’s openSUSE system. # Modified by YaST2. Last modification on Sun Apr 2 22:22:11 MSD 2006 6Phần về GRUB này do người dịch viết
  43. 2.7 Sử dụng trình khởi động GRUB 35 color white/blue black/light-gray default 0 timeout 8 ###Don’t change this comment - YaST2 identifier: Original name:linux### title SUSE LINUX 9.3 kernel (hd0,0)/vmlinuz root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts initrd (hd0,0)/initrd ###Don’t change this comment - YaST2 identifier: Original name: windows### title Windows map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) makeactive chainloader +1 ###Don’t change this comment - YaST2 identifier: Original name: xen### title XEN kernel (hd0,0)/xen.gz dom0_mem=196608 module (hd0,0)/vmlinuz-xen root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts module (hd0,0)/initrd-xen ###Don’t change this comment - YaST2 identifier: Original name: floppy### title Floppy root (fd0) chainloader +1 Tác giả nghĩ rằng cần giải thích cụ thể hơn một chút về tập tin này. Có thể bạn đã đoán ra những dòng bắt đầu bằng ký tự ‘#’ là những dòng chú thích. Bạn có thể ghi bất kỳ câu gì mong muốn vào dòng này và không ảnh hưởng gì đến công việc của chương trình. Ngoài dòng chú thích GRUB cũng bỏ qua những dòng trống. Ở đầu tập tin là những thiết lập chung (global options), những tùy chọn có liên quan đến giao diện của trình đơn. Chúng được đặt trước các mục bắt đầu bằng ‘title’. Tùy chọn default chỉ ra hệ điều hành khởi động theo mặc định (nếu không động vào bàn phím khi khởi động). Số ‘0’ chỉ ra đó là hệ điều hành thứ nhất trong danh sách (tức là SuSE Linux 9.3). Hãy nhớ lại, trong GRUB việc đánh số được bắt đầu từ ‘0’ chứ không phải ‘1’. Tùy chọn timeout cho biết GRUB sẽ khởi động một cách tự động sau khoảng thời gian chỉ ra (tính theo giây) nếu không nhấn phím nào. Trong trường hợp này là sau 8 giây. Tùy chọn color dùng để chọn màu cho trình đơn (hãy thử nó!). Sau những thiết lập chung là phần thiết lập cho từng hệ điều hành cụ thể. Mỗi phần đều bắt đầu bằng lệnh ‘title’ theo sau là tên sẽ hiển thị trong trình đơn. Và vì lệnh này hiển thị tham số một cách nguyên vẹn, nên bạn có thể nhập bất kỳ thứ gì vào phía sau. Như bạn thấy trong tập tin cấu hình ở trên, phần đầu tiên là để khởi động “SUSE LINUX 9.3”, phần thứ hai – “Windows”, v.v. . . Khác với trường hợp LILO, sau khi thay đổi cấu GRUB không cần phải chạy bất kỳ lệnh nào để những thay đổi này có hiệu lực. Chúng sẽ được cập nhật một
  44. 36 Cài đặt HĐH Linux trên cùng máy tính với Windows cách tự động trong lần khởi động sau. Đây là một điểm mạnh của GRUB so với LILO. Tất nhiên đây không phải là tất cả những khả năng sử dụng của GRUB, nhưng đối với người dùng mới thì như vậy là đủ. Sau một thời gian làm việc với Linux và có đủ kinh nghiệm bạn sẽ biết cách tìm thêm thông tin về trình khởi động tuyệt vời này. 2.8 Sử dụng trình khởi động LILO 2.8.1 Cài đặt và cấu hình LILO Giống như trường hợp Windows NT, chúng ta sẽ đưa ra các bước cần thực hiện để có thể khởi động nhiều HĐH. 1. Trước khi cài đặt Linux hãy chuẩn bị đĩa mềm khởi động Windows. 2. Dùng chương trình Partition Magic để lấy phần không gian đĩa còn trống và trên đó tạo ra một phân vùng ext2(3) (hệ thống tập tin Linux) và một phân vùng swap. Cách chia ổ đĩa đã nói ở trên. Nếu dung lượng ổ đĩa cứng vượt quá 8,4 Gbyte thì hãy đọc kỹ các phần 2.3 và 2.5. 3. Cài đặt Linux theo chỉ dẫn đi kèm với bản phân phối. Cần nhớ rằng, nếu bạn muốn sử dụng trình khởi động LILO, thì trong quá trình cài dặt Linux cần chọn phương án cài LILO vào bản ghi khởi động chính (Master Boot Record). Tạo các đĩa mềm khởi động theo nguyên tắc là không bắt buộc, nhưng tác giả khuyên bạn đọc nên làm.7 4. Bước tiếp theo cần cấu hình LILO để có thể khởi động các HĐH theo lựa chọn. LILO được cấu hình bằng tập tin /etc/lilo.conf và câu lệnh /sbin/lilo. Câu lệnh này dùng để cài đặt (hay cài đặt lại) LILO. Chúng ta xem xét một ví dụ nhỏ của tập tin cấu hình LILO. Trong ví dụ này chúng ta sẽ coi như thiết bị /dev/hda1 là phân vùng với DOS/Windows, còn phân vùng /dev/hda2 chứa Linux. Trong trường hợp đó /etc/lilo.conf có dạng gần như sau: boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.4.22 label = linux 7Ghi chú. Trình khởi động LILO không bắt buộc phải cài đặt vào bản ghi khởi động chính của đĩa, LILO có thể nằm ở bản ghi khởi động của phân vùng chính được kích hoạt và chứa thư mục gốc của Linux hoặc thậm chí trên phân vùng lôgíc trong phân vùng mở rộng. Trong trường hợp đó MBR cần phải có khả năng nạp LILO, ví dụ khi MBR là trình khởi động của MS-DOS hay Windows. Tuy nhiên tác giả chưa nhìn thấy sự cần thiết của ứng dụng này (nếu đã chọn LILO làm trình khởi động chính thì hãy sử dụng cho “trọn bộ”), vì thế chúng ta sẽ không xem xét đến.
  45. 2.8 Sử dụng trình khởi động LILO 37 read-only other = /dev/hda1 table = /dev/hda label = dos Vài lời giải thích cho ví dụ: Dòng boot cho biết thiết bị khởi động. Dòng compact bật chế độ nén tập tin map – tập tin chứa đặc tính của nhân được khởi động; tính năng (nén) này tăng tốc độ của khởi động đầu. Câu lệnh message dùng để đưa ra thông báo theo ý muốn khi khởi động. Bắt đầu từ dòng image là các phần nhỏ của tập tin cấu hình, mỗi phần tương ứng với một hệ điều hành sẽ khởi động theo lựa chọn của người dùng. Trong mỗi phần như vậy có một dòng label. Trên dòng này ghi tên cần nhập vào dấu nhắc LILO hay tên sẽ hiển thị trong trình đơn của LILO để có thể chọn HĐH muốn khởi động. Nếu như tên không được nhập sau khoảng thời gian chỉ trên dòng delay (tính theo phần mười giây – cần nhân với 0,1 giây), thì sẽ khởi động HĐH theo mặc định. Trong ví dụ này, sẽ khởi động Linux theo mặc định, vì phần cấu hình tương ứng với Linux nằm đầu tiên trong tập tin. Có thể chỉ ra hệ điều hành được khởi động theo mặc định khi thêm một dòng có dạng default=dos, tức là sử dụng tên đã đặt trên dòng label. Dòng table= cho biết tên thiết bị chứa bảng phân chia đĩa. LILO sẽ không đưa thông tin về phân chia đĩa cho hệ điều hành được khởi động nếu biến này không được đưa ra. (Một số hệ điều hành có công cụ khác để xác định là đã được khởi động từ phân vùng nào.) Đừng quên rằng, cần thực hiện câu lệnh /sbin/lilo, sau khi thay đổi chỉ dẫn đến bảng phân chia đĩa, tức là thay đổi biến table. Nếu đặt dòng (gọi là phần nhỏ thì tốt hơn) other = /dev/hda1 trong tập tin /etc/lilo.conf, thì trong thư mục gốc của đĩa /dev/hda1 (đĩa C: trong hệ thống thuật ngữ Microsoft) cần có trình khởi động phụ (không phải là chính). Trên một máy của tác giả ở đó nằm trình khởi động NT Loader (vì Windows NT được cài đặt trước Linux), và LILO khởi động thành công Windows NT. Chỉ cần đặt thời gian chờ khởi động trong tập tin boot.ini bằng không, để không thấy trình đơn khởi động của NT Loader. Tuy nhiên, nếu vì một lý do nào đó bạn muốn thấy trình đơn này thì giá trị timeout trong tập tin boot.ini cần đặt khác không (thời gian chờ được tính theo giây). Điều này có thể cần thiết khi muốn khởi động cả Windows 98 từ trình đơn của NT Loader (trong trường hợp này sẽ có 3 HĐH: Linux, Windows NT và Windows 98, trong trình đơn của LILO nếu chọn dos thì sẽ hiện ra trình đơn của NT Loader rồi từ đó chọn một trong hai HĐH Windows để khởi động). Nếu bạn đọc muốn khởi động Windows trực tiếp từ LILO, thì hãy thêm phần nhỏ sau vào /etc/lilo.conf: other = /boot/bootsect.dos label = win trong đó bootsect.dos lấy từ thư mục gốc của ổ đĩa chứa NT Loader.