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

Đồ án "Tìm hiểu và cấu hình GRUB trên LINUX" LINUX là một hệ điều hành họ UNIX miễn phí dùng cho máy tính cá nhân đang được sử dụng rộng rãi hiện nay. Được viết vào những năm 1991 bởi Linus Tovard, hệ điều hành LINUX đã thu được những thành công nhất định. Hiện nay, LINUX ngày càng phát triển được đánh giá cao và thu hút nhiều sự quan tâm của các nhà tin học.

pdf63 trang | Chia sẻ: lvcdongnoi | Ngày: 28/06/2013 | Lượt xem: 2028 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Tìm hiểu và cấu hình GRUB trên LINUX, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ả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 sẽ kiểm tra trạng thái của phím SHIFT. Nếu nó không xác định được trạng thái của phím, sẽ hiện ra một khoảng thời gian ngắn cho phép hiển thị bảng lựa chọn bằng cách ấn phím ESC.  Nếu được kích hoạt, một hình nền (splash screen) kiểu 05_debian_theme sẽ được hiển thị kể cả khi tính năng ẩn bảng lựa chọn được bật. • GRUB_HIDDEN_MENU_QUIET=true o true - Không hiển thị thời gian đếm ngược. Màn hình hoàn toàn trống. o false - Hiển thị thời gian đếm ngược dựa trên giá trị tại dòng GRUB_HIDDEN_TIMEOUT. • GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` o Xác định phần mô tả của tên mục trong bảng lựa chọn. (Ubuntu, Xubuntu, Debian, ...) • GRUB_CMDLINE_LINUX o Nếu có dòng này được gán thông tin, nó sẽ nhập thông tin đó vào cuối dòng của đề mục (cho các chế độ normal và recovery). Lệnh này giống với lệnh "altoptions" trong menu.lst trước đây. • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" o Dòng này nhập thông tin vào cuối dòng của đề mục (chỉ áp dụng cho chế độ normal). Nó tương tự như dòng "defoptions" trong menu.lst. Nếu bạn muốn lúc khởi động vào Ubuntu sẽ hiện chi chít chữ và số hãy gỡ bỏ cụm từ "quiet splash". Nếu bạn muốn có một ít thông tin chạy dưới logo của Ubuntu thì chỉ để là "splash". <-- Điều này ("splash") không có tác dụng trong quá trình khởi động của Karmic vì trình xsplash không cho phép hiển thị thông tin, nhưng lúc tắt máy (shutdown) thì lại có. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 30 GVHD: NGUYỄN TẤN KHÔI • #GRUB_TERMINAL=console o Nếu bỏ chú thích thì sẽ vô hiệu tính đồ họa của terminal (chỉ grub-pc). • #GRUB_DISABLE_LINUX_UUID=true o Bỏ chú thích nếu bạn không muốn GRUB bỏ qua thông số "root=UUID=xxx" trong Linux. • GRUB_DISABLE_LINUX_RECOVERY=true o Thêm hoặc bỏ chú thích (#) ở dòng này để ngăn không cho chế độ "Recovery" xuất hiện trong bảng lựa chọn. • GRUB_DISABLE_OS_PROBER=true o Bất/Tắt kiểm tra các hệ điều hành khác có trong hệ thống, bao gồm Windows, Linux, OSX và Hurd. 3.3 [/etc/grub.d/ (thư mục)] Những tập tin trong thư mục này được truy xuất trong quá trình thực thi lệnh "update-grub". Các đoạn mã trong những tập tin này xuất thông tin vào trong /boot/grub/grub.cfg. Các tập tin được chạy một cách tuần tự - tập tin nào có tên bắt đầu bằng số thì chạy trước, kế đến là tên bằng chữ cái. Thứ tự của tập tin được chạy quyết định vị trí của các đề mục trong bảng lựa chọn. Các mục tùy chọn có thể được thêm vào tập tin "40_custom" hoặc được đặt vào một tập tin mới. Bất kì tập tin nào được tạo ra phải có tính thực thi để được trích xuất vào trong tập tin "grub.cfg" tại thời điểm thực hiện lệnh "update-grub". Có thể đạt được điều này bằng cách gõ vào trong terminal "sudo chmod u+x /etc/grub.d/tên-tập-tin". Dưới dây là mô tả tổng quát nhiệm vụ của các tập tin: • 00_header o Tải các thiết lập từ /etc/default/grub, bao gồm cách trình bày, đếm ngược và các tuỳ chọn về terminal . • 05_debian_theme o Chỉnh hình nền, màu chữ và chủ đề. • 10_hurd o Định vị hurd kernels (hiện tại không dùng). • 10_linux TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 31 GVHD: NGUYỄN TẤN KHÔI o Định vị kernels dựa trên tên bản phân phối đã được xác định bởi kết quả của lệnh "lsb_release -i -s" ("Ubuntu"). • 20_memtest86+ o Nếu có tồn tại tập tin /boot/memtest86+.bin, nó sẽ được đưa vào danh sách lựa chọn lúc khởi động. • 30_os-prober o Dò tìm các hệ điều hành khác và đưa nó vào danh sách lựa chọn. • 40_custom o Một kiểu mẫu dùng để tạo các lựa chọn tuỳ biến sẽ được đưa vào trong grub.cfg khi thực hiện lệnh "update-grub". Tập tin này và bất kì tập tin tuỳ biến nào khác phải có tính thực thi để cho phép nhập nội dung vào trong grub.cfg. Những tập tin này được đặt vào trong bảng lựa chọn theo số thứ tự ghi trên tên tập tin. 4. [Thêm mục lựa chọn vào Grub 2] grub.cfg được cập nhật khi update-grub hoặc update-grub được thực thi. Các thay đổi ở trong grub.cfg phải được tạo ra bằng các tập tin chứa mã tương ứng chứ không phải từ chính bản thân grub.cfg. LƯU Ý: Dòng ghi chú đầu tiên trong grub.cfg có nghĩa là "KHÔNG ĐƯỢC CHỈNH SỬA TẬP TIN NÀY". Tập tin này mang thuộc tính "chỉ đọc" và dù bạn có cố gắng sửa thì nó vẫn trở về trạng thái như cũ mỗi khi lệnh update-grub được chạy. 4.1 [Tự động thiết lập] • Khi "update-grub" được thực thi, Grub 2 sẽ đọc dữ liệu từ /etc/default/grub và những tập tin nằm trong thư mục /etc/grub.d. Sự kết hợp này sẽ tạo nên những thông số trực quan cho bảng lựa chọn (/etc/default/grub) và tìm kiếm các nhân linux, các hệ điều hành khác và các tuỳ chọn khác do người dùng thiết lập trong /etc/grub.d. Các tập tin kịch bản trong /etc/grub.d thực hiện các thao tác sau: • 10_linux dò tìm những nhân linux đã được cài đặt. • 30_os-prober dò tìm các hệ điều hành khác . • 40_custom và những tập tin khác do người dùng tự thiết lập trong thư mục /etc/grub.d có vai trò thêm các những mục tuỳ chọn vào trong bảng lựa chọn. • Tên tập tin sẽ quyết định thứ tự của các mục trong bảng lựa chọn. Các mục trong 30_os-prober sẽ đứng trước các mục trong 40_custom. Các mục có số cao hơn sẽ xếp sau các mục có số nhỏ hơn. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 32 GVHD: NGUYỄN TẤN KHÔI • Mọi tập tin do người dùng tạo ra phải có tính thực thi. Điều này có thể thực hiển với quyền root bằng cách chạy: sudo chmod u+x /etc/grub.d/tên-tập-tin 4.2 [Người dùng tự thiết lập] Người sử dụng với quyền "root" có thể tạo các kịch bản trong thư mục /etc/grub.d/ để có thể sát nhập chúng vào trong tập tin grub.cfg khi update-grub được chạy. • Tên tập tin nên có dạng XX_tên, với XX là con số. • Thứ tự của mục ở bảng lựa chọn khởi động dựa trên số thứ tự các tập tin trong /etc/grub.d. Các tập tin thực thi trong thư mục /etc/grub.d bắt đầu bằng chữ cái sẽ được ưu tiên xếp trước các tập bắt đầu bằng số trong bảng lựa chọn. • Tập tin phải được thiết lập thuộc tích thực thi bằng các gõ trong terminal: sudo chmod +x /etc/grub.d/'''filename''' • Đây là một ví dụ về mục tuỳ chọn. Tập tin này tạo một mục trong bảng lựa chọn để khởi chạy quá trình cài đặt SystemRescueCD trên phân vùng sdb10 và một nhân tuỳ chọn trên sda1. LƯU Ý: về quy ước đặt tên phân vùng mới: • Các thiết bị vẫn bắt đầu đếm từ 0 như trước đây • Tuy nhiên với Grub 2, chỉ số các phân vùng bắt đầu từ 1 • Ví dụ: o phân vùng đầu tiên trên đĩa cứng đầu tiên: (hd0,1) o phân vùng thứ 5 trên đĩa cứng thứ 3: (hd2,5) #!/bin/sh echo "Adding Custom Kernel & SystemRescue" >&2 cat << EOF menuentry "Ubuntu, linux 2.6.31-11-custom" { set root=(hd0,9) linux /boot/vmlinuz-2.6.31-11-custom root=UUID=c6829e27-2350-4e84-bdbb- 91b83f018f98 ro initrd /boot/initrd.img-2.6.28-11-generic } menuentry "Boot SystemRescue CD from hard drive" { set root=(hd1,10) linux /sysrcd/rescuecd subdir=sysrcd setkmap=us initrd /sysrcd/initram.igz } EOF TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 33 GVHD: NGUYỄN TẤN KHÔI • Dòng "echo "Adding SystemRescueCD" >&2" không bắt buộc. Thêm nó vào tập tin để cho phép nó được hiển thị trong terminal khi "update-grub" được kích hoạt. Điều này cung cấp những thông tin phản hồi rằng cái mục này đã được nhận diện và được vào (grub.cfg). Nếu được biên soạn đúng chuẩn thì mục lựa chọn được đưa vào grub.cfg dù cho cái dòng đó có được chèn vào hay không. • Chỉnh sửa thủ công grub.cfg o Nếu bạn phải chỉnh sửa tập tin này: sudo chmod +w /boot/grub/grub.cfg # Remove 'read-only', necessary even for "root" sudo nano /boot/grub/grub.cfg # Edit as "root" • o Lưu ý: Tập tin này sẽ trở lại trạng thái 'chỉ đọc' và những thiết lập của người dùng trong đó sẽ bị ghi đè mỗi khi lệnh "update-grub" được chạy. 4.3 [Gỡ bỏ mục lựa chọn trong Grub 2] Các mục được gỡ bỏ bằng cách điều chỉnh hoặc xoá bỏ các tập tin trong thư mục /etc/grub.d. Tập tin /boot/grub/grub.cfg chỉ để đọc và không nên chỉnh sửa một cách trực tiếp. • Làm tự động. o Những nhân Linux được gỡ bỏ bởi Synaptic cũng sẽ tự biến mất trong grub.cfg mà không cần người dùng động tay đến. o Nhưng hệ điều hành khác nếu được gỡ bỏ khỏi máy tính cũng sẽ biến mất trong danh sách lựa chọn một khi lệnh "update-grub" được chạy với quyền root. • Làm thủ công. o Để ngăn không cho một tập tin trong /etc/grub.d nạp các mục vào trong bảng lựa chọn, hãy thay đổi thuộc tính thực thi hoặc xoá tập tin ứng dụng. o memtest86+: Nếu bạn không muốn thấy memtest86+ xuất hiện trong bảng lựa chọn, chạy lệnh sudo chmod -x /etc/grub.d/20_memtest86+ . Tập tin vẫn còn đó nhưng sẽ không phản ứng với lệnh update-grub. o Recovery mode: Nếu bạn không muốn thấy mục Recovery mode đi kèm với mục nhân kernel, hãy chỉnh sửa file /etc/default/grub bằng cách thêm dòng này: TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 34 GVHD: NGUYỄN TẤN KHÔI GRUB_DISABLE_LINUX_RECOVERY=true • o Nếu một kịch bản tuỳ biến ở trong thư mục /etc/grub.d/ có chứa nhiều mục lựa chọn, có thể xoá bỏ từng mục một mà không ảnh hưởng đến các mục còn lại. o Mẹo: Nếu người dùng muốn các mục tuỳ biến xuất hiện ở đầu bảng lựa chọn, hãy đạt tên có giá trị nhỏ hơn "10_linux", ví dụ như "07_custom". Kiểm tra giá trị "Mặc định" trong /etc/default/grub trỏ đến đúng menuentry sau khi xác lập sự thay đổi. o Sự thay đổi sẽ không diễn ra cho đến khi lệnh "update-grub" được chạy để cập nhật grub.cfg. VII. [Chủ đề ] 1. [Ở phiên bản GRUB 2 đã hỗ trợ hiển thị theo chủ đề] Giao diện đồ hoạ của GRUB giúp cho việc tuỳ biến cách bố trí và diện mạo của bảng lựa chọn GRUB. Chủ đề được cấu hình bằng một tập tin text đơn thuần mà nó chỉ rõ cách sắp xếp của nhiều thành phần GUI khác nhau (bao gồm bảng lựa chọn, thanh hiển thị quá trình đếm ngược và các thông điệp) cũng như diện mạo bằng việc sử dụng màu sắc, kiểu chữ và hình ảnh. 2. [Hình Splash] Đây là một dự án thuộc Google Summer of Code của Colin Bennett nhằm tạo ra một hệ thống menu đồ hoạ tuỳ biến cao cho GNU GRUB bootloader. 3. [Ảnh và màu nền] Ảnh và màu nền được cấu hình trong một kịch bản nằm ở /etc/grub.d/ nếu bạn vào đấy sẽ thấy một tập tin tên là 05_debian_theme, đó là sơ đồ phối màu mặc định của GRUB 2. Bây giờ để tạo cách phối màu cho riêng bạn thì có vài lựa chọn, bạn có thể sao chép và chỉnh sửa tập tin 05_debian_theme or hoặc tự tạo một cái mới hoàn toàn. Mọi tập tin ở /etc/grub.d/ đều được chạy có thứ tự, nếu như bạn có 2 tập tin chủ đề, 05_debian_theme và 06_mytheme chẳng hạn, cái thứ hai (06_mytheme) sẽ TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 35 GVHD: NGUYỄN TẤN KHÔI được chạy sau cùng, cũng là cái được hiển thị cho bạn xem. 4. [Sao chép và chỉnh sửa màu mặc định] • Sao chép sơ đồ màu sắc của chủ đề mặc định $ sudo cp /etc/grub.d/05_debian_theme /etc/grub.d/05_debian_theme.BACKUP $ sudo nano /etc/grub.d/05_debian_theme • Bây giờ bạn có thể chỉnh sửa theo ý thích. 5. [Tạo một tập tin chủ đề mới] • Tạo tập tin chủ đề mới $ sudo nano /etc/grub.d/06_mytheme • Bây giờ bạn có thể bắt tay vào thiết kế. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 36 GVHD: NGUYỄN TẤN KHÔI 6. [Câu lệnh] Vì GRUB 2 đã được viết lại hoàn toàn, cho nên có một số lệnh từng sử dụng ở Grub cũ có thể không tồn tại ở GRUB 2. Danh sách lệnh: TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 37 GVHD: NGUYỄN TẤN KHÔI TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 38 GVHD: NGUYỄN TẤN KHÔI TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 39 GVHD: NGUYỄN TẤN KHÔI 7. [Phục hồi Grub 2 bằng đĩa LiveCD] • Đầu tiên, tải về phiên bản LiveCD mới nhất và khởi động nó. • Mở terminal và gõ $ sudo fdisk -l • Bây giờ bạn cần ghi nhớ thiết bị nào trong danh sách liệt kê chứa bản phân phối Linux của bạn. Chẳng hạn /dev/sda1. Tiếp theo chúng ta cần gắn kết (mount) nó tới /mnt $ sudo mount /dev/sda1 /mnt • Nếu bạn để /boot trên một phân vùng riêng biệt, thì cũng cần phải mount nó lên luôn. Ví dụ như /dev/sda2. $ sudo mount /dev/sda2 /mnt/boot Kiểm tra chắc chắn rằng bạn không nhầm lẫn giữa chúng, chú ý kĩ tới thông tin mà FDISK đưa ra. Cách 1 • Dùng lệnh install grub lên thiết bị của bạn ví dụ với cái trên thì $ sudo grub-install --root-directory=/mnt/ /dev/sda Cần lưu ý ở đây sda là tên cái ổ cứng hoặc thiết bị của bạn, có thể là sda, sdb, sdc ... còn cái sda1 ở các lệnh trên là phân vùng đầu tiên của thiết bị sda. Sau đó bạn vào ubuntu của bạn rồi dùng lệnh $ sudo update grub lại hoặc chỉnh sửa gì tùy ý thích Cách 2 • Mount các thiết bị còn lại. $ sudo mount --bind /dev /mnt/dev • Kế tiếp là chroot vào hệ thống của bạn. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 40 GVHD: NGUYỄN TẤN KHÔI $ sudo chroot /mnt Bạn cần thực hiện chroot vào hệ thống với quyền root, vì vậy bạn nên chuyển vai trò sang root để khỏi phải thêm sudo trước mỗi dòng lệnh. • Giờ thì bạn cần chỉnh sửa tập tin /etc/default/grub cho phù hợp với hệ thống $ nano /etc/default/grub • Khi mọi thứ đã xong bạn cần chạy lệnh update-grub để tạo tập tin cấu hình. $ update-grub • Để cài GRUB 2 vào MBR, bạn cần chạy ở bước tiếp theo: grub-install /dev/sda $ grub-install /dev/sda • Nếu bạn gặp bất kì lỗi nào, hãy thử grub-install --recheck /dev/sda $ grub-install --recheck /dev/sda • Ấn Ctrl+D để thoát khỏi chroot. • Một khi bạn trở về vai trò người dùng quen thuộc, hãy tháo bỏ các gắn kết vào hệ thống, đầu tiên là /dev $ sudo umount /mnt/dev • Nếu lúc đầu có gắn /boot vào thì giờ tháo nó ra: sudo umount /mnt/boot • Giờ thì bạn có thể tháo gắn kết cuối cùng. $ sudo umount /mnt • Và bạn có thể khởi động lại hệ thống của mình và GRUB 2 sẽ lại xuất hiện và chờ lệnh của bạn. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 41 GVHD: NGUYỄN TẤN KHÔI VIII. [Triển khai ứng dụng] Dùng trình soạn thảo nano mở file /etc/default/grub Nội dung file grub như hình bên dưới: Các tham số đã được giới thiệu trong phần lí thuyết TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 42 GVHD: NGUYỄN TẤN KHÔI Ban đầu bảng mục chọn của GRUB không hiển thị. Chỉnh sửa file /etc/default/grub: -Đặt dấu # trước dòng GRUB_HIDDEN_TIMEOUT để cho GRUB nhận ra đây chỉ là dòng chú thích, vô hiệu hoá hiệu lực của dòng này -Dòng GRUB_TIMEOUT sửa lại từ 10 thành 7 để bảng mục chọn GRUB chỉ hiển thị 7 giây để người dùng chọn hệ điều hành khởi động trước khi hệ điều hành chọn mặc định TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 43 GVHD: NGUYỄN TẤN KHÔI Khi chỉnh sửa xong file grub thì sử dụng lệnh sudo update-grub để cập nhật thay đổi. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 44 GVHD: NGUYỄN TẤN KHÔI Khởi động lại máy, lúc này bảng mục chọn GRUB sẽ được hiển thị TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 45 GVHD: NGUYỄN TẤN KHÔI Hiển thị các file và thư mục trong /etc/grub.d TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 46 GVHD: NGUYỄN TẤN KHÔI Sao lưu file 05_debian_theme trong /etc/grub.d trước khi tiến hành chỉnh sửa file này để có thể tạo một ảnh nền trong GRUB TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 47 GVHD: NGUYỄN TẤN KHÔI -Tải một ảnh nền bất kì từ trên Internet về máy hoặc có thể sử dụng hình ảnh nào đó. -Chẳng hạn hình được lấy từ Internet như bên dưới -File này được lưu trong máy. -Trong ví dụ này thì được lưu tại /home/trungdn/Pictures/download.png TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 48 GVHD: NGUYỄN TẤN KHÔI -Sau khi đã sao lưu file 05_debian_theme thực hiện lần lượt các bước sau: +Dùng trình soạn thảo nano để mở file 05_debian_theme để tiến hành chỉnh sửa nội dung +Nội dung file được hiển thị như hình bên dưới TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 49 GVHD: NGUYỄN TẤN KHÔI Chỉnh sửa file này: +Dòng WALLPAPER được chỉnh sửa như hình bên dưới +Đường dẫn ban đầu được thay thành “/home/trungdn/Pictures/download.png” +Sau khi chỉnh sửa thì lưu lại thay đổi (Ctrl + O) và thoát (Ctrl +X) TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 50 GVHD: NGUYỄN TẤN KHÔI Màn hình sau khi thoát Tiến hành cập nhật GRUB: + Lưu lại sự thay đổi TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 51 GVHD: NGUYỄN TẤN KHÔI +Khởi động lại máy để xem kết quả TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 52 GVHD: NGUYỄN TẤN KHÔI - Sau khi khởi động lại máy kết quả được hiển thị như hình bên dưới - Nền đen ban đầu đã được thay thế bằng hình ảnh. TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 53 GVHD: NGUYỄN TẤN KHÔI + Tiến hành loại bỏ mục chọn: -Hiển thị danh sách /etc/grub.d -Loại bỏ thuộc tính thực thi (x) của file 20_memtest86+ để loại bỏ mục chọn này trong GRUB -Khi loại bỏ thuộc tính này thì file từ màu xanh lá sẽ chuyển sang màu trắng như hình bên dưới TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 54 GVHD: NGUYỄN TẤN KHÔI Cập nhật GRUB TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 55 GVHD: NGUYỄN TẤN KHÔI Khởi động lại: +Lúc này mục chọn không còn xuất hiện dòng memtest86 nữa do chúng ta đã loại bỏ thuộc tính thực thi của file này +Kết quả như hình bên dưới TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 56 GVHD: NGUYỄN TẤN KHÔI Giờ ta tiến hành bổ sung thêm mục chọn , để chạy song song hai hệ điều hành +Trong ví dụ hệ điều hành thứ hai là Linux Mint +Chúng ta sẽ khởi động hệ điều hành này dựa trên file ISO Live CD của nó Các thao tác lần lượt: -Tạo thư mục tạm /tmp/iso và /tmp/hdd -Kết nối file iso đến thư mục /tmp/iso thông qua lệnh mount -Kết nối phân vùng thứ năm (sda5) đến thư mục /tmp/hdd -File linuxmint.iso đã có sẵn trong /dev/sda5, nếu chưa có sẵn thì bạn phải sao chép hoặc đồng bộ (dùng lệnh rsync) -Tiến hành ngắt kết nối đến hai thư mục trên -Các thao tác như hình bên dưới TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 57 GVHD: NGUYỄN TẤN KHÔI Sau khi đã có file iso trên phân vùng 5, ta tiến hành dùng nano để chỉnh sửa file /etc/grub.d/40_custom để bổ sung thêm mục chọn cho bảng GRUB -Dùng lệnh loopback để chỉ đường dẫn file iso -Chỉ rõ vị trí file vmlinuz trong file iso -Chỉ rõ vị trí file initrd.lz trong file iso (nếu Ubuntu là file initrd.gz) -Sao lưu và thoát TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 58 GVHD: NGUYỄN TẤN KHÔI -Cập nhật thay đổi GRUB -Khởi động lại TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 59 GVHD: NGUYỄN TẤN KHÔI +Sau khi khởi động lại thì trong GRUB lúc này đã xuất hiện mục chọn “Install Linux Mint” mà chúng ta đã cài đặt Lưu ý: -Chúng ta có thể thay đổi chuỗi “Install Linux Mint” trong /etc/grub.d/40_custom bằng cách sửa chuỗi ngay sau menuentry -Tuy chuỗi là “Install Linux Mint” nhưng đây là Linux Mint LiveCD không cần cài đặt TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 60 GVHD: NGUYỄN TẤN KHÔI Một số hình ảnh trong Linux Mint TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 61 GVHD: NGUYỄN TẤN KHÔI IX. [Tài liệu tham khảo] 1. Nơi tải GRUB xuống ( tp://alpha.gnu.org/gnu/grub/ ) 2. Tài liệu hướng dẫn cách sử dụng GRUB ( Biên soạn bởi: Lâm Vĩnh Niên ) 3.Giáo Trình Iinux căn bản ( Trung tâm phát triển công nghệ thông tin ) 4. Giáo trình Linux Nâng Cao ( Học viện Bưu Chính Viễn Thông ) TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 62 GVHD: NGUYỄN TẤN KHÔI 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 TÌM HIỂU VÀ CẤU HÌNH GRUB TRÊN LINUX Trang- 63 GVHD: NGUYỄN TẤN KHÔI 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

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