23/11/08

Lỗi NTLDR và cách khắc phục

Lỗi NTLDR là một lỗi thỉnh thoảng hay gặp ở các hệ điều hành của Windows họ NT như Windows NT, 2000, XP nếu như bị xoá một số tập tin khởi động của chúng. Lỗi này có thể do sự vô ý của người sử dụng, virus phá hoại hoặc lỗi đĩa. Nếu đã bị lỗi NTLDR thì bạn không thể khởi động vào được hệ điều hành của mình và thông thường là phải nhờ sự giúp đỡ của người khác nếu như bạn không hiểu về chúng.

Entry này bắt nguồn từ việc một đứa em họ của tôi hỏi về lỗi này, tôi nhận thấy cần phải hướng dẫn cách phòng tránh, khắc phục nó để có thể may chăng giúp đỡ một số bạn đọc nếu gặp phải. Hy vọng bài này giúp ích được cho bạn để bớt ngỡ ngàng nếu gặp lỗi liên quan đến quá trình khởi động của hệ thống.

TÌNH TRẠNG LỖI

Vị trí tập tin NTLDR trên phân vùng khởi động và trong bộ cài đặt Windows XP (tương tự đối với các đĩa cài đặt Windows). Nếu các tập tin có thuộc tính ẩn và hệ thống này đột nhiên xuất hiện trước mắt bạn thì có lẽ rằng bạn sẽ xoá chúng. Lỗi này thuộc về phần mềm diệt virus đã làm chúng hiện ra chăng?

Lỗi này sẽ xuất hiện một dòng thông báo "NTLDR is missing. Press Ctrl + Atl+Del to restart" ngay sau khi quá trình POST (kiểm tra phần cứng ban đầu khi khởi động máy tính) hoàn thành và trao quyền cho các hệ điều hành cài đặt trên ổ cứng máy tính. Sau đó thì máy tính không tiếp tục khởi động được nữa, chờ cho ngườ sử dụng bấm tổ hợp ba phím trên để khởi động lại máy tính mà thôi.

Trong một số trường hợp khác, có thể thông báo lỗi như sau:

  • NTLDR is Missing
  • NTLDR is Corrupt
  • NTLDR is Compressed
  • Boot.ini is Missing

Dòng thông báo này khiến cho người sử dụng bấm tổ hợp ba phím trên để khởi động lại hệ thống, tuy nhiên hành động này đã không giúp đỡ được máy tính khởi động vào được hệ điều hành, bởi vì hệ thống đã không khởi động từ lần thứ nhất mà chúng ta không có tiến hành sửa chữa chúng thì lần kế tiếp theo cũng không thể khởi động được.

Nguyên nhân gây lỗi này được xác định rằng hệ điều hành đã không thể tìm thấy một số tập tin phục vụ cho quá trình khởi động với hệ thống Windows. Cụ thể là một trong số các tập tin dưới đây không được tìm thấy tại phân vùng "mồi" để khởi động hệ điều hành (phần thiếu từng tập tin sẽ ảnh hưởng như thế nào, bạn xem phần Kiểm nghiệm ở dưới):

  • NTLDR: (không có phần mở rộng tập tin, có lẽ chúng không cần thiết phải kết hợp với một ứng dụng nào để có thể thực thi chúng trong môi trường hệ điều hành). Dung lượng tập tin: 244 KB (có kích cỡ trên đĩa cứng: 248 KB). Tập tin này được chứa tại thư mục I386 của bộ cài đặt hệ điều hành (thư mục này nằm trên đĩa cài đặt Windows hoặc được chứa trên một thư mục nào đó trên ổ cứng do người sử dụng sao lưu dự phòng vào đó để phục vụ cho quá trình cài đặt hoặc sửa chữa hệ điều hành được thuận tiện hơn.
  • NTDETECT.COM có dung lượng 46,4 KB. Tập tin này cũng được chứa trong thư mục i386 của bộ cài đặt hệ điều hành.
  • boot.ini là tập tin dùng cho lưu trữ chế độ khởi động hệ điều hành ở các phân vùng làm việc, việc quy định khởi động các hệ điều hành khác nhau của hãng Microsoft cũng được thiết đặt trong tập tin này.

Nguyên nhân xảy ra thiếu các tập tin này có thể bởi các lý do sau:

Tập tin bị hư hỏng do lỗi của ổ cứng là một lỗi hiếm gặp nhưng không phải là không xảy ra. Đa số lỗi này xuất hiện ở các phân vùng cài đặt hệ điều hành được định dạng theo FAT 32 (định dạng từ những hệ điều hành Windows 9X), do khả năng chịu lỗi của định dạng FAT 32 mà có thể các tập tin này vô tình bị lỗi. Trường hợp còn lại đối với các ổ cứng có tuổi đời sử dụng cao, có khả năng bị bab một số khối đang chứa một số tập tin này.

Tập tin vô tình bị người sử dụng xoá đi là nguyên nhân thường xảy ra nhất trong những thời gian gần đây. Tôi đưa ra nguyên nhân này và nói đến chúng thường xảy ra gần đây là bởi vì sự gián tếp gây ra lỗi này ở các phần mềm diệt virus đã gián tiếp tiếp tay cho người sử dụng xoá các tập tin này khiến cho hệ thống không khởi động được. Bản thân các tập tin này đã được đặt thuộc tính "Ẩn" (hidden) và "Hệ thống" (system) do đó chúng không hiển thị với các thiết đặt bình thường của hệ điều hành, khi các phần mềm diệt virus đã muốn quét tất cả các tập tin cũng có thuộc tính này (do các loại virus hiện nay thường đặt thuộc tính các tập tin của chúng như vậy) nên đã thiết đặt lại chế độ hiển thị hai dạng thuộc tính ẩn này có thể hiển thị đối với Explorer để có thể "nhìn thấy" chúng cho công việc quét virus. Do sự hiển thị các tập tin quan trọng này nên những người dùng cảnh giác với virus chưa thực sự hiểu được công dụng của chúng đã xoá chúng và hậu quả không xảy ra ngay sau khi xoá tập tin, mà lần khởi động kế tiếp máy tính mới báo lỗi như vậy. Khá hài hước là tôi gặp một số người đã thực hiện việc "Dọn dẹp và xoá các tập tin linh tinh vớ vẩn" theo một ý tốt để rồi gây lỗi.

Tập tin bị virus hoặc các phần mềm độc hại xoá đi cũng là một nguyên nhân, tuy nhiên cũng hiếm gặp như đối với trường hợp tập tin bị lỗi do ổ cứng. Nguyên nhân có vẻ như lẽ ra xảy ra nhiều này nhưng thực tế ít xảy ra thì lại xuất phát bởi các loại virus ngày nay thường quan tâm đến việc đánh cắp thông tin hoặc biến máy tính nạn nhân thành một máy tính ma để có thể điều khiển từ xa thực hiện các hành động mờ ám chứ không còn là mục đích gây phá hoại như trước đây nữa. Nếu như virus muốn thực hiện các hành động trên thì chúng phải ở trong môi trường Windows, mà việc phá hoại việc khởi động hệ thống sẽ làm mất môi trường mà chúng không còn đất sống. Chính lý do này mà tôi tự tin nói rằng chúng ít xảy ra.

XÁC ĐỊNH LỖI VÀ KHẮC PHỤC

Kiểm nghiệm lại một chút

Menu lựa chọn các chế độ khởi động của Windows họ NT. Để vào menu này, bạn bấm F8 khi khởi động.

Thực tế thì tôi không nhớ chính xác đến từng chi tiết và cách khắc phục đối với lỗi này, do đó cần phải có bước kiểm nghiệm, kiểm chứng lại để xem có chính xác là như vậy hay không. Đây là hình thức mà tôi thường thực hiện đối với những bài viết của mình trên blog trước khi xuất bản nó nhằm tránh những sự phổ biến kiến thức sai, không đúng thực tế. Ở đây tôi viết ra một số bước kiểm chứng của mình để tránh sự hạn hẹp về tri thức của bản thân (ở một số bài khác thì kiểm nghiệm lại thường thông qua hình thức tìm kiếm các thông tin trên các website có uy tín hoặc sự thảo luận của nhiều người).

Để tiến hành kiểm nghiệm lại, tôi đã thử xoá đối với một số tập tin xem sao. Kết quả thử xoá một số tập tin như sau:

- Xoá tập tin NTDETECT.COM để giả một trường hợp hư hỏng tập tin hoặc virus phá hoại. Tập tin này có thể được xoá từ trong hệ điều hành, tức là khi bạn đang làm việc ở trong Windows và xoá chúng đi, hệ điều hành đã không có một hành động nào cảnh báo hoặc ngăn chặn chúng ta xoá tập tin này. Sau khi xoá thì quá trình khởi động hệ thống liên tục xảy ra hiện tượng khởi động lại: Cụ thể là khi khởi động thì sau quá trình POST, máy tính chuyển sang trao quyền cho hệ điều hành, và lúc này thì hệ điều hành nhận ra thiếu tập tin và chúng khởi động lại hệ thống mà không hiển thị bất kỳ một lỗi nào cả. Không ổn. Chờ một tiến trình khởi động tiếp theo tôi nhanh tay bấm phím F8 để hiển thị ra bảng lựa chọn các chế độ khởi động vào họ Windows NT. Ở đây bạn có thể nhìn thấy nhiều chế độ lựa chọn cho quá trình khởi động như Safe mode (chế độ khởi động tối thiểu và không nạp một số driver hoặc các service của Windows),... Tuy có nhiều lựa chọn như vậy nhưng bạn không thể lựa chọn bất kỳ chế độ khởi động nào mà thành công được bởi vì tất cả các lựa chọn đó đèu cần thiết đến tập tin này.

- Khi tôi thử xoá tập tin NTLDR thì mới đúng là hệ điều hành hiện thông báo như đã nói ở trên, tức là xuất hiện dòng "NTLDR is missing. Press Ctrl + Atl+Del to restart", việc này thì đã quá rõ ràng bởi nhiều người đã từng gặp và mới gây ra lỗi. Tôi lại thực hiện hành động bấm phím F8 khi khởi động, nhưng kết quả là bảng lựa chọn chế độ khởi động hệ điều hành đã không hiển thị ra. Như vậy càng thấy công dụng quan trọng của tập tin này.

- Khi xoá tập tin boot.ini thì...không có vấn đề gì xảy ra (?!), hệ điều hành vẫn khởi động bình thường sau khi hiển thị một dòng thông báo ngay sau quá trình POST:

Invalid BOOT.INI file
Booting from C:\windows\

Thử đối với một hệ thống khác: Chiếc máy thứ hai của tôi, chúng được cài đặt hệ điều hành Windows 98, Windows 2000 và Windows XP, và xoá tập tin boot.ini đi, kết quả là hệ thống không khởi động được nữa. Có một dòng thông báo như sau:

Windows could not start because the flowing file is missing or corrupt
\System32\hal.dll
Please re-install a copy of the above file

Như vậy là đối với hệ điều hành mặc định là Windows 98 mà tôi cài đặt ở phân vùng đầu tiên đã không thể khởi động được nếu thiếu tập tin boot.ini. Đối với trường hợp phân vùng đầu tiên của ổ đĩa cứng cài đặt Windows XP, hệ thống khởi động vào hệ điều hành. (trường hợp với các hệ điều hành họ NT như WinNT và Win 2000 có thể chúng cũng khởi động được như Windows XP, tôi chưa kiểm chứng lại điề này).

Những lỗi về boot.ini này sẽ được giải quyết khắc phục vào những phần sau của bài.

Sửa chữa lỗi

Sau khi kiểm chứng được nguyên nhân gây lên lỗi trên thông qua biện pháp thực hiện giả định xoá các tập tin, tôi đã có các bằng chứng chính xác về nguyên nhân xảy ra lỗi và tìm cách khắc phục chúng. Tất nhiên rằng phần trên đã nói rằng tập tin NTLDR đã được chứa trên thư mục i386 của đĩa cài đặt hệ điều hành, và do đó bạn cần làm một cách nào đó để có thể copy lại tập tin này đến đúng vị trí mà chúng lẽ ra phải hiện diện. Để làm điều này bạn cần có đĩa đã cài đặt hệ điều hành, nếu không thì tối thiểu là một đĩa nào đó có thể khởi động được máy tính để thao tác với các tập tin chứa trên ổ cứng của chiếc máy tính đó.

Đối với riêng tập tin boot.ini thì chúng không có trong thư mục i386 của bộ cài đặt, tuy nhiên bạn có thể soạn thảo lại tập tin này. Chi tiết xin xem mục cụ thể kèm theo trong bài viết này.

Sửa chữa trong trường hợp máy tính cài đặt nhiều hệ điều hành

Cách đơn giản nhất có lẽ là đối với những máy tính được cài đặt hai hoặc nhiều hơn các hệ điều hành khác nhau nhưng không đồng thời của Microsoft (ví dụ cài đặt Linux cùng với Windows chẳng hạn). Lý do bởi vì lỗi này sẽ khiến cho bạn không thể khởi động được vào các hệ điều hành cùng được cài đặt. Có một số trường hợp ngoại lệ: Windows Vista có vẻ không gặp lỗi này bởi cơ chế khởi động của hệ điều hành này khác biệt so với các hệ điều hành trước nó; một số trường hợp khác cũng như cài đặt đồng thời các hệ điều hành của Microsoft nhưng lại sử dụng một phần mềm quản lý boot riêng chứ không sử dụng khả năng tự quản lý việc lựa chọn sự khởi động các hệ điều hành.

Giả sử trường hợp này xảy ra, tức là bạn có thể khởi động vào một hệ điều hành khác mà không phải hệ điều hành đang bị lỗi, bạn có thể tiến hành khắc phục chúng một cách đơn giản bằng cách sao chép lại tập tin bị thiếu. Như trên đã nói, tập tin NTLDR có sẵn trong đĩa cài đặt Windows XP (hoặc NT/2000) hoặc có thể chứa trên chính máy tính của bạn, bạn chỉ việc sử dụng trình quản lý tập tin của hệ điều hành đó sao chép lại tập tin đó mà thôi.

Đa phần các máy tính theo chế độ tự lắp ráp đều có thể được chia thành hai phân vùng, một phân vùng chứa hệ điều hành và một phân vùng chứa các bộ cài đặt của phần mềm (rất nhiều máy tính như vậy ở Việt Nam bởi vì tôi nhận thấy chúng được ghost toàn bộ đĩa với hệ điều hành cùng với các bộ cài khi mà các cửa hàng bán linh kiện máy tính đã tiến hành vào ổ cứng của bạn sau khi lắp ráp) do đó rất thuận tiện cho việc khắc phục lỗi này.

Việc xác định vị trí tập tin không mấy khó khăn, thông thường thì chúng nằm trên thư mục gốc tức phân vùng đầu tiên nếu nhìn trong phần mềm quản lý các phân vùng Patition Magic hoặc phần nhiều có thể nói phân vùng được gán là C, tuy nhiên trong trường hợp đặc biệt thì chúng có thể được đặt trong một phân vùng khác so với thứ tự đầu tiên bởi vì tuỳ theo tình trạng thiết lập quyền được phép khởi động của các phân vùng.

Lúc đầu thì tôi có băn khoăn rằng nếu cài đặt Windows 98 cùng với Windows XP thì nhỡ tập tin này nằm ở phân vùng được định dạng theo NTFS ở phân vùng thứ hai (chẳng hạn) thì sao nhưng ý nghĩa đó bị loại bỏ ngay bởi vì nếu cài dặt cả Windows 98 và Windows XP thì các tập tin này luôn phải nằm trong phân vùng cài đặt Windows 98 và nó phải được định dạng theo FAT/FAT32 mà Windows 98 thì chắc chắn sẽ truy cập được vào chúng. Trường hợp cài đặt Windows 2000 cùng với Windows XP thì sẽ không thể khởi động được Windows 2000 để có thể vào sửa chữa lỗi, bởi vì chính Windows 2000 cũng dùng tập tin ntldr để khởi động chúng.

Trong trường hợp mà chính chiếc máy tính xách tay của tôi đang sử dụng thì mọi việc cũng đơn giản giống như trường hợp trên (hai hệ điều hành: 9X cùng với họ NT) bởi vì tôi thì cài đặt Ubuntu song song với Windows XP. Tôi chỉ việc khởi động vào Ubuntu và copy tập tin ntldr phục hồi lại vị trí cũ.

Sửa chữa với Live CD

Nếu như bạn có một Live CD nào đó để có thể khởi động vào hệ điều hành chứa trên nó rồi sao chép lại các tập tin trên cũng tương tự như hình thức cài đặt hai hệ điều hành. Công việc tiếp theo chỉ còn là copy mà thôi.

Những dạng đĩa này không quá khó khi tìm kiếm chúng, bạn có thể tìm một đĩa khởi động vào Windows XP vói các tính năng đơn giản hoặc vào Linux với đĩa cài đặt (và cũng là đĩa Live CD) Ubuntu. Đối với Windows XP bạn có thể tìm kiếm địa chỉ tải về đĩa tập tin (định dạng iso) dạng đĩa Live CD của hệ điều hành này theo từ khoá "Windows XP Live CD with Kapersky AntiVirus 2009". Đối với Ubuntu thì đơn giản hơn khi mà hãng phát triển đã cho phép tải về trên Internet tại đây (bạn cần chọn phiên bản muốn tải về và khu vực địa lý của mình rồi bấm nút Begin download. Ở thời điểm hiện tại thì có hai phiên bản: 8.04 LTS và 8.10, tôi thử nghiệm trên bản 8.10 thì một số máy tính khi sử dụng Live CD có hỏi mật khẩu đăng nhập, và thật tệ là không biết username và password đăng nhập là như thế nào?! tuy nhiên với bản 8.04 thì đăng nhập bình thường).

Lưu ý rằng các đĩa Live CD thường đề nghị lượng RAM sử dụng khoảng từ 256 MB trở lên, nếu như lượng RAM quá thấp thì quá trình khởi động sẽ rất chậm hoặc có thể khởi động không thành công. (Tuy nhiên có một tin vui đối với bạn: Thời điểm cuối năm 2008 loại DDR2 có giá khá rẻ, và bạn nên nâng cấp thì tốt hơn cho máy tính của bạn).

Sửa chữa với đĩa cài đặt của Windows

Khi mà bạn có một đĩa cài đặt Windows thì cũng sửa chữa được, tuy nhiên phần này có lẽ phức tạp hơn một chút đối với người bình thường và thường và vướng mắc đôi chút khi mà người sử dụng phần lớn lại không phải là người cài đặt Windows, do đó họ có thể không biết mật khẩu tài khoản mang tên Administrator của máy tính.

Cách thức này thật may mắn là tôi không phải gõ lại, bởi vì đã có một số nơi đăng hướng dẫn chi tiết rồi, đoạn trích dưới đây được đăng trên PC World Việt Nam[1].

- Khởi động máy với đĩa CD cài đặt Windows. Nhấn phím bất kỳ khi xuất hiện thông báo Press any key to boot from CD.
- Trong màn hình Welcome to setup, nhấn phím R (Repair) để khởi động Recovery Console (RC).
- Nếu hệ thống cài đặt nhiều hệ điều hành (HĐH) khác nhau, chọn HĐH bị lỗi cần khắc phục (lưu ý: nếu nhấn Enter khi chưa chọn HĐH, chương trình sẽ tự khởi động lại máy).
- Gõ mật khẩu của tài khoản Administrator.
- Tại dấu nhắc của RC, gõ dòng lệnh:

copy E:\I386\ntldr C:\
copy E:\I386\ntdetect.com C:\
(với E: là ổ CD-ROM, C: là phân vùng hệ thống).

- Chọn Yes (Y) nếu xuất hiện hộp thoại xác nhận việc chép đè tập tin cũ.
- Gõ lệnh Exit để khởi động lại hệ thống.

Lưu ý rằng trong trường hợp này thì cũng có một số trường hợp mà lệnh trên sẽ không thực hiện được nếu như Windows của bạn shutdown không đúng cách (tôi đã gặp một trường hợp tương tự như vậy khi dùng Recovery Console để sửa chữa lỗi này sau khi máy tính bị mất điện đột ngột)

Chế độ sửa chữa này cũng còn được thực hiện bằng cách khởi động từ ổ đĩa mềm theo như hướng dẫn của Microsoft, tuy nhiên hầu hết các máy tính trong thời gian gần đây không còn sử dụng đĩa mềm nữa nên tôi không viết ra đây. Nếu bạn tìm mua được các đĩa mềm và muốn tạo ra một đĩa boot thì có thể xem thêm các phần trong các mục cuối (chú thích, xem thêm) của bài này.

Sửa chữa với đĩa công cụ Hiren's Boot CD

Những kỹ thuật viên kinh nghiệm hoặc người sửa chữa hệ thống hiểu biết một chút trở lên thì luôn có sử dụng một đĩa cứu hộ dùng cho chữa nhiều lỗi. Có nhiều loại đĩa có khả năng boot và có các phần mềm kèm theo phục vụ việc sửa chữa hệ thống, nhưng có lẽ đĩa thông dụng nhất là đĩa Hiren (tên đầy đủ là Hiren's Boot CD). Tôi sử dụng đĩa này và cảm thấy chúng có rất nhiều ứng dụng giúp cho mình khắc phục khá nhiều lỗi của các hệ điều hành.

Khi sử dụng đĩa Hiren thì bạn cần lưu ý đến khởi động với trình quản lý các tập tin: Cho phép việc thực thi đọc và ghi đối với định dạng NTFS (bởi đa phần thì các trình quản lý tập tin kiểu cũ như Norton Commander của Symantec trước đây đều chỉ hỗ trợ đối với các phân vùng được định dạng kiểu FAT hoặc FAT32 mà không hỗ trợ NTFS). Tiếp theo là tìm tập tin ntldr chứa trong thư mục i386 trên thư mục chứa bộ cài đặt hệ điều hành và copy chúng vào thư mục gốc.

Khi sử dụng đĩa Hiren's Boot CD, bạn cần khởi động vào Volkov Commander để có thể sao chép lại các tập tin vào thư mục gốc. Chi tiết về đĩa Hiren's Boot CD và cách sử dụng với Volkov Commander, bạn có thể xem ở bài viết này trên blog (đúng ra thì tôi định viết bài này và đưa lên blog trước bài về Hiren's Boot CD, nhưng do liên quan đến Hiren's Boot CD có thể trở lên khó hiểu đối với bạn nên đã chú trọng vào viết bài đó trước, và giờ đây thì nó đã sẵn sàng cho bạn).

Cũng như các phần trên đã nói: Việc khắc phục lỗi này là sự copy trở lại đối với các tập tin đang bị mất, và như thế thì chỉ việc xác định các tập tin cần thiết đang đặt ở đâu mà thôi. Như trên đã nói thì các tập tin này được nằm trong thư mục i386 của bộ cài đặt hệ điều hành mà bạn đang sử dụng (cho dù là Windows 2000, XP hay 2003). Vậy thì bạn chỉ việc sử dụng Volkov Commander copy từ nguồn tới phân vùng khởi động các hệ điều hành mà thôi.

Sau khi copy trả lại các tập tin như nêu trên, khởi động lại hệ thống để hoàn tất quá trình.

Sửa chữa với chế độ "cài đè" lại Windows

Nếu như bạn không thực hiện được với các phương thức trên thì có lẽ việc tìm ra một đĩa cài đặt Windows không phải là một điều khó khăn đối với bạn, có thể lục lọi lại những đĩa đã được bán kèm với máy tính của bạn, nếu thất lạc bạn có thể mượn những người cũng có máy tính như bạn để khắc phục.

Biện pháp khắc phục này là cài lại hệ điều hành Windows theo phương pháp "cài đè". Rất nhiều người thực hiện theo cách này bởi vì chúng là một cách đơn giản nhất và mất nhiều thời gian hơn so với các phương pháp trên.

"Cài đè" là cụm từ mà có lẽ được nhiều kỹ thuật viên dùng đến, nó chỉ có ý nghĩa đơn giản là cài đặt lại hệ điều hành nhưng không làm thay đổi mọi phần mềm hoặc thiết đặt ở trên hệ điều hành đó. Các hệ điều hành họ Windows đều có tính năng "cài đè" này.

Cài đè không phải là một biện pháp tốt để khắc phục các lỗi trên hệ điều hành bởi vì chúng không hoàn toàn đáp ứng và sửa chữa các lỗi hiện có. Nguyên nhân bởi vì toàn bộ các phần mềm đã được cài đặt đều được giữ nguyên như cũ. Khi cài đè thì hầu như chỉ có các tập tin bị lỗi (có thể do virus phá hoại hoặc bị hư hỏng do nguyên nhân khác như lỗi ổ cứng, phần mềm khác ghi đè vào tập tin nguyên bản, do các quá trình nâng cấp...), do đó chúng hầu như là sự nhận dạng lại phần cứng và thay thế lại các tập tin cũ của hệ điều hành mà thôi.

Nếu như có một lỗi nào đó về phần mềm khác (giả sử ngay trên chính bộ phần mềm văn phòng Microsoft Office của Microsoft) thì biện pháp cài đè này cũng không có hiệu quả. Nếu như máy tính bị lây nhiễm virus, chúng phát tác và nhân bản các đoạn mã độc vào các tập tin thì cài đè cũng là một biện pháp để khắc phục tình trạng các tập tin của hệ điều hành không còn nguyên vẹn. Xin lưu ý rằng cài đè không phải là biện pháp diệt virus, bởi vì nếu như máy tính đang bị nhiễm virus mà chưa xử lý được triệt để thì sau khi cài đè thì các tập tin vẫn bị nhiễm virus. (các tập tin bị nhiễm trở lại ngay sau khi hoàn thành tiến trình cài đặt).

Nếu như xoá hoàn toàn các tập tin trên phân vùng cài đặt hệ điều hành cũ (tương đương với việc định dạng lại phân vùng) rồi cài đặt hệ điều hành thì hành động đó thường được gọi là "cài mới"

Phương pháp cài đè thì thật may mắn là đã có một bài viết giới thiệu về nó, tuy rằng không đầy đủ và chi tiết để đến nỗi người sử dụng bình thường nào cũng thực hiện được, nhưng chúng thì có nhiều hình minh hoạ khá rõ ràng. Bạn xem các bài viết đó tại đây (có rất nhiều nơi đăng lại bài này, nên có thể coi nó là "chuẩn" ^^).

Soạn thảo lại tập tin Boot.ini

Tậpt in Boot.ini không có trong thư mục i386 của bộ cài đặt Windows do đó khi bị mất tập tin này thì bạn có thể căn cứ vào tình trạng cài đặt cụ thể mà có thể soạn thảo lại. Sự soạn thảo tập tin này cùng với một vài thủ thuật vui vui mà tôi từng thực hiện đối với nó đã khiến tôi viết chi tiết về phần này. Một mặt khác thì boot.ini là một tập tin quy định sự khởi động, lựa chọn hệ điều hành khi cài đặt nhiều hệ điều hành của Microsoft nên cũng có một vài vấn đề thường xảy ra đối với chúng trong các quá trình sử dụng như: Loại bỏ menu lựa chọn hệ điều hành cũ, thừa và không tồn tại, chỉnh sửa lại thời gian lựa chọn hệ điều hành khởi động....

Tìm hiểu ý nghĩa của nội dung tập tin

Hãy xem một tập tin mẫu sau đây để biết về nội dung các tập tin boot.ini và có cách soạn thảo nó cho phù hợp với máy tính của bạn.

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

Ở đây thì có hai phần chính, là boot loaderoperating system, mỗi phần này có chức năng riêng được trình bày dưới đây.

[boot loader] chứa sau nó những nội dung về lựa chọn khởi động mặc định của hệ thống, trong đó:

  • timeout= là dòng quy định thời gian lựa chọn khởi động đối với hệ điều hành nào (được tính bằng giây). Nếu như sau khoảng thời gian này mà bạn không lựa chọn thì hệ thống sẽ tự động khởi động vào hệ điều hành được ghi mặc định. Có một thủ thuật mà tôi thường áp dụng là thay đổi con số mặc định 30 giây thành 5 giây. Tôi nghĩ rằng bạn cũng nên lựa chọn theo sự thay đổi này để giúp cho giảm thời gian chờ đợi nếu bạn không chú tâm vào màn hình khi nó khởi động để có thể bấm ENTER, (như công việc của một ngày mới, trước hết là bấm nút khởi động rồi làm một vài việc nào đó trước khi ngồi vào máy tính thì thời gian chờ đợi sẽ nhanh hơn chứ nhỉ ^^). Nếu như máy tính của bạn chỉ có một hệ điều hành thì thời gian này đặt bằng 0 hoặc đặt bằng bất kỳ giá trị nào đều không có ý nghĩa, bởi vì chúng sẽ khởi động trực tiếp vào hệ điều hành đó.
  • default= là lựa chọn hệ điều hành mặc định để khởi động nếu không có sự thay đổi khi lựa chọn.

[operating systems] chứa sau nó sự liệt kê các hệ điều hành được cài đặt trên máy tính của bạn. Mỗi một dòng tương ứng với một hệ điều hành đã được cài đặt (hoặc đã từng được cài đặt, nhưng còn sót lại trong tập tin boot.ini sau khi đã xoá bỏ hệ điều hành này.

Xem xét một tập tin boot.ini của hệ thống có chứa hai hệ điều hành thì thấy nội dung chúng như sau:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000 Professional" /fastdetect

Thứ tự các phân vùng (partition) của ổ cứng được đếm bắt đầu từ 1 sau đó bỏ qua các phân vùng mà Windows không nhìn thấy (của Linux) rồi đến 2 và 3...

Trong các tham số 0, 1, 2 ... ở đây là thứ tự của các ổ cứng, trong một số trường hợp được bắt đầu đếm bằng số 0 và có trường hợp bắt đầu đếm từ số 1 (có một điều thường thấy ở các hệ thống máy tính là thứ tự được tính từ số 0 thay vì từ số 1 như cơ số đếm tự nhiên).

Nhìn vào các dòng trên thì bạn có thể nhận thấy rằng tham số \WINDOWS\WINNT sẽ phụ thuộc vào thư mục chính của hệ điều hành, ở Windows XP thì thư mục này là \WINDOWS, còn ở Windows NT và Windows 2000 thì thư mục này là \WINNT.

Dòng chữ Windows 2000 Professional hay Windows XP Professional không thực sự quan trọng, bạn có thể thay đổi lại các dòng chữ này theo ý của bạn mà không ảnh hưởng đến chút nào đến hệ điều hành. Trước đây tôi cũng cài đặt với ba hệ điều hành, và tách ra thành các đoạn chữ (xuống dòng) như "Learn...more learn....and forever!" để thành một khẩu hiệu mỗi khi khởi động máy tính. Một số bạn còn dùng những dòng này để hiển thị thông tin cá nhân khi khởi động máy tính nữa[2] :).

* partition(1) dễ giải thích hơn đối với cả tôi và bạn, bởi vì chúng thì là tham số về phân vùng trên ổ cứng. Bạn có thể dễ hình dung về các phân vùng của ổ cứng thông qua Disk Management (khởi động bằng cách chọn chuột phải vào My Computer ở trên Desktop, chọn Manage, vào mục Disk Management) như hình minh hoạ. Bạn có thể thấy rằng phân vùng đầu tiên của một ổ cứng nào đó sẽ được đặt là 1, sau đó thì các phân vùng tiếp theo được đánh số thứ tự là 2, 3, ... Tuy nhiên có một vài trường hợp ngoại lệ nếu như bạn cài song song cả hệ điều hành Windows với Linux, bởi vì hệ thống Windows không nhận ra phân vùng này nên chúng sẽ bỏ qua mà không đếm chúng. Tức là phân vùng thực tế là thứ tư nhưng vẫn được coi là thứ hai và được đặt số đếm là 2 như hình minh hoạ về trường hợp cụ thể này.

* rdisk(0) được hiểu là các ổ cứng vật lý trên máy tính của bạn. Nếu như một máy tính được gắn nhiều hơn một ổ cứng thì có nghĩa là chúng được đếm theo thứ tự nào đó cũng bắt đầu từ 0. Thực tế thì có nhiều hệ thống được gắn đến 2, 3, 4....ổ cứng vật lý (tránh nhầm là các phân vùng nhé).

* Trên thực tế chỉ có hai thông số trên là thay đổi, còn lại multi(0)disk(0) thì có thể không thay đổi đối với các hệ thống bình thường (ví dụ như không dùng raid). Đến nay thì thực sự tôi cũng không hiểu lắm về chúng bởi vì chưa chịu tìm hiểu. Giả sử như tôi xây dựng một hệ raid hoặc hệ thống nhiều ổ cứng trên máy chủ thì có lẽ sẽ tìm hiểu về chúng trên Internet :).

* /fastdetect chỉ là một trong các tham số đi kèm, bạn không cần bận tâm đến chúng. Nếu có muốn tìm hiểu thêm, bạn có thể tham khảo thêm về chúng trong bài: "Boot INI Options Reference".

Đối với Windows 9X thì không có các thiết đặt rắc rối đối với chúng như những dòng như vậy bởi vì chúng thì có cơ chế khởi động đơn giản hơn so với họ Windows NT. Mỗi dòng khởi động của chúng chỉ là:

C:\="Microsoft Windows 9X"
(Trong đó C là ký tự được gán cho phân vùng đầu tiên tính riêng theo các phân vùng có định dạng FAT hoặc FAT32)

Thứ tự trước sau đối với các dòng đại diện cho mỗi hệ điều hành được nêu trong phần này không quan trọng, bạn có thể thay đổi chúng để phù hợp đối với tình trạng khởi động của bạn (chẳng hạn những hệ điều hành nào thường xuyên được sử dụng thì xếp lên trên cùng, càng ít sử dụng bao nhiêu thì càng xếp nó xuống phía dưới). Còn nếu như bạn muốn thay đổi hệ điều hành mặc định của hệ thống thì chỉ việc viết dòng tương ứng với hệ điều hành đó ở đằng sau cụm: default=

Nếu như bạn thấy khó khăn cho việc thực hiện soạn thảo một tập tin boot.ini để thay thế, bạn có thể thử dùng các nội dung của một tập tin boot.ini như sau để thử khởi động máy tính cho những lần khác nhau. Đây là một ý tưởng rất hay khi mà tôi gặp ở một diễn đàn trong quá trình tìm kiếm thông tin minh hoạ và bổ sung cho bài viết này. Bản chất của nội dung này là liệt kê các trường hợp có thể đối với các phân vùng khác nhau (có đến 4 phân vùng được liệt kê) và hai ổ cứng độc lập khác nhau.

[Boot Loader]
timeout=30
Default=multi(0)disk(0)rdisk(0)partition(1)\Windows

[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="1. Thu khoi dong lan thu nhat" /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\Windows="2. Thu khoi dong lan thu hai" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\Windows="3. Thu khoi dong lan thu ba" /fastdetect
multi(0)disk(0)rdisk(1)partition(2)\Windows="4. Thu khoi dong lan thu bon" /fastdetect
multi(0)disk(0)rdisk(0)partition(3)\Windows="5. Thu khoi dong lan thu nam" /fastdetect
multi(0)disk(0)rdisk(1)partition(3)\Windows="6. Thu khoi dong lan thu sau" /fastdetect
multi(0)disk(0)rdisk(0)partition(4)\Windows="7. Thu khoi dong lan thu bay" /fastdetect
multi(0)disk(0)rdisk(1)partition(4)\Windows="8. Thu khoi dong lan thu tam" /fastdetect
C:\="9. Thu khoi dong lan thu chin"
D:\="10. Thu khoi dong lan thu muoi. Neu khong duoc thi moi tho ve sua nhe!"

Với nội dung của tập tin boot.ini như trên mà hệ thống khởi động được đối với lựa chọn nào thì bạn chỉ việc xoá các dòng có lựa chọn khác không có nghĩa và thay đổi dòng "Thu khoi dong.." thành tên của hệ điều hành đó (Windows 98, Windows XP...) hoặc theo ý của bạn là xong.

Cách soạn thảo tập tin boot.ini

Ở trên thì bạn đã hiểu được nội dung và ý nghĩa của tập tin, hoặc là nếu bạn không hiểu gì về nó thì cũng có thể có giải pháp dành cho bạn. Vấn đề còn lại là làm như thế nào để soạn thảo chúng?

Nếu như bạn đang ở trong hệ điều hành Windows, và đọc được bài viết này bạn muốn thay đổi một chút thì không mấy khó khăn. Bạn có thể xem bài "How to edit the Boot.ini file in Windows XP" ở mục xem thêm (bằng tiếng Anh, nhưng chúng rất dễ hiểu thôi). Nếu như không đọc ở đó thì bạn chỉ việc thực hiện đơn giản theo vài bước như thế này để sửa đổi boot.ini trên trình soạn thảo Notepad của Windows (sau khi bạn chuột phải vào biểu tượng My Computer ở màn hình Desktop rồi chọn Properties, rồi sau đó bấm vào các tab và nút được đánh số lần lượt 1, 2, 3 theo như hướng dẫn ở ảnh minh hoạ.

Còn nếu như bạn đang bị mất tập tin này và đang ở trong DOS và sử dụng Volkov Commander trong đĩa Hiren's Boot CD? Cách đơn giản và nhanh nhất có lẽ là bạn nên tìm một tập tin cũng có định dạng INI nào đó ở trong thư mục Windows (hoặc ở đâu đó, chúng rất nhiều), copy ra phân vùng chứa cùng với các tập tin NTLDR rồi mở tập tin này ra (với phím F4), xoá toàn bộ nội dung đi, gõ các nội dung ở trên vào rồi đổi tên chúng thành boot.ini (với phím F6).

Nếu như bạn khởi động với một đĩa Live CD của một hệ điều hành nào đó như Windows hoặc các bản phân phối của Linux thì chắc rằng cũng có nhiều phần soạn thảo text để tạo ra một tập tin có tên boot.ini cùng với những nội dung như vậy.

Nhưng những cách này đều phức tạp, bạn nên thực hiện việc sao các tập tin boot.ini cùng với hai tập tin quan trọng nói ở trên đến một thư mục nào đó như phần "Phòng ngừa" viết dưới đây.

PHÒNG NGỪA

Vì các thuộc tính của tập tin NTLDR nên theo mặc định thì chúng không hiển thị ở trên Explorer, còn Total Commander thì có thể biết được chúng và thay đổi các thuộc tính này một cách dễ dàng (bạn không nên thay đổi chúng)

Phòng ngừa là một biện pháp tốt hơn là khắc phục bởi vì chúng ta chủ động biết trước và kiểm soát được lỗi này nếu như vô tình gặp phải, hoặc là còn có thể giúp đỡ người khác sửa chữa lỗi này được. Do không có biện pháp hạn chế triệt để nên chúng ta không thể phòng ngừa theo cách ngăn chặn lỗi xảy ra, mà chỉ có thể lưu lại các tập tin để rồi từ đó có thể dễ dàng phục hồi lại chúng sau khi xảy ra lỗi.

Cách thức phòng ngà là chúng ta sao lưu ba tập tin boot.ini, NTDETECT.COM, ntldr đến một thư mục nào đó (khác phân vùng so với phân vùng mồi khởi động của các hệ điều hành để tránh xảy ra lỗi đối với chính các tập tinh dự phòng này bởi phân vùng cài đặt hệ điều hành thường có mức độ rủi ro cao hơn so với các phân vùng khác. Tôi đề cử bạn lựa chọn phân vùng được gán ký tự thứ hai sau phân vùng cài đặt hệ điều hành. Cụ thể nếu máy tính của bạn chỉ có một phân vùng thì nên đặt trong một thư mục nào đó, nếu có hai phân vùng trở lên mà thì đặt chúng ở các phân vùng của ổ cứng có ký tự được gán sau cùng.

Những tập tin này có thuộc tính [Ẩn] (Hidden), [Hệ thống] (System) nên bạn cần lưu ý tránh nhầm tưởng rằng chưa lưu được (bởi vì chúng không hiển thị ở chế độ bình thường ở Explorer). Nếu như bạn sử dụng phần mềm Total Commander thì thao tác đối với tập tin và thư mục sẽ thuận tiện hơn nhiều (xem giao diện của Total Commander như hình minh hoạ ở phía trên).

Tuy rằng biện pháp phòng ngừa này có thể không có tác dụng triệt để vấn đề hư hỏng hoặc bị xoá các tập tin quan trọng viết ở trên, chúng chỉ giúp bạn sửa chữa một cách thuận tiện hơn mà thôi. Chúng thì hữu ích cho các trường hợp mà bạn không thể tìm thấy thư mục chứa bộ cài đặt Windows hoặc không tìm thấy đĩa Windows mà thôi. Tôi nghĩ rằng sự phòng ngừa tốt nhất là bạn đã hiểu ra tầm quan trọng của hai tập tin này nhằm tránh xoá chúng đi.

HÌNH NHƯ ... CHẲNG CÓ ÍCH GÌ VỚI BÀI NÀY?

Hình như là tôi chẳng thấy ích lợi nào từ bài này đối với bạn - khi mà bạn không bao giờ bị lỗi như vậy, hoặc bạn không có ý định tự sửa chữa các lỗi của máy tính của mình bởi vì đã có nhân viên phụ trách sửa chữa máy tính, hoặc có những người bạn thông thạo sẵn sàng giúp đỡ khi sự cố xảy ra. Có lẽ thế chăng?

Nhưng tôi nghĩ là không, bạn có thể nhận ra nhiều điều thú vị: Có thể sử dụng các đĩa Live CD để copy một tập tin quan trọng từ máy tính mà không cần biết mật khẩu của máy tính đó? Điều này đã xảy ra đối với tôi khi mà một đồng nghiệp nghỉ việc do lý do riêng, mà chúng tôi lại cần một số tập tin được lưu lại trên máy tính của người đó. Tôi đã dùng đĩa Ubuntu để khởi động và copy vào một USB flash (Ubuntu hoặc đĩa Live CD chứa hệ điều hành Windows XP nhận dạng khá tốt với USB flash) mà không phải hỏi mật khẩu nhạy cảm của đồng nghiệp đó (nếu thực hiện điều này thì bạn nên hỏi về quyền truy cập vào máy tính hoặc thông báo lại khi chủ nhân máy tính đó có mặt nhé) .

Một trường hợp khác là khi cần phải ghi đè, xoá, thao tác với các tập tin hệ thống mà chính hệ điều hành không cho phép, bạn cũng có thể sử dụng đĩa Live CD hoặc Hiren Boot CD để thao tác mà không cần tìm kiếm một phần mềm (có các phần mềm như vậy) cho phép thực hiện điều này

________________

CHÚ THÍCH

1^. Khắc phục lỗi khởi động với Recovery console, trên PC World VN.

2^. Làm sao để hiện thông tin cá nhân, trao đổi trên diễn đàn Cửa sổ tin học.

XEM THÊM

Khắc phục lỗi NTLDR đăng trên VnExpress. (Thắc mắc của người đọc và một số trả lời cũng của người đọc, tuy nhiên ở đây có nhiều phần trả lời mà theo tôi là không chính xác).

How to troubleshoot the "NTLDR Is Missing" error message in Windows 2000, trên website của Microsoft. (hoặc tìm kiếm với từ khoá liên quan đến thông báo này của Microsoft) (en).

Boot INI Options Reference, trên Microsoft TechNet.

How to edit the Boot.ini file in Windows XP, trên website của Microsoft

LIÊN QUAN

Hiren's Boot CD (và McAfee Antivirus cho DOS), trên blog này.

Trương Mạnh An(23/11/2008)

Không có nhận xét nào :

Đăng nhận xét

Hoan nghênh bạn chia sẻ/góp ý/phản hồi để bài viết được phổ biến hoặc hoàn thiện hơn!
- Nếu bạn thấy thích bài viết và muốn chia sẻ tới mọi người, xin vui lòng bấm nút "Like" và các nút chia sẻ tương ứng.
- Nếu bạn không có các tài khoản Blogger/WordPress... để phản hồi/bình luận bạn có thể chọn trong "Nhận xét với tư cách" phần "Ẩn danh" (Anonymous).
- Blog còn có các bài viết khác mà có thể bạn sẽ quan tâm, được liệt kê tại Mục lục.