Đồ án Tìm hiểu và cấu hình GRUB trên LINUX

MỤC LỤC

I. Giới thiệu vềGRUB . 2

1. Tổng quát. 2

2. Tính năng. 2

II. Cài đặt GRUB . 3

1. Nơi tải GRUB xuống. 3

2. Cài đặt GRUB trong môi trường Linux . 3

III. Sửdụng GRUB (File cấu hình) . 3

1. Chuẩn bịcác tập tin cần thiết . 3

2. Thuật ngữdùng trong GRUB . 4

2.1 Xác định thiết bị . 4

2.2 Xác định tập tin . 5

3. Các tập tin hình ảnh của GRUB . 6

4. Cơchếkhởi động dùng trong GRUB . 6

5. Cài GRUB trong môi trường nguyên thuỷcủa GRUB . 7

5.1 Cài GRUB dùng lệnh setup . 7

6. Cài GRUB dùng lệnh install . 7

7. Cài GRUB trong môi trường hệ điều hành giống Unix. 8

7.1 Cài GRUB dùng lệnh grub-install . 8

8. Cài GRUB trong shell grub. 9

9. Khởi động hệthống với GRUB. 11

9.1 Khởi động hệ điều hành trực tiếp . 11

9.2 Tải trình nạp khởi động khác. 11

10. Cấu hình. 12

10.1 Phân tích thí dụvềmột tập tin cấu hình: . 12

10.2 Đặc điểm của tập tin cấu hình: . 13

11. Giao diện người dùng của GRUB. 13

12. Giao diện dòng lệnh . 13

13. Giao diện thực đơn. 14

14. Biên tập một đềmục trong thực đơn . 14

15. Giao diện thực đơn ẩn . 15

16. Một sốlệnh trong GRUB. 15

16.1 Các lệnh chỉdùng cho thực đơn . 15

17. Các lệnh dùng ởdòng lệnh và đềmục thực đơn . 17

IV. Một số ứng dụng cụthểvà vấn đềthường gặp. 20

1.1 Tạo đĩa CD khởi động với GRUB . 20

1.2 Khởi động nhiều bản Windows cài đặt trên một đĩa cứng . 21

1.3 Khởi động ổCD . 21

V. Cơchếan toàn và bảo mật GRUB. 22

VI. Grub 2 . 23

1. TừUbuntu-VN . 23

2. Cài đặt / Nâng cấp. 24

2.1 Cài đặt (Ubuntu 9.10) . 24

2.2 Cài đặt (Ubuntu 9.04+). 24

3. Hệthống thưmục và tập tin của Grub 2 . 25

3.1 grub.cfg (/boot/grub/grub.cfg). 25

3.2 grub (/etc/default/grub). 27

3.3 /etc/grub.d/ (thưmục) . 30

4. Thêm mục lựa chọn vào Grub 2 . 31

4.1 Tự động thiết lập. 31

4.2 Người dùng tựthiết lập. 32

4.3 Gỡbỏmục lựa chọn trong Grub 2. 33

VII. Chủ đề. 34

1. Ởphiên bản GRUB 2 đã hỗtrợhiển thịtheo chủ đề . 34

2. Hình Splash. 34

3. Ảnh và màu nền . 34

4. Sao chép và chỉnh sửa màu mặc định . 35

5. Tạo một tập tin chủ đềmới . 35

6. Câu lệnh . 36

7. Phục hồi Grub 2 bằng đĩa LiveCD . 39

VIII. Triển khai ứng dụng . 41

IX. Tài liệu tham khảo. 61

pdf63 trang | Chia sẻ: lethao | Lượt xem: 2794 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu và cấu hình GRUB trên LINUX, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
lệnh này có thể được dùng trong thực đơn lẫn ở dòng lệnh. color bình_thường [tô_sáng] Thay đổi màu thực đơn. Màu bình_thường được dùng cho hầu hết các dòng trong thực đơn, và màu tô_sáng được dùng để tô sáng dòng mà con trỏ đang chỉ đến. Nếu không dùng tô_sáng, màu ngược lại của bỉnh_thường được dùng để tô sáng. Định dạng của một màu là tiền_cảnh/hậu_cảnh. tiền_cảnh và hậu_cảnh là các tên màu tượng trưng. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 16 GVHD: NGUYỄN TẤN KHÔI Tên màu tượng trưng phải là một trong các tên sau: • black • blue • green • cyan • red • magenta • brown • light-gray Những tên bên dưới chỉ dùng được cho tiền cảnh. • dark-gray • light-blue • light-green • light-cyan • light-red • light-magenta • yellow • white Nhưng chỉ có 8 tên đầu có thể dùng cho hậu_cảnh. Nếu muốn chớp nháy màu tiền cảnh, dùng tiền tố blink- cho tiền_cảnh. Lệnh này dùng được trong tập tin cấu hình và ở dòng lệnh. Thí dụ trong tập tin cấu hình: # Thie^'t la^.p ma`u ma(.c ddi.nh. color light-gray/blue black/light-gray # Thay ddo^?i ma`u. title OS-BS like color magenta/blue black/magenta device ổ_đĩa tập_tin Trong shell grub, chỉ định tập tin tập_tin như là ổ đĩa thực sự cho ổ đĩa BIOS ổ_đĩa. Có thể dùng lệnh này để tạo hình ảnh đĩa, và/hoặc sửa chữa các ổ đĩa được GRUB đoán khi GRUB không xác định được chúng một cách chính xác, như: grub> device (fd0) /floppy-image grub> device (hd0) /dev/sd0 Lệnh này chỉ dùng được ở shell grub. hide phân_vùng Che dấu phân vùng phân_vùng bằng cách thiết lập bit ẩn trong mã loại phân vùng của nó. Điều này có lợi khi khởi động DOS hay Windows và nhiều phân vùng FAT sơ cấp tồn tại trên một đĩa. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 17 GVHD: NGUYỄN TẤN KHÔI password [--md5] mật_khẩu [tập_tin_cấu_hình_mới] Nếu được dùng trong phần đầu tiên của một tập tin thực đơn, nó sẽ vô hiệu hoá mọi hoạt động điều khiển biên tập tương tác (bộ phận biên tập đề mục thực đơn và dòng lệnh) và các đề mục được bảo vệ bằng lệnh lock. Nếu mật khẩu mật_khẩu được nhập, nó sẽ tải tập_tin_cấu_hình_mới làm tập tin cấu hình mới và khởi động lại GRUB Giai đoạn 2 nếu tập_tin_cấu_hình_mới được chỉ định. Nếu không, GRUB sẽ chỉ mở khoá các lệnh đặc quyền. Lệnh này cũng có thể được dùng trong phần script, khi đó nó sẽ hỏi mật khẩu trước khi tiếp tục. Tuỳ chọn --md5 bảo GRUB rằng mật_khẩu được mã hoá với md5crypt. setkey [đến_phím từ_phím] Thay đổi ánh xạ bàn phím. Phím từ_phím được ánh xạ sang đến_phím. Nếu không có đối số nó sẽ thiết lập lại ánh xạ bàn phím. Lưu ý rằng lệnh này không hoán đổi các phím. Nếu muốn hoán đổi các phím, chạy lệnh này một lần nữa với thông số hoán đổi, như: grub> setkey capslock control grub> setkey control capslock Một phím phải là một chữ cái, một con số, hoặc một trong các kí hiệu sau: escape, exclam, at, numbersign, dollar, percent, caret, ampersand, asterisk, parenleft, parenright, minus, underscore, equal, plus, backspace, tab, bracketleft, braceleft, bracketright, braceright, enter, control, semicolon, colon, quote, doublequote, backquote, tilde, shift, backslash, bar, comma, less, period, greater, slash, question, alt, space, capslock, FX (X là một chữ số), và delete. unhide phân_vùng Khử ẩn phân vùng phân_vùng bằng cách xoá bit ẩn trong mã loại phân vùng. Lệnh này có ích khi khởi động DOS hoặc Windows và có nhiều phân vùng sơ cấp trên một đĩa cứng. 17. Các lệnh dùng ở dòng lệnh và đề mục thực đơn Các lệnh này dùng được ở dòng lệnh và ở đề mục thực đơn. Có thể chạy lệnh help để xem thông tin về các lệnh này. blocklist tập_tin In kí hiệu danh sách khối của tập tin tập_tin. boot Khởi động hệ điều hành/trình nạp chuỗi đã được nạp. Chỉ cần thiết khi chạy trên dòng lệnh tương tác đầy đủ (nó được hiểu ngầm ở cuối đề mục thực đơn). cat tập_tin Hiển thị nội dung tập tin tập_tin. Lệnh này có thể giúp xác định đúng đâu là thư mục gốc của hệ điều hành: grub> cat /etc/fstab chainloader [--force] tập_tin Nạp chuỗi tập_tin. Nếu chỉ định tuỳ chọn --force, nó sẽ cưỡng bức nạp tập_tin, cho dù nó có chữ kí đúng hay không. Điều này giúp nạp một trình nạp khởi động khiếm khuyết (như để khởi động SCO UnixWare 7.1). TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 18 GVHD: NGUYỄN TẤN KHÔI cmp tập_tin1 tập_tin2 So sánh tập tin tập_tin1 với tập_tin2. Nếu chúng khác nhau về kích thước, in các kích thước như sau: Differ in size: 0x1234 [foo], 0x4321 [bar] Nếu kích thước bằng nhau nhưng các byte ở một offset khác nhau, in các byte như sau: Differ at the offset 777: 0xbe [foo], 0xef [bar] Nếu chúng hoàn toàn giống nhau, không in gì cả. configfile tập_tin Tải tập_tin làm tập tin cấu hình. displaymem Hiển thị thông tin về bộ nhớ đang được sử dụng, bao gồm tất cả các vùng của RAM vật lý được cài đặt, dựa trên thông tin từ BIOS. Giúp xác định hệ thống có bao nhiêu RAM dành cho khởi động. embed stage1_5 thiết_bị Ghi Giai đoạn 1.5 stage1_5 vào các sector sau MBR nếu thiết_bị là một ổ đĩa, hoặc vào vùng của trình khởi động nếu thiết_bị là một phân vùng FFS hoặc phân vùng ReiserFS. In con số các sector chiếm bởi stage1_5, nếu thành công. Thông thường không cần chạy lệnh này trực tiếp. find tên_tập_tin Tìm tên tập tin tên_tập_tin trong tất cả các phân vùng và in danh sách các thiết bi chứa tập tin. Tên tập tin tên_tập_tin nên là một tên tập tin tuyệt đối như /boot/grub/stage1. halt --no-apm Tắt máy tính. Nếu tuỳ chọn --no-apm được chỉ định, không thực hiện lời gọi APM BIOS; nếu không, máy tính dùng APM khi tắt. help --all [mẫu ...] Hiển thị thông tin về các lệnh được cài sẵn. Nếu không chỉ định mẫu, lệnh này sẽ cho ra miêu tả ngắn của hầu hết các lệnh có sẵn. Nếu chỉ định tuỳ chọn --all, các miêu tả ngắn cho các lệnh hiếm dùng cũng được trình bày. Nếu chỉ định mẫu, nó sẽ trình bày thông tin dài hơn về mỗi lệnh khớp với các mẫu đó. initrd tập_tin ... Nạp đĩa RAM ban đầu cho hình ảnh khởi động theo định dạng Linux và thiết lập các thông số thích hợp cho vùng thiết lập Linux trong bộ nhớ. install Đã được đề cập ở trên. ioprobe ổ_đĩa Dò tìm cổng I/O dùng cho ổ đĩa ổ_đĩa. Lệnh này sẽ liệt kê các cổng I/O trên màn hình. kernel [--type=loại] [--no-mem-option] tập_tin ... Nạp hình ảnh khởi động (Multiboot a.out hoặc ELF, Linux zImage hoặc bzImage, FreeBSD a.out, NetBSD a.out, v.v...) từ tập_tin. Phần còn lại của dòng được chuyển nguyên văn như dòng lệnh nhân. Bất cứ mô-đun nào cũng có thể được nạp sau khi dùng lệnh này. Lệnh này cũng chấp nhận tuỳ chọn --type để chỉ định cụ thể loại nhân của tập_tin. Đối số loại phải là một trong các thứ sau: netbsd, freebsd, TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 19 GVHD: NGUYỄN TẤN KHÔI openbsd, linux, biglinux, và multiboot. Tuy nhiên, chỉ cần xác định loại nhân khi nạp nhân NetBSD ELF vì GRUB có thể tự động xác định loạ i nhân trong các trường hợp khác một cách khá an toàn. Tuỳ chọn --no-mem-option chỉ hiệu quả trên Linux. Nếu chỉ định tuỳ chọn này, GRUB không chuyển tuỳ chọn mem= đến nhân. lock Ngăn cản người dùng thông thường thi hành các đề mục thực đơn một cách tuỳ ý. Để lệnh này thực sự có tác dụng phải dùng kèm với lệnh password. Lệnh này được dùng trong thực đơn, như ở thí dụ sau: title DDe^` mu.c na`y ddu+o+.c ba?o ve^. lock root (hd0,a) kernel /no-security-os makeactive Thiết lập phân vùng chủ động (active) trên đĩa root cho thiết bị root của GRUB. Lệnh này chỉ giới hạn (do chỉ có ý nghĩa) cho các phân vùng PC sơ cấp trên đĩa cứng. map từ_ổ_đĩa đến_ổ_đĩa Ánh xạ ổ đĩa từ_ổ_ đĩa đến ổ đĩa đến_ổ_đĩa. Điều này cần thiết khi nạp chuỗi một số hệ điều hành, thí dụ như DOS, nếu hệ điều hành đó nằm ở ổ đĩa không phải là ổ đĩa thứ nhất. Thí dụ: grub> map (hd0) (hd1) grub> map (hd1) (hd0) Thí dụ này chuyển đổi trật tự giữa ổ cúng thứ nhất và ổ cứng thứ hai. md5crypt Nhắc nhập mật khẩu và mã hoá nó ở dạng MD5. Mật khẩu được mã hoá có thể dùng với lệnh password. module tập_tin ... Tải mô-đun khởi động tập_tin cho hình ảnh khởi động định dạng Multiboot . Phần còn lại của dòng được chuyển như là dòng lệnh mô-đun, giống như lệnh kernel. Hình ảnh nhân Multiboot phải được nạp trước khi nạp bất kì mô-đun nào. modulenounzip tập_tin ... Giống như module, ngoại trừ việc giải nén tự động bị bất hoạt. pause thông_điệp ... In thông_điệp, rồi chờ cho đến khi một phím được ấn. Lưu ý rằng nếu đặt (mã ASCII 7) trong thông điệp thì loa sẽ phát ra âm thanh bíp chuẩn, có ích khi nhắc người dùng thay đổi đĩa mềm. quit Thoát shell grub. Lệnh này chỉ dùng được trong shell grub. reboot Khởi động lại máy tính. root thiết_bị [hdbias] Thiết lập thiết bị root hiện tại sang thiết bị thiết_bị, sau đó gán (mount) nó để lấy thông tin về kích thước phân vùng (để chuyển nhãn phân vùng trong ES:ESI, được dùng bởi một số trình khởi động theo kiểu nạp chuỗi), loại ổ đĩa BSD (để khởi động nhân BSD dùng định dạng nguyên thuỷ của chúng), và xác định chính xác phân vùng PC nơi đặt các tiểu phân vùng BSD. Thông số tuỳ chọn hdbias là một số cho nhân BSD biết con số ổ đĩa BIOS là bao nhiêu trên các controller trước ổ TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 20 GVHD: NGUYỄN TẤN KHÔI đĩa hiện tại. Thí dụ, nếu có một đĩa IDE và một đĩa SCSI, và phân vùng root của FreeBSD trên đĩa SCSI, thì dùng 1 cho hdbias. rootnoverify thiết_bị [hdbias] Tương tự như root, nhưng không gán (mount) phân vùng. Điều này hữu ích khi hệ điều hành nằm ngoài khu vực trên đĩa mà GRUB có thể đọc, nhưng vẫn muốn thiết lập thiết bị root đúng. Lưu ý rằng các mục đề cập ở phần lệnh root bên trên có được do gán sẽ không làm việc chính xác. savedefault Lưu đề mục hiện tại làm đề mục mặc định Với cấu hình này GRUB sẽ chọn đề mục được khởi động trước đây làm đề mục mặc định. Dùng lệnh savedefault ở một hoặc một vài đề mục và không dùng ở một số đề mục khác sẽ tạo thực đơn cho phép thay đổi mặc định ở một vài hệ thống và không bao giờ thiết lập mặc định được cho các hệ điều hành kia. setup Đã được dề cập ở trên. IV. Một số ứng dụng cụ thể và vấn đề thường gặp 1.1 Tạo đĩa CD khởi động với GRUB • Nếu bạn đã có đĩa mềm khởi động với GRUB o Đặt đĩa vào ổ đĩa và thực hiện lệnh dd if=/dev/fd0 of=boot.img bs=1024 count=1440 • Nếu bạn không có ổ đĩa mềm o bạn cần tạo một ổ đĩa mềm ảo (hình ảnh ổ đĩa): o dd if=/dev/zero of=boot.img bs=1024 count=1440 o mke2fs -F boot.img o mount -o loop boot.img mnt o mkdir -p mnt/boot/grub o Các tập tin tối thiểu cần có để GRUB làm việc gồm stage1, stage2, menu.lst. Định vị các tập tin này trong hệ thông của bạn, thường chúng có trong /boot/grub hoặc /usr/local/share/grub/i386-pc. Chép chúng vào tập tin hình ảnh: o cp /đường-dẫn/stage1 mnt/boot/grub o cp /đường-dẫn/stage2 mnt/boot/grub cp /đường-dẫn/menu.lst mnt/boot/grub o Biên tập menu.lst (nếu cần thiết): o cd mnt/boot/grub vi menu.lst TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 21 GVHD: NGUYỄN TẤN KHÔI o Tháo gán và chạy grub: o umount mnt grub Trong shell grub, chạy các lệnh: device (fd0) boot.img root (fd0) setup (fd0) quit • Dùng tập tin hình ảnh tạo đĩa CD khởi động: • mkdir -p /tmp/boot • mv boot.img /tmp/boot • cd /tmp mkisofs -b boot/boot.img -c boot/boot.catalog -o boot.iso -r boot Tập tin được tạo ra là /tmp/boot.iso, bạn dùng nó để ghi vào đĩa CD. 1.2 Khởi động nhiều bản Windows cài đặt trên một đĩa cứng title windows hide (hd0,1) unhide (hd0,0) root (hd0,0) makeactive chainloader +1 title windows_2 hide (hd0,0) unhide (hd0,1) root (hd0,1) makeactive chainloader +1 1.3 Khởi động ổ CD GRUB chưa hỗ trợ khởi động ổ CD, do đó nếu muốn tử GRUB khởi động một CD thì phải nhờ một trình khởi động trung gian. sbminst -t us -d /dev/fd0 (tạo đĩa mềm khởi động Smart Boot Manager) dd if=/dev/fd0 of=/boot/sbm.img bs=1k count=18 cp /path/to/syslinux-2.04/memdisk/memdisk /boot (tìm gói syslinux và lấy tập tin memdisk trong đó) Thêm đề mục vào menu.lst: title cdrom kernel (hd1,6)/boot/memdisk initrd (hd1,6)/boot/sbm.img TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 22 GVHD: NGUYỄN TẤN KHÔI V. Cơ chế an toàn và bảo mật GRUB Dùng tính năng mật khẩu của GRUB để chỉ cho phép người quản trị dùng các hoạt động tương tác (như biên tập đề mục thực đơn và vào giao diện dòng lệnh). Để sử dụng tính năng này, cần chạy lệnh password trong tập tin cấu hình, như sau: password --md5 PASSWORD Khi đó GRUB không cho phép điều khiển tương tác nào ( và ), cho đến khi gõ phím và nhập đúng mật khẩu. Tuỳ chọn --md5 cho GRUB biết rằng PASSWORD ở định dạng MD5. Nếu không sử dụng tuỳ chọn này, GRUB cho rằng PASSWORD ở dạng văn bản thuần tuý. Mật khẩu có thể được mã hoá bằng lệnh md5crypt. Thí dụ chạy shell grub và nhập mật khẩu: grub> md5crypt Password: ********** Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb. Sau đó cắt và dán mật khẩu đã được mã hoá vào tập tin cấu hình. Ngoài ra cũng có thể chỉ định đối số tuỳ chọn cho lệnh password, thí dụ: password PASSWORD /boot/grub/menu-admin.lst Khi đó GRUB sẽ nạp /boot/grub/menu-admin.lst làm tập tin cấu hình khi nhập đúng mật khẩu. Nếu muốn chỉ có người quản trị mới có quyền chạy một số đề mục thực đơn nào đó, chẳng hạn như khởi động một hệ điều hành không bảo mật như DOS, có thể dùng lệnh lock; lệnh này luôn luôn dừng lại cho đến khi nhập đúng mật khẩu. Thí dụ: title Kho+?i ddo^.ng DOS lock rootnoverify (hd0,1) makeactive chainload +1 Cũng có thể dùng lệnh password thay cho lock. Trong trường hợp này tiến trình khởi động sẽ yêu cầu mật khẩu và dừng lại cho đến khi mật khẩu được nhập chính xác. Vì lệnh password nhận đối số PASSWORD của chính nó nên sẽ có lợi nếu dùng một mật khẩu khác với mật khẩu cho các đề mục khác. Nên sử dụng lệnh lock/password ngay sau title vì các lệnh trong đề mục thực đơn được thực thi theo thứ tự. grub-md5-crypt là script gọi shell grub để mã hoá một chuỗi kí tự ở dạng MD5. Mật khẩu do chương trình này mã hoá có thể được dùng với lệnh password. grub-md5-crypt nhận các tuỳ chọn sau: --help In tóm tắt các tuỳ chọn dòng lệnh và thoát --version In thông tin phiên bản và thoát --grub-shell=tập_tin Dùng tập_tin làm shell grub TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 23 GVHD: NGUYỄN TẤN KHÔI VI. [Grub 2] 1. [Từ Ubuntu-VN] GRand Unified Bootloader, version 2 (Grub 2) là phiên bản thứ hai của GNU GRUB. Nó là chương trình chịu trách nhiệm quá trình nạp và giao quyền điều khiển cho nhân hệ điều hành trong lúc khởi động. Grub 2 tương thích với chuẩn POSIX (ví dụ như GNU/Linux, *BSD, Mac OS,...) và cũng có thể kết nối đến những hệ thống không tương thích với POSIX (Portable Operating System Interface for Unix). GRUB 2 được viết lại mới hoàn toàn về mặt giao diện. Dựa trên nghiên cứu của dự án PUPA, GRUB 2 hỗ trợ tính mô-đun và cơ động nhiều hơn người tiền nhiệm của nó. Sau đây là một vài cải tiến dự kiến của GRUB 2: • hỗ trợ giao diện đồ họa, kể cả theo chủ đề; • mô-đun hóa quá trình nạp (modular loading); • tương thích đa nền tảng (hệ điều hành); • hỗ trợ nhúng mã (scripting support); • tùy biến các mục khởi động; • kiểm tra tên phân vùng. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 24 GVHD: NGUYỄN TẤN KHÔI 2. [Cài đặt / Nâng cấp] 2.1 [Cài đặt (Ubuntu 9.10)] GRUB 2 sẽ được cài mặc định trên phiên bản Karmic. Nếu bạn muốn nâng cấp từ Jaunty 9.04 lên Karmic 9.10 bạn có thể theo các bước hướng dẫn dưới đây: 2.2 [Cài đặt (Ubuntu 9.04+)] • Mở một cửa sổ dòng lệnh (Terminal) và nhập $ sudo apt-get install grub2 Chọn OK từ grub-pc configuration • Chọn Chainload from menu.lst YES • Tại dấu nhắc lệnh, ấn ENTER NOTE: Cái này chỉ là tạm thời, bạn phải cố định nó lại bằng cách... • Nhập vào một terminal $ sudo upgrade-from-grub-legacy Sau đó GRUB 2 sẽ cho biết địa chỉ mà nó khởi động. Trên hệ thống thử nghiệm của chúng tôi, nó hiển thị (hd0) /dev/sda nhưng có thể khác trên máy của bạn. Nếu chưa chính xác, bạn phải chỉnh sửa file /boot/grub/device.map để khớp với hệ thống của bạn và thế là chạy: $ sudo grub-install GRUB 2 sẽ được cài đầy đủ, còn GRUB hiện hữu thì bị gỡ ra và cấu hình của nó sẽ được sao lưu lại. Cấu hình của GRUB cũ được lưu tại /boot/grub và có tên là menu.lst* Bạn có thể xác định lại phiên bản mà bạn vừa cài bằng cách nhập: grub-install –v TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 25 GVHD: NGUYỄN TẤN KHÔI 3. [Hệ thống thư mục và tập tin của Grub 2] Trong khi toàn bộ các file của nó vẫn còn nằm trong thư mục /boot/grub, thì không còn có khái niệm menu.lst. Tâp tin điều khiển Grub đó bây giờ là grub.cfg. Nó được tạo ra bởi nhiều kịch bản (scripts) được chạy khi lệnh "update-grub" được thực thi (lưu ý phải chạy dưới quyền root: "sudo update-grub"). Những files đóng vai trò chính về nội dung của grub.cfg /etc/default/grub và những file kịch bản riêng lẻ được đặt tại /etc/grub.d/ Nhiều tập tin trong /boot/grub sẽ rất xa lạ với người dùng quen với Grub trước. Đặc biệt đáng chú ý là có vô số các file *.mod trong thư mục /boot/grub. Grub 2 có tính mô-đun và những dữ liệu trong *.mod được nạp lên khi cần thiết bởi grub. Mặc dù có sự bổ sung của những tập tin này, tổng kích thức của thư mục /boot/grub gần như không đổi so với Grub Legacy và không đòi hỏi nhiều không gian cho phân vùng /boot. 3.1 [grub.cfg (/boot/grub/grub.cfg)] KHÔNG CHỈNH SỬA TẬP TIN NÀY Đây là tập tin chính của Grub 2. Nó là "vết tích" của /boot/grub/menu.lst trong Grub Legacy. Nó chứa các lệnh chỉ thị các đề mục cho Grub. Nhưng không giống như file menu.lst trong Grub Legacy, grub.cfg vốn sinh ra KHÔNG ĐỂ NGƯỜI DÙNG CHỈNH SỬA!!! • grub.cfg được tạo ra một cách tự động hoạt tự cập nhật khi và chỉ khi lệnh "update-grub" được thi hành. Lệnh này phải được chạy dưới quyền của "người quản trị" ("root"). • Các kịch bản được dùng để khởi tạo grub.cfg bao gồm các tâp tin chứa trong thư mục /etc/grub.d và thông tin được thu thập từ /etc/default/grub • Tập tin này được chia thành từng khu vực. Mỗi phân khu được mô tả và có thể nhận biết bằng dòng ### BEGIN. Thông tin trong dòng này đề cập đến những tập tin trong thư mục /etc/grub.d vốn dùng để liên kết thông tin vào trong grub.cfg • Mặc định, và mỗi khi lệnh "update-grub" được thực thi, tâp tin này được "niêm chì" chỉ đọc mà thôi. Điều này giữ cho nội dung của tập tin sẽ không bị thay đổi một cách "thủ công". Nếu bạn muốn chỉnh sửa file này, hướng dẫn nằm ở cuối bài. • Đây là nội dung mẫu của grub.cfg, bao gồm hai lõi (kernel) Ubuntu, memtest86+, Windows và một mục tùy chỉnh (41_srcd), được nhập từ các kịch bản ở /etc/grub.d/ : TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 26 GVHD: NGUYỄN TẤN KHÔI # # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/update-grub using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### set default=0 set timeout=5 set root=(hd0,5) search --fs-uuid --set b02e1934-12dd-418a if font /usr/share/grub/ascii.pff ; then set gfxmode=640x480 insmod gfxterm insmod vbe terminal gfxterm fi ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=cyan/blue set menu_color_highlight=white/blue ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_hurd ### ### END /etc/grub.d/10_hurd ### ### BEGIN /etc/grub.d/10_linux ### set root=(hd0,5) search --fs-uuid --set b02e1934-12dd-418a-be3a-9ff7d3e7e7ea menuentry "Ubuntu, linux 2.6.28-13-generic" { linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800 initrd /boot/initrd.img-2.6.28-13-generic } menuentry "Ubuntu, linux 2.6.28-13-generic (single-user mode)" { linux /boot/vmlinuz-2.6.28-13-generic root=UUID=b02e1934-12dd-418a ro single initrd /boot/initrd.img-2.6.28-13-generic } menuentry "Ubuntu, linux 2.6.28-11-generic" { linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro quiet splash vga800 initrd /boot/initrd.img-2.6.28-11-generic } menuentry "Ubuntu, linux 2.6.28-11-generic (single-user mode)" { linux /boot/vmlinuz-2.6.28-11-generic root=UUID=b02e1934-12dd-418a ro single initrd /boot/initrd.img-2.6.28-11-generic } ### END /etc/grub.d/10_linux ### TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 27 GVHD: NGUYỄN TẤN KHÔI ### BEGIN /etc/grub.d/20_memtest86+ ### menuentry "Memory test (memtest86+)" { linux /boot/memtest86+.bin } menuentry "Memory test (memtest86+, serial console 115200)" { linux /boot/memtest86+.bin console=ttyS0,115200n8 } ### END /etc/grub.d/20_memtest86+ ### ### BEGIN /etc/grub.d/30_os-prober ### menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" { set root=(hd0,1) chainloader +1 } ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file is an example on how to add custom entries ### END /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/41_srcd ### menuentry "SystemRescue CD on hard drive" { set root=(hd0,10) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz } ### END /etc/grub.d/41_srcd ### 3.2 [grub (/etc/default/grub)] Tập tin này chứa đựng dữ liệu nằm ở phần trên trong tập tin /boot/grub/menu.lst vốn thuộc về grub trước đây. Nó lưu lại những thiết đặt chính yếu ảnh hưởng đến việc hiển thị các đề mục của Grub. Tập tin này có thể được chỉnh sửa bởi root để thay đổi các thiết đặt này; chúng sẽ được đưa vào grub.cfg khi chạy lệnh "update- grub". # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 28 GVHD: NGUYỄN TẤN KHÔI # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true" This file contains information formerly contained in the upper section of Grub Legacy's ''menu.lst'' and items contained on the end of the kernel line. The items in this file can be edited by a user with administrator (root) privileges. Grub developers have have placed explanatory comments within the file itself. • GRUB_DEFAULT=0 o Thiết đặt lựa chọn khởi động mặc định. Giá trị có thể là con số hoặc từ "saved" o GRUB_DEFAULT=0  Thiết đặt mặc định theo vị trí trong đề mục. Giống với Grub Legacy, dòng mục đầu tiên trong grub.cfg là 0, thứ hai là 1, ... o GRUB_DEFAULT=saved  Thiết đặt mặc định theo lựa chọn ở lần khởi động trước. Nếu bảng lựa chọn được hiển thị trong lúc khởi động thì lựa chọn trước đó sẽ được làm nổi bật. Nếu không tác động gì đến bàn phím hoặc bảng lựa chọn không xuất hiện thì lựa chọn đó sẽ được khởi động khi hết thời gian chờ. o GRUB_DEFAULT="xxxx"  Với xxxx là tên chính xác của mục lựa chọn (chú ý phải có thêm 2 dấu ngoặc kép). Trong trường hợp này thì không cần phải quan tâm đến thứ tự của mục lựa chọn. Để biết tên của mục cần chọn, chạy lệnh này trong terminal: grep menuentry /boot/grub/grub.cfg • GRUB_TIMEOUT=5 o Không có gì thay đổi từ phiên bản trước. Đây là thời gian đếm ngược (tính bằng giây) hiển thị bảng lựa chọn trước khi lựa chọn mặc định được khởi động. o Thiết đặt giá trị là -1 sẽ hiển thị bảng lựa chọn cho đến khi người dùng đưa ra quyết định (không có thời gian chờ). TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 29 GVHD: NGUYỄN TẤN KHÔI • GRUB_HIDDEN_TIMEOUT=0 o Bảng lựa chọn sẽ bị ẩn đi nếu không có dấu "#" đặt ở đầu dòng này. ( # GRUB_HIDDEN_TIMEOUT=0 ) o Thiết đặt mặc định ban đầu phụ thuộc vào sự hiện diện của hệ điều hành khác.  Nếu phát hiện có hệ điều hành khác: bảng lựa chọn sẽ xuất hiện (dòng này sẽ chêm dấu "#")  Nếu không phát hiện hệ điều hành khác: bảng sẽ bị ẩn đi. o Nếu đặt một số nguyên lớn hơn 0, khi khởi động máy sẽ xuất hiện thời gian chờ tương ứng với con số đó, nhưng vẫn không hiện bảng lựa chọn. o 0: khởi động ngay tức khắc, không có bảng lựa chọn, không có thời gian chờ.  Khi thiết đặt giá trị 0:  Người dùng có thể ép buộc máy phải hiển thị bảng lựa chọn bằng cách ấn và giữ phím SHIFT.  Trong quá trình khởi động, hệ thống

Các file đính kèm theo tài liệu này:

  • pdfTìm hiểu và cấu hình GRUB trên LINUX.pdf