Nhật ký cài win
Đã 4 tháng rồi kể từ lần cuối cùng nó được xài một bản windows thật trên chiếc asus ghẻ của nó. Đó cũng là 4 tháng kể từ khi nó đánh trận LOL cuối cùng để rồi sau đó bước vào khoảng thời gian ôn thi đại học. Dù mỗi lần nhắc tới windows hay M$ là trong đầu nó hiện lên hàng tá lí do để chửi rủa nhưng nói thật thì thiếu windows chẳng ổn tí nào. Linux tất nhiên vẫn chưa thể hoàn toàn thay thế windows được, đặt biệt là về khoản game. Tuy có nhiều tut để chơi một số game như LoL, DOTA, WoW trên linux nhưng nó đặc biệt không muốn lôi một đống rác về cái linux machine đang sạch sẽ của nó. Thế là vào một ngày âm u tháng 5, nó lôi usb ra để cài win vào.
Nói về việc tại sao nó không cài win. Thực ra thì cũng chẳng tốt đẹp gì. Số là ngày xưa, sau khi format phân cùng cài win để tập trung học một thời gian, nó đã chuyển ổ cứng từ MBR sang GPT để trải nghiệm thử. Và nó nhớ rằng "muốn tạo usb boot để cài win trên UEFI thì phải thực hiện trên một bản windows đang chạy trên UEFI", đm. Bây giờ nó chẳng có máy nào sử dụng windows uefi cả, tìm một cái máy như vậy ở xứ này không dễ dàng chút nào.
Vài tháng sau, khi mà chỉ còn hơn tháng nữa là thi đại học, nó vừa kết thúc đợt thi thử và cần phải nghỉ ngơi thư giãn một tí, nó cần phải cài lại windows! Việc này khá mạo hiểm, bởi vì cái USB dự bị cảu nó đang nằm trong tay một bà cô trong trường. Nếu có vấn để gì xảy ra với bộ cài, nếu cái product của M$ làm gì ảnh hưởng đến các phân vùng mà nó đã cài đặt thì sẽ chẳng có thứ gì để nó có thể boot vào linux và khắc phục sự cố cả. Sau một hồi nằm suy nghĩ, nó quyết định cho Bill Gates một cơ hội. Lôi chiếc USB 8G ra, đút vào chiếc linux huyền thoại, nó chạy lệnh lsblk để xem trong usb hiện tại đang có gì. Trong chưa đến 1/10s, kết quả đã hiện lên:
/dev/sdb hiện tại có 2 phân vùng, /dev/sdb1 với size 3G, /dev/sdb2 với size khoảng vài trăm M. Đây chắc chắn là bộ cài của một distro linux nào đó. Nó nhanh chóng reboot máy để xem đây là distro nào. Ồ thì ra đây là bản kali linux mà nó đang cài giữa chừng thì bỏ dở. Nhanh chóng Ctrl+Alt+Del để reboot lại máy, nó trở lại với chiếc Arch linux quen thuộc.
Bây giờ thì việc gì đến cũng đã đến, đã đến lúc nó phải cài win. Chưa bao giờ việc cài win lại khiến nó ái ngại đến vậy. Việc đầu tiên là phải chọn bản win phù hợp. Nó có 3 sự lựa chọn: windows 7, 8.1 và 10. Theo kí ức cuối cùng của vài tháng trước thì nó đã thử vài win 7 và win 10 nhưng thất bại, nó cũng chẳng biết vì sao quá trình cài lại thất bại. Có một sự thật là khi cài windows, phần lớn số lỗi xảy ra chẳng có lí do gì cả! Đó chính là một tính năng của windows, cũng giống như tính năng của voz vậy. Trong tình thế hiện tại, nó không muốn mạo hiểm. Vì vậy windows 8.1 đã được lựa chọn.

 

Việc tiếp theo mà nó cần làm là tạo USB để boot cài win. Trước tiên cần phân vùng (partition) USB. USB cần được phân vùng theo kiểu GPT nên nó sẽ dùng lệnh gdisk:

sudo gdisk /dev/sdb

/dev/sdb là tên của USB device mà nó đang sử dụng. Để biết được tên này, nó đã sử dụng lệnh lsblk như đã nói ở trên. Sau khi đã khởi động xong gdisk, nó lần lượt sử dụng các lệnh:

o
[enter]
y
[enter]
n
[enter]
[enter]
[enter]
[enter]
L
[enter]
[enter]
0700
[enter]
w
[enter]
Y
[enter]

Việc phân vùng đã xong, bây giờ nó phải định dạng (format) phân vùng vừa được tạo:

sudo mkfs.fat -F32 /dev/sdb1

Lưu ý ở đây nó dùng /dev/sdb1 chứ không phải /dev/sdb như trước nữa (/dev/sdb1 chỉ về phân vùng đầu tiên của /dev/sdb). Thêm một điểm lưu ý nữa là trên linux, một USB có thể được chia thành nhiều phân vùng (và tất nhiên là sử dụng tất cả các phân vùng đã tạo) trong khi đó windows chỉ nhận và đọc được phân vùng đầu tiên của USB.

Tiếp theo, nó chỉ cần chép (copy) mọi dữ liệu trong file đĩa cài windows (được chứa trong /dev/sda10) vào USB là có thể cài đặt windows. Nó lần lượt thực hiện các thao tác sau:

sudo mount /dev/sda10 /mnt
cd /mnt/zip/OS
sudo mkdir /mnt/iso
sudo mount en_windows_8_1* /mnt/iso
sudo mkdir /mnt/usb
sudo cp /mnt/iso/* /mnt/usb -Rv

Linux sử dụng cách mount các partition khác với windows. Trên linux không có các khái niệm ổ C, ổ D như trên windows, thay vào đó, linux có thể "mount" một phân vùng lên một thư mục bất kì, tất cả các thao tác dữ liệu lên thư mục đó sẽ được thực hiện trên partition mà nó đang "chứa". Để cho dễ hiểu, nếu windows được thiết kế giống linux thì các thư mục "program file", "windows", "users" có thể được đặt trên các phân vùng khác nhau, tức là windows được cài đặt trên nhiều phân vùng chứ không phải chỉ trên "ổ C" như hiện nay. Việc thiết kế như linux có nhiều ưu điểm mà trong giới hạn bài này sẽ không nói đến.

Lệnh "cd" ở trên dùng để chuyển vào thư mục "/mnt/zip/OS" là nơi chứa file iso cài win. Sau đó, nó tạo thư mục mới bằng lệnh "mkdir", sau đó nó mount file iso lên thư mục mới vừa tạo. Lệnh cuối cùng dùng để copy toàn bộ file trong iso vào usb. Nó truyền vào "-Rv" cho lệnh "cp" là để chỉ cho chương trình thực hiện việc sao chép một cách "recursively" và "verbosely". Tức là sau khi sao chép tất cả các file trong /mnt/iso, chương trình sẽ đi vào từng thư mục con và thực hiện việc tương tự, và trong quá trình sao chép, chương trình sẽ xuất ra stdio file nào đang được copy.

Sau khi hoàn tất các lệnh trên, việc tạo usb boot đã được thực hiện xong. Quá trình trên chỉ đúng cho GPT và windows 8 trở lên. Đối với windows 7 sẽ cần thêm một số thao tác phụ.

Việc tiếp theo nó làm là tạo sẵn một phân vùng để cài win. Nó mở phần mềm gparted và tạo một phân vùng 100G định dạng NTFS để cài windows. Việc này khá quan trọng vì nếu không, trình cài windows có thể không đủ thông minh và sẽ tạo một phân vùng ESP mới thay thế cho phân vùng ESP mà nó đang sử dụng, khiến cho quá trình cài đặt bị lỗi (đây cũng rất có thể là nguyên nhân gây ra lỗi trong lần cài win trước của nó).

Series "nhật kí cài win" kết thúc tại đây. Tất cả những việc diễn ra sau đó được thực hiện trên windows và không mang tính kĩ thuật cao, vì vậy nó xin chấm dứt tại đây.