niemtin007

facebook.com/niemtin007

hãy theo đuổi đam mê - chủ nợ sẽ theo đuổi bạn

Monday, January 22, 2018

Tớ đã build Multiboot Toolkit như thế nào ? Phần 2


Không như một chiếc bánh kem mềm ngọt nhằm dụ dỗ, lôi kéo bạn vào thế giới multibooting . Phần 2 này thực sự là một món ăn dai và khó nuốt. Vì nó chỉ toàn là lý thuyết. Nhưng hãy bình tĩnh, cứ tưởng tượng nó như là "khẩu quyết" để bạn bước vào môn phái đậm chất ngầu vậy.

1. Vì sao sở hữu một thiết bị multiboot thật sự ngầu?

Bạn là một người mới tiếp xúc đến công nghệ, sở hữu một chiếc laptop cấu hình tốt, một chiếc smart phone flagship, một chiếc USB/HDD lưu trữ dữ liệu tốc độ bàn thờ... Mọi thứ thật nên thơ và trữ tình đúng không nào. Nhưng nếu bạn là một Geek thực sự thì việc cái máy tính của bạn chỉ chạy được mỗi Windows, điện thoại chỉ chạy mỗi cái Android lèo phèo, USB/HDD chỉ để lưu trữ dữ liệu thôi liệu có làm bạn thỏa mãn chưa nhỉ?


Nếu như có một cách nào đó khiến máy tính của bạn có thể chạy được đủ chủng loại hệ điều hành, đủ loại phiên bản. Cái smartphone của bạn sẽ chạy nhiều hơn được một cái Android gốc. Cái USB/HDD của bạn ngoài lưu trữ dữ liệu còn giúp bạn chạy live các công cụ cứu hộ, hacking,... Mọi thứ hiện trên màn hình khởi động trên thiết bị của bạn như một chiếc thực đơn và bạn chỉ việc chọn món nào thích để sử dụng. Và hãy nhớ rằng không phải ai cũng có thể làm được những thứ này đâu bạn. Nếu làm được thì trong mắt những người yêu công nghệ khác bạn thật sự rất đáng ngưỡng mộ và họ sẽ rất ao ước được sở hữu một hệ thống (công cụ) như bạn. Hoặc cũng có thể... bạn sẽ là một đứa rảnh, dở hơi trong mắt những người chung quanh.

2. Tôi cần phải biết những gì?

Đến với Multibooting bạn cần làm việc với các Bootloader & Boot Manager. Cụ thể bạn sẽ cần làm việc với những cái tên như sau:
  • Windows Boot Manager: trình quản lý mặc định của Windows
  • Grub2 Bootloader: trình khởi động phổ biến trong thế giới Linux
  • Clover Boot Manager: trình quản lý khởi động nổi tiếng của cộng đồng Hackintosh
  • rEFInd Boot Manager: tiền thân của Clover nhưng hỗ trợ mạnh mẽ cho Linux
  • Syslinux bootloader: một trình bootloader cũ nhưng quen thuộc cho các đĩa khởi động Linux
  • Grub4dos: nhẹ, mạnh mẽ, phổ biến.
Tiếp đến hãy quan tâm đến công nghệ. Trước đây chỉ sử dụng ổ cứng dạng MBR cùng chuẩn boot Legacy BIOS. Nhưng từ 2012 định dạng GPT chuẩn boot UEFI phổ biến. Bản chất của 2 công nghệ này là khác nhau, đến thời điểm hiện tại các nhà phát triển các trình bootloader & boot manager vẫn đang miệt mài đưa ra các giải pháp để tương thích hơn với chuẩn mới. Trong đó Clover, rEFInd, Grub2 và Windows Boot Manager là hỗ trợ được cho UEFI. Còn Syslinux vẫn đang trong quá trình phát triển để tương thích với chuẩn mới này, grub4dos vẫn trung thành với nền tảng cũ Legacy.

Điều quan tâm thứ ba là bạn phải hiểu về phân vùng và định dạng của ổ cứng. Mỗi hệ điều hành sẽ quy định mỗi chuẩn riêng để phù hợp với kiến trúc của nó nhằm thuận lợi cho việc lưu trữ, sắp xếp, mã hóa dữ liệu. Windows chúng ta thường quan tâm đến hai định dạng cơ bản là FAT32 & NTFS. MacOS thì ta quan tâm đến HFS+. Linux thì quan tâm đến ext4,... Một điểm chung là định dạng FAT/FAT32 đều cả nhóm OS đều hỗ trợ tốt, có thể đọc ghi được dữ liệu. Riêng NTFS thì MacOS và Linux có thể đọc được. Còn để ghi dữ liệu thì còn tùy thuộc vào distro và sự trợ giúp của phần mềm hãng thứ 3.

Điều thứ tư, hãy biết về lập trình. Không sao, nếu bạn chưa biết gì về lập trình thì quá trình build công cụ Multiboot này bạn sẽ làm được. Bạn càng hướng tư duy của mình theo hướng tự động hóa, bạn sẽ càng hiểu về lập trình hơn.

3. Hướng đi của một công cụ Multiboot trong chuỗi bài viết này

Có thể nói trước khi công cụ MultibootUSB (tiền thân của Multiboot Toolkit) ra đời thì trên diễn đàn Việt Nam và cả thế giới có rất ít công cụ boot hỗ trợ cho cả UEFI & Legacy mode. Xét ở Việt Nam trước lúc Multiboot Toolkit được chia sẻ trên diễn đàn thì mới có gói BootUSB của anhdv là có hỗ trợ đến UEFI thông qua Grub2. Ở một số công cụ boot của các nước khác thì hỗ trợ UEFI khá giới hạn, đơn giản chỉ hỗ trợ boot UEFI từ Windows Boot Manager vào WinPE để có thể cứu hộ được trên chuẩn mới này.



Công cụ được giới thiệu trong chuỗi bài viết này phải làm được gì?
  • Phải hỗ trợ được cả hai chuẩn cũ và mới: Legacy BIOS Mode & UEFI Mode
  • Ngoài hỗ trợ khởi động WinPE phải khởi động được ISO cài đặt Windows, ISO cài đặt Linux, trình cài đặt của Hackintosh/Macintosh
  • Hỗ trợ khởi động các đĩa cứu hộ khác nhằm tăng cường hệ sinh thái
  • Dễ dàng tùy biến và linh hoạt trong sử dụng

4. Phân vùng và cách lựa chọn phân vùng

Trước khi đọc mấy cái hại não phía dưới bạn cần mở một phần mềm phân vùng thí dụ như AOMEI Partition Assistant (bản miễn phí cũng được) để biết tớ đang nói về cái gì nhé:

Các bạn nên biết rằng khoảng trước 2012 ổ đĩa máy tính sử dụng kiến trúc phân vùng cũ là MBR và chuẩn boot là Legacy BIOS Mode. Từ 2012 trở đi kiến trúc phân vùng GPT và chuẩn boot UEFI bắt đầu được sử dụng rộng rãi trên các phần cứng mới giúp thiết bị bảo mật hơn nhưng kèm theo đó việc cứu hộ trên chuẩn mới này cũng trở nên khó khăn hơn. Vì vậy thiết bị boot phải đáp ứng được yêu cầu hỗ trợ được cả hai chuẩn này.

Vậy câu hỏi ở đây để boot được 2 chuẩn thì nên dùng phân vùng có kiến trúc MBR hay GPT? Thế này nhé: với các thiết bị boot có dung lượng nhỏ dưới 2TB thì nên sử dụng kiến trúc MBR còn lớn hơn 2TB thì phải sử dụng kiến trúc GPT mới tận dụng hết được dung lượng lưu trữ của thiết bị được. Bảng phân vùng không ảnh hưởng đến kiểu boot Legacy Mode hay UEFI Mode nhiều cho lắm mà nó ảnh hưởng đến việc cài bootloader và cách tùy chỉnh các file cấu hình cho bootloader hơn. Một ổ đĩa được định dạng là MBR hoàn toàn khởi động được trên chuẩn UEFI. Nhưng một ổ đĩa được định dạng GPT để boot được trên chế độ Legacy BIOS thì hơi vất vả xíu.

Vậy sau khi ta biết nên chọn bảng phân vùng nào rồi thì một vấn đề tiếp theo là thiết bị boot cần thiết lập bao nhiêu phân vùng? định dạng phân vùng như nào để có thể boot được cả hai chuẩn? và thứ tự phân vùng như nào mới là tối ưu?

Rắc rối rồi đúng không. Trước đây khi mới bắt đầu nghiên cứu và build công cụ Multiboot từ con số 0 mình đã thử nghiệm rất nhiều và rút ra được những điều như sau:

Định dạng FAT32 luôn ổn định nhất với các bootloader nên nền Legacy BIOS Mode. Vì định dạng này xuất hiện từ rất lâu nên các bootloader có thời gian để fix lỗi và tương thích. Muốn biết rõ nhất mức độ tương thích thế nào thì cứ kiếm máy con PC cũ thời Napoléon và boot thử là hiểu ngay. FAT32 luôn boot ngon lành. Một ưu điểm tiếp theo nữa là hỗ trợ ngon cho UEFI, vì sao ư. Vì cái chuẩn mới này chỉ khởi động từ file boot.efi đặt trên phân vùng FAT32. Chính vì thế thời kỳ đầu tạo Multiboot, các phiên bản đầu tiên mình đều sử dụng định dạng FAT32 làm định dạng mặc định cho USB.

Nghe có vẻ hay nhưng nó có một nhược điểm rất khó chịu. Định dạng FAT32 trước kia được phát minh ra theo lý thuyết để quản lý các phân vùng khoảng 32GB thôi (chỉ thích hợp cho các USB boot với dung lượng thấp). Nhưng công nghệ ngày càng phát triển, người ta đã nghiên cứu ra nhiều công nghệ giúp nâng dung lượng lưu trữ của ổ cứng lớn hơn để chứa được nhiều dữ liệu hơn. Giới hạn của FAT32 là không cho phép ta sao chép các file có dung lượng lớn hơn 4GB vào phân vùng này và khả năng chịu lỗi của nó cho ổ cứng cũng rất kém, dễ làm hư hỏng các file boot hơn. Chính vì vậy NTFS đã ra đời để khắc phục những nhược điểm đó.

Nhưng có một vấn đề ở đây, đặt các file boot.efi trên phân vùng NTFS không thể boot được UEFI. Lý do là khi chuẩn UEFI ra đời nó mặc định là file bootx64.efi hoặc bootia32.efi phải nằm ở đường dẫn EFI\BOOT. Rắc rối rồi đây, vậy tôi muốn thiết bị boot vừa hỗ trợ Legacy mode và UEFI mode đồng thời có thể lưu trữ các file lớn hơn 4GB (dễ dàng lưu trữ các ISO cài đặt Windows lẫn Linux) thì phải làm sao? 2 phân vùng, chính xác đó chính là điều tớ đã phát hiện ra (phiên bạn hiện tại của Multiboot Toolkit đã hỗ trợ 3 phân vùng lận - lý do xin được trình bày sau).

Rồi lại lòi ra một vấn đề mới. 2 phân vùng sử dụng thì phân vùng thứ nhất nên định dạng là gì? và phân vùng thử hai nên định dạng là gì? Vai trò của từng phân vùng là gì?

Thế này nhé, nếu chỉ đơn thuần hỗ trợ cho Legacy Mode thì ta chỉ cần NTFS là đủ, nhưng vì luật chơi của UEFI là các file boot của nó phải đặt trên phân vùng FAT32 nó mới chịu khởi động nên mới cần phải có phân vùng FAT32. Cơ chế boot UEFI thì sao? Khi cắm thiết bị boot và chọn khởi động, mainboard sẽ quét từng phân vùng trên thiết bị của bạn để tìm ra phân vùng FAT32 đầu tiên, sau đó nó truy cập vào đường dẫn EFI\BOOT để tìm xem có file bootx64.efi hay bootia32.efi không. Nếu không thấy nó lại tiếp tục quét các phân vùng tiếp theo cho đến khi tìm thấy các file boot của nó. Tức, nếu không thấy file boot trên phân vùng FAT32 ở đường dẫn mặc định là EFI\BOOT thì thiết bị của bạn không thể nào boot vào UEFI được.

Như vậy, việc đặt phân vùng FAT32 ở vị trí nào cũng được đúng không? Nhưng tại sao suốt từ những phiên bản đầu tiên của Multiboot Toolkit mình luôn ưu tiên thứ tự NTFS-FAT32. Bởi vì, data dành cho các bootloader mặc định mình đặt trên phân vùng NTFS phân vùng này mặc định luôn được hiện, khi chạy các lệnh cài đặt, bootloader thường ưu tiên dò phân vùng chứa data của nó. Một số bootloader sẽ không làm việc ổn định được nếu như data của nó đặt trên phân vùng ẩn. Có thể tớ sẽ cần thời gian để tìm ra các giải pháp cho vấn đề này.

Có thể trước đây đã có người nghĩ về phương pháp sử dụng 2 phân vùng này rồi nhưng chưa ai thành công trong việc biến ý tưởng này trở nên hoạt động trơn tru với một thiết bị Multiboot cả. Thời điểm bản cập nhật của Multiboot hỗ trợ hai phân vùng một blogger khác đã phát biểu rằng:
Vâng ! Đây là một điều mà trước đây mình nghĩ là sẽ không thể làm được, vì thực sự là mình đã tham khảo rất nhiều các bài hướng dẫn ở trong và ngoài nước rồi. Ngay cả với các nhà sản xuất phần cứng, phần mềm họ đều khuyến cáo như vậy, nhưng cho đến hôm nay, khi mình đã test thử và đã boot thành công chuẩn UEFI với định dạng NTFS thì mình đã tin nó là sự thật.
Hi, xét về khía cạnh kỹ thuật thì lời phát biểu này không hẳn đúng vì mình sử dụng hai phân vùng lận. Do phân vùng FAT32 mình đã ẩn đi nên bạn ấy mới nghĩ rằng chiếc USB này chỉ có mỗi phân vùng NTFS thôi ^^ Không sao nhưng lời nhận xét này cũng có một phần đúng vì trước đó chưa ai thành công trong việc phát triển một công cụ boot sử dụng phân vùng ẩn boot ổn định cho cả UEFI lẫn Legacy. Tớ tin rằng, một số bản boot khác của các bạn Việt Nam lẫn nước ngoài có tham khảo đôi chút về cách thiết kế của tớ ^^

Vì sao các phân vùng dành cho Multiboot mình lại đặt chúng về cuối ổ đĩa? Trong quá trình phát triển Multiboot ngoài hỗ trợ cho USB mình còn muốn nó hỗ trợ cho ổ cứng di động nữa. Thông thường ổ cứng di động luôn có sẵn một phân vùng data riêng rồi. Lối thiết kế của mình là muốn quá trình cài đặt phải thật nhanh chóng, tránh can thiệp vào phân vùng data nhiều nhất có thể, quá trình cài đặt phải an toàn nếu bị tắt ngang và dữ liệu lưu trữ phải được toàn vẹn. Về nguyên tắc, dữ liệu sẽ được sắp xếp từ trái sang phải (hầu hết phần mềm phân vùng đều chọn cách hiện thị như vậy, nhưng thực chất đĩa cứng mình lưu dữ liệu theo các sector là những vòng tròn đồng tâm từ trong ra ngoài - chỉ là cách hiện thị thôi, đừng quá bận tâm về nó). Chính vì cách sắp xếp như vậy, nếu ta lựa chọn những phân vùng đầu tiên dành cho boot thì khi khởi tạo phân vùng mới phần mềm phân vùng sẽ phải thêm một hành động là di chuyển dữ liệu sang phải để chừa chỗ trống cho phân vùng mới. Việc này tốn thời gian và tác động đến dữ liệu không an toàn nếu người dùng giữa chừng thực hiện các thao tác dừng đột ngột.

Chưa hết đâu, còn một vấn đề nữa là phân vùng ẩn. Đối với ổ cứng di động thì chẳng phải quan tâm lắm nhưng với USB thì có một vấn đề rất khó chịu trên Windows là nó không cho một chiếc USB hiện quá 1 phân vùng, phân vùng còn lại bắt buộc phải bị ẩn đi. Phân vùng được hiện nhất định phải là phân vùng đầu tiên thì mới hoạt động ổn định được. Nếu muốn phân vùng được hiện là phân vùng thứ 2 thì chúng ta cần sự trợ giúp của công cụ BOOTICE, thực hiện việc "Set Accessible". Nếu như MacOS hay Linux thì đã từ lâu nó đều cho USB được hiện tất cả phân vùng nhưng Windows thì không. Phải đợi đến các bản cập nhật gần đây của Windows 10 thì Microsoft mới cho phép USB được hiện nhiều hơn một phân vùng. Điều này bạn cần phải nắm rõ bởi vì khi build một công cụ boot bạn sẽ sử dụng nó trên hệ điều hành nào? phiên bản nào? làm sao để tương thích được với tất cả? Đây là một vấn đề rất đau đầu và cần rất nhiều biện pháp kỹ thuật cùng như sự sáng tạo của bạn để cải tiến và khắc phục các nhược điểm còn tồn tại.

Được rồi, "lần đầu" luôn là lần khó khăn nhất nhưng cũng thú vị nhất. Hãy học cách cài các bootloader lên thiết bị bạn muốn tạo boot (USB, HDD, hay ổ cứng giả lập cũng được). Muốn biết cách cài thế nào, cấu hình config sao để có thể boot được xin mời bạn theo dõi ở phần tiếp theo...

(To be continued ...)



Monday, August 21, 2017

Tớ đã build Multiboot Toolkit như thế nào ? Phần 1



Nếu như việc cài đặt nhiều hệ điều hành trên cùng một phần cứng máy tính (MultiOS) đã khó thì việc tạo một thiết bị khởi động (MultibootUSB) càng khó hơn. Cái khó ở đây là bạn phải biết cách kết hợp mọi thứ lại làm một mà vẫn khiến chúng hoạt động tốt. Tài liệu build công cụ boot này khá ít, lộn xộn và khó hiểu, chủ yếu là Tiếng Anh vì nó vẫn còn trong giai đoạn nghiên cứu và hoàn thiện.

Nói trước một điều, công việc phát triển công cụ boot sẽ rất gian nan nhưng cũng không kém phần thú vị. Đến với Multiboot bạn cần phải tự học, nghiên cứu và thử nghiệm rất nhiều mới có được kết quả (giống như một nhà khoa học máy tính vậy). Tất nhiên, với những chia sẻ trong chuỗi bài viết này. Tớ tin rằng các bạn sẽ tiết kiệm được rất nhiều thời gian và công sức. Con số đó có lẽ nhỏ hơn nhiều so với khoảng thời gian mà tớ tự học và ngâm cứu. Yên tâm đi, tất cả kiến thức mà tớ dành cho các bạn là hoàn toàn miễn phí ;)

"Vạn sự khởi đầu nan, gian nan bắt đầu nản" Nếu bạn hứng thú với chủ đề này chúng ta sẽ cùng tiếp tục ^_^



Phần 1: Cách thiết lập môi trường ảo hóa và công cụ test

Trong quá trình build một thiết bị boot bạn sẽ cần phải kiểm tra khá nhiều bằng cách cài đặt, chạy thử và xem cách ứng xử của hệ thống để đưa ra giải pháp cho phù hợp. Việc cài đặt và test liên tục trên một thiết bị thật như USB hay ổ cứng di động nhiều sẽ ảnh hưởng đến tuổi thọ của thiết bị và thời gian chờ cũng lâu hơn do giới hạn tốc độ của phần cứng. Và không phải lúc nào ta cũng phải khởi động lại máy tính liên tục để kiểm tra thiết bị boot có làm việc đúng như ta mong đợi hay không. Một tin vui cho các bạn là ta hoàn toàn có thể mô phỏng thiết bị boot và quá trình boot một cách hoàn hảo hơn 90% so với test trên phần cứng thật.

1. Cách tạo ổ cứng ảo

Ổ cứng ảo được sử dụng rộng rất rộng rãi. Nó có thể là một phần của một máy tính ảo hóa hoặc các ổ cứng ảo VHD do chính Windows hỗ trợ để tạo boot, lưu trữ và mã hóa dữ liệu.

Khi tạo ổ cứng ảo thực chất nó tạo ra một file .vdi (VirtualBox), .vmx (VMware) hay .vhd .vhdx (VHD) chứa thông tin giả lập bảng phân vùng của một ổ cứng. Sau khi tạo ra ta mount nó và nó sẽ xuất hiện trong trình quản lý Explorer như một ổ cứng bình thường. Nếu bạn đã từng sử dụng các file ảnh ISO (là dạng ảo hóa của ổ CD/DVD) thì cách hoạt động cũng tương tự. Tốc độ đọc ghi của ổ ảo phụ thuộc vào nơi bạn lưu trữ file giả lập, tức là bạn lưu trên ổ cứng thì tốc độ chép file vào nhanh, để trên USB thì tốc độ chép file vào chậm.

Ổ cứng ảo sẽ có 2 dạng tương ứng với hai cách mà nó chiếm dung lượng trên ổ vật lý:
  • Dinamically Expanding: file giả lập của ổ ảo có dung lượng rất nhỏ và nó sẽ phình ra tùy vào lượng dữ liệu mà bạn chép vào. Khi xóa dữ liệu đi dung lượng chiếm không tự động nhỏ lại. Nếu chép thêm dữ liệu dung lượng chiếm trên ổ vật lý có thể lại phình ra thêm (nguyên nhân do cách dữ liệu sắp xếp trên sector của ổ cứng vật lý thôi bạn, nếu có thời gian mình sẽ viết bài về cứu dữ liệu và sẽ giải thích kỹ hơn về cơ chế này). Đối với dạng này, mặc dù ổ cứng thật nơi chứa file ảo hóa của nó có kích thước giới hạn nhưng bạn hoàn toàn có thể thiết lập dung lượng ổ ảo lớn hơn gấp nhiều lần (nhưng tất nhiên lượng dữ liệu tối đa có thể lưu trữ vẫn nằm trong giới hạn của ổ cứng vật lý của bạn)
  • Fixed Size: dung lượng ổ ảo khi thiết lập bao nhiêu sẽ chiếm dung lượng lưu trữ trên ổ cứng vật lý bấy nhiêu, con số này là cố định. Cho dù bạn có chép dữ liệu có dung lượng thấp thì dung lượng chiếm của ổ ảo này vẫn bằng con số mà ta thiết lập từ đầu cho nó.
Ở bài này để thuận tiện mình chỉ sử dụng ổ cứng VHD. Bạn có thể sử dụng trình quản lý ổ đĩa Disk Management mặc định của Windows để tạo nhưng tính năng khá giới hạn. Riêng mình thích sử dụng Simple VHD Manager (download) của Sordum hơn ^^


Sau khi tạo ổ đĩa ảo nó sẽ tự động được mount nhưng bạn sẽ không thấy được nó trên trình quản lý ổ đĩa Explorer. Lý do là ổ ảo này chưa được format bạn cần dùng một tool phân vùng để format hoặc tạo lại phân vùng mới cho nó.



Một vấn đề nữa là mặc định ổ cứng ảo sử dụng bảng phân vùng MBR, nếu muốn test thiết bị boot trên GPT bạn cần dùng tool phân vùng để conver nó sang ổ GPT. (Có thể dùng Diskpart nếu bạn biết thao tác ở Command Prompt ^^ ). Nhưng với những bạn mới mình khuyên nên sử dụng một phần mềm quản lý phân vùng như AOMEI Partition Assistant hay Minitool Partition Wizard cho trực quan.





Ở các lần khởi động tiếp theo, có thể ổ VHD sẽ không tự động mount nữa cho bạn. Bạn chỉ cần mở lại Simple VHD Manager >> chuột phải vào tên ổ đĩa đã tạo >> chọn attach là được.


2. Cách tạo máy tính ảo và thiết lập chuẩn boot

Ngoài ổ cứng ảo để giả lập một thiết bị rời như USB hay một chiếc ổ cứng di động thì bạn cần chuẩn bị một chiếc máy tính ảo nữa. Nếu như VMware được mệnh danh là vua trong phần mềm tạo máy tính ảo có trả phí thì VirtualBox là vua trong thế giới phần mềm nguồn mở. Nhưng không phải cứ phần mềm trả phí là tốt nhất. Tin tớ đi ;) Trong kinh nghiệm nhiều năm chơi ảo hóa, để giả lập hệ thống boot thì VirtualBox vẫn tốt hơn cả.

Quá trình ảo hóa sẽ cần một phần cứng đủ mạnh (ram ít nhất 4GB) cùng với hệ điều hành làm máy chủ là phiên bản 64bit. Nếu bạn đang xài Windows 32bit thì mình khuyên không nên dùng nó làm máy chủ để thực hiện việc ảo hóa này.

Bước 1: Lên trang chủ VirtuaBox (HomePages) >> Click vào dòng Windows hosts để tải bộ cài VirtualBox về.
Bước 2: Cài đặt bình thường như tất cả các phần mềm khác.
Bước 3: Tạo mới máy ảo giả lập và tùy chỉnh

3. Cách khởi động thiết bị ảo hóa trong môi trường giả lập

Có ổ ảo và máy tính ảo thì bạn đã có thể test được khả năng boot rồi nhưng mỗi lần thay đổi các ổ ảo hay thiết bị boot thật sẽ khá mất thời gian và rườm rà. May mắn cộng đồng reboot.pro đã cho ra một tool mang tên là Virtual Machine USB Boot (download) để hỗ trợ boot các thiết bị di động vào môi trường ảo hóa thông qua VirtualBox.

Sau khi đã tạo máy ảo và tùy chỉnh như trên, ta chỉ việc chạy tool và làm theo hình



Đơn giản vậy thôi, tiếp theo bạn có thể cài thử Multiboot Toolkit lên một ổ cứng ảo và test thử nó xem hệ thống ảo hóa đã hoạt động tốt chưa ^^

Vậy cần phải trang bị thêm kiến thức và công cụ gì để tự xây dựng một công cụ Multiboot cho riêng mình, mời bạn theo dõi ở phần tiếp theo.

(To be continued ...)


Saturday, June 25, 2016

[Guide] Sử dụng Clover bootloader để quản lý Multi OS


Multi OS là một khái niệm nói đến việc cài nhiều hệ điều hành chạy trên cùng một phần cứng máy tính. Với sự phát triển của cộng đồng hackintosh, sự phát triển mạnh mẽ của Linux những năm gần đây thì việc Multi OS khá cần thiết để trải nghiệm tốt các hệ điều hành, tạo môi trường làm việc, lập trình tốt hơn. Bài viết này không hướng đến những cá nhân chỉ sử dụng Windows với những tính năng hết sức cơ bản như lướt web, gõ văn bản... Bài viết hướng đến người dùng máy tính nâng cao, những lập trình viên, developer... Tất nhiên, nếu bạn là một vọc sĩ thích sự mới mẻ thì guide này cũng là một sự lựa chọn không tồi dành cho bạn




Sơ lược về Clover bootloader

Clover là một trình khởi động được cộng đồng hackintosh phát triển nhằm hỗ trợ việc cài Mac OS lên máy tính thông thường chạy chip Intel mà không sử dụng phần cứng của Apple. Clover được xây dựng trên nền tảng của rEFInd và đã phát triển độc lập. Ưu điểm của trình khởi động này là menu boot rất đẹp, đa năng và khả năng tùy biến cao

Nếu như bạn đã từng cài Multi OS thì cũng thấy sự khó chịu nhất định trong quản lý menu khởi động của các hệ điều hành đã cài nhất là với Linux khi sử dụng Grub2 làm trình bootloader mặc định nhìn khá cùi mía và dễ gây ức chế người dùng.




Vấn đề cần giải quyết!

Thường thì sau khi cài hackintosh, chọn Clover làm trình khởi động thì menu của Windows, MacOS, và một số Linux đã mặc định hiện trên Menu của clover. Nguyên do là Clover đọc file *.efi từ phân vùng EFI để tự động thêm vào menu.

Vấn đề 1: nếu bạn chọn cài những Linux Distro phổ biến thì menu sẽ tự động thêm cho bạn nhưng nếu những distro bạn dùng không phổ biến hoặc mới xuất hiện vài năm gần đây thì menu sẽ không được tự động cho bạn

Vấn đề 2: Boot qua file *.efi cho Linux cũng chỉ là một bước trung gian để khởi động vào Grub2. Vậy nếu để mặc định thì lại thành thừa thải (xã hội gọi là rảnh đó bạn ^^ ). Nguyên do là bạn phải dùng 2 thao tác là chọn menu qua clover rồi lại chọn qua Grub2 mới vào hệ điều hành mà bạn muốn >>> Vậy thì dùng Grub2 luôn cho khỏe chứ xài Clover làm gì -_-





Mục đích của guide này?

Thêm đầy đủ các hệ điều hành từ Windows, MacOS đến Linux lên menu của Clover và chỉ cần enter vào menu đã chọn là boot thẳng vào hệ điều hành bạn muốn. Ngoài ra còn hướng dẫn cho các bạn cách khắc phục một số lỗi trong quá trình sử dụng





Linux khởi động từ Clover như thế nào?

Từ Kernel 3.3 trở lên Linux đã hỗ trợ khởi động bằng EFISTUB (EFI BOOT STUB). Đây là phương pháp có thể khởi động trực tiếp kernel từ EFI mode. Grub2 cũng khởi động thông qua nó, khi sử dụng Clover bootloader bạn có thể boot trực tiếp qua kernel này, xong ở một số trường hợp Clover chưa hỗ trợ cho một số distro linux đặc biệt ta vẫn cần load thông qua trợ giúp Grub2 bootloader

Mặc định Clover bootloader không hỗ trợ driver cho linux để load trực tiếp kernel, để sử dụng tính năng hữu ích này ta cần lấy driver từ rEFInd boot manager (download here)






Có bao nhiêu cách để thêm Linux vào menu Clover

Cách 1: Chỉ cần chép driver của rEFInd vào thư mục drivers64UEFI là, trong thẻ GUI ở khung scan tích vào cả 2 ô kernel và linux là menu của Linux tự động add vào menu clover
  • Đơn giản, không phải thao tác gì nhiều. Cách này dùng cho những distro phổ biến
  • Không tùy biến icon được, một số distro mới Clover không nhận diện được

Cách 2: Thêm menu trực tiếp cho linux vào Clover bằng cách boot qua vmlinuz. Thực ra bản chất cũng như cách 1 nhưng ta có thể tùy chỉnh được các thiết lập
  • Không phụ thuộc vào grub2
  • Dễ chỉnh sửa thuộc tính boot

Cách 3: Thêm menu cho Linux trên Clover bằng cách chạy thông qua file grubx64.efi (hoặc shimx64.efi hay bootx64.efi)
  • Tận dụng config mặc định của Grub2, dùng cho một số distro đặc biệt không thể load thông qua vmlinuz trực tiếp được thí dụ như các distro họ Android hay các distro mới ra gần đây có cấu trúc phân vùng đặc biệt khiến driver chưa thể nhận diện được
  • Chỉ cần địa chỉ phân vùng PARTGUID, bạn có thể lấy thông qua boot.log trên Clover configurator
  • Cần phải thao tác thêm vào grub2




Với cách 2 và cách 3 hầu hết các thiết lập đều đã có sẵn duy nhất có 2 giá trị ta cần phải tìm đó là PARTUUIDUUID. Các bạn boot vào Linux, mở Terminal và oánh lệnh
  • sudo blkid


Copy đúng chuỗi số vừa lấy được của phân vùng bạn muốn multiOS vào config.plist với các giá trị tương ứng
  • Volume = PARTUUID (Lưu ý cần chuyển chuỗi vừa lấy được thành chuỗi in hoa, có thể dùng phím chức năng Shift+F3 trên Word hoặc sử dụng tính năng này trên Unikey)
  • AddArguments = UUID





1. Đối với máy tính đã có Clover thừa kế sau khi cài hackintosh

Như tiêu đề của chuỗi bài viết về hackitosh dành cho newbie, việc cài thành công hackintosh là con đường dễ dàng để đi đến multi OS, vậy dễ ra sao:

Khởi động vào Mac OS >>> bật trình chỉnh sửa Clover Configurator >>> chuyển sang thẻ Boot.log



Các bạn mở file config.plist trong EFI/CLOVER rồi chuyển sang thẻ Gui và làm như hình. Click vào dấu "+" ở khung "Custom Entries" để thêm Menu mới cho UEFI mode

Thực ra đối với Windows và Mac OS thì không cần phải thêm menu làm gì vì Clover đã tự nhận diện tụi nó trên trình đơn khởi động, nhưng nếu bạn muốn sắp xếp menu nào trước sau thì nên tùy chỉnh thêm menu cho nó

  • Volume: dán địa chỉ phân vùng vào đây (xem ở boot.log). Lưu ý nếu boot từ grubx64.efi thì địa chỉ phân vùng là của EFI; còn từ vmlinuz thì địa chỉ phân vùng là phân vùng cài đặt OS
  • Path: oánh đường dẫn đến file *.efi hoặc vmlinuz
  • AddArguments:

    Với Mac OS kiểu như này:
    slide=0 dart=0 nv_disable=1 -gux_defer_usb2 kext-dev-mode=1

    Với Linux thì có cấu trúc như này
    root=UUID=62b30549-d7c3-4e82-b905-92031a7a7f50 ro initrd=initrd.img add_efi_memmap
    (thêm lệnh quite nếu muốn ẩn các tiến trình khi boot)
    Thay chuỗi số phía trên bằng UUID phân vùng chứa OS mà bạn muốn thêm menu

  • Title / FullTitle: Oánh tên bạn muốn hiện trên menu khi chọn
  • Image: tên của icon trong thư mục icon của theme bạn đang dùng, lưu ý nếu chưa có icon của OS bạn đang dùng bạn có thể tạo icon bằng photoshop định dạng .png sau đó đổi đuôi thành .icns (Thí dụ tên file icon là os_parrot.icns thì chỉ cần oánh tên ở mục này là parrot

  • Type: Chọn kiểu boot cho OS (Windows, OSX, Linux, First)
  • VolumeType: chọn Internal






2. Đối với máy tính chưa cài hackintosh

Để trực quan trong chỉnh config.plist bạn có thể sử dụng máy ảo chạy Mac OS và cài thêm Clover configurator (xem cách sử dụng máy ảo Mac OS tại đây). Nhưng để không mất thời gian bạn có thể chỉnh sửa config.plist bằng trình edit thông dụng như Notepad++ cũng được chỉ cần bạn cẩn thận một chút để tránh làm hỏng cấu trúc config


Tiến hành giải nén file vừa tải, mount Clover-v2.3k-xxxx-X64.iso và copy thư mục CLOVER ra ổ cứng để tiến hành chỉnh sửa config.plist

Click vào dấu "-" để thu gọn các thẻ không dùng đến, ta chỉ quan tâm đến thẻ GUI. Các bạn so sánh nội dung code dưới đây và hình phía trên để chỉnh sửa code cho đúng nhé



Tải Config.plist có nội dung phía trên ở đây http://www.fshare.vn/file/7DZJHGNKOFTL
>> Cloud Clover Editor (chỉnh sửa config.plist trên nền web)

Sau khi chỉnh sửa config.plist xong copy thư mục Clover vào phân vùng ESP (EFI). Set boot cho Clover làm mặc định bằng tay như hình dưới.

Lưu ý để truy cập vào phân vùng ESP có nhiều cách, cách mình thường dùng và cảm thấy hiệu quả nhất là boot vào WinPE, mở tool phân vùng như MiniTool Partition Wizard >>> gán Letter cho ESP >>> mở trình Explorer nhấn F5 để Refresh là có thể full quyền truy cập và chỉnh sửa EFI. Có thể tham khảo bài này để tự tạo một chiếc USB multiboot đa năng cho riêng mình



Hoặc nếu trên Windows bạn có thể dùng Xorboot (download here) để thêm entries cho Clover như này







So sánh 2 hình minh họa về Boot Entries ở hai phần 1, 2 chắc bạn đủ thông minh để hiểu cách tích hợp rồi, nhưng để rõ ràng mình sẽ tóm tắt lại như sau:

Cách 1. Nếu cài các distro phổ biến như Ubuntu, Linux Mint, Fedora, OpenSuse, ... chỉ cần copy driver vào thư mục drivers64UEFI, sau đó tùy chỉnh thêm config.plist bật 2 thiết lập kernel và linux là được, menu của linux sẽ tự động hiện trên Clover bootloader, nhưng sẽ xuất hiện một menu thừa do Clover đọc file grubx64.efi từ phân vùng ESP (EFI). Để menu được thoáng hơn, ở thẻ hide bạn thêm bootx64.efi để ẩn nó đi, hoặc có thể vào phân vùng ESP (EFI) xóa folder của distro đó đi là được (thí dụ như folder Ubuntu - để an toàn có thể nén folder Ubuntu lại trước rồi mới xóa folder Ubuntu)

Cách 2. Nếu sau khi làm theo cách 1 nếu Clover nhận kernel nhưng hệ thống icon nhận sai hết bạn có thể dùng cách 2 để thêm menu entries cho Linux để dễ tùy chỉnh
Có 2 thiết lập quan trọng cần chú ý là:
Volume: oánh là vmlinuz
AddArguments: oánh theo cấu trúc
root=UUID=62b30549-d7c3-4e82-b905-92031a7a7f50 ro initrd=initrd.img add_efi_memmap
(thêm lệnh quite nếu muốn ẩn các tiến trình khi boot)
Thay chuỗi số phía trên bằng UUID phân vùng chứa OS mà bạn muốn thêm menu
Các thiết lập còn lại bạn tùy chỉnh giống như menu Kali Linux (4) và Ubuntu (5) mình đã ví dụ ở phía trên


Cách 3. Sau khi làm cách 1 đầy đủ nhưng không thấy menu xuất hiện, làm luôn cách 2 mà cũng không được thì bạn có thể liệt kê cái Linux OS bạn đang cài là thuộc dạng đặc biệt. Đến thời điểm này mình chỉ mới biết là Parrot OS và các distro họ Android (Androidx86, RemixOS, PhoenixOS). Vì vậy lúc này load thông qua grubx64.efi là tối ưu hơn cả.
  • Bước 1: Thêm menu bạn làm tương tự với Parrot OS mà mình đã để hình thí dụ phía trên
  • Bước 2: Boot vào Linux quyền Root tìm đến file grub.cfg theo đường dẫn /boot/grub/grub.cfg; Tìm và sửa hết các dòng có nội dung set timeout về 0 hết cho mình và lưu lại thiết lập






Lời kết

Đối với sự phát triển phần cứng hiện nay cùng với giá linh kiện điện tử rẻ đi rất nhiều, khá dễ dàng để tìm cho mình một cấu hình máy tốt để chạy tốt các trình ảo hóa như VMWare hay VirtualBox. Guide này chỉ là một sự lựa chọn thay thế; quyền lựa chọn là ở các bạn. Nhưng dám chắc một điều chạy đa hệ điều hành trực tiếp trên phần cứng máy tính sẽ mang lại hiệu suất và trải nghiệm tốt hơn rất nhiều so với ảo hóa. Hi vọng Guide này hữu ích với các bạn, chúc các bạn thành công ^^






Tuesday, June 21, 2016

[Guide] Hướng dẫn cài đặt Parrot OS trên UEFI multiboot với các OS khác


Có thể nói Parrot OS là Linux Distro mình yêu thích nhất. Là một hệ điều hành chuyên về xâm nhập, bảo mật, pháp y số, ẩn danh... Nhưng nó không chỉ dành riêng cho chuyên gia mà nó còn được thiết kế để dành cho cả người dùng cơ bản. Hôm nay mình sẽ hướng dẫn các bạn cách cài đặt nó lên máy tính ở UEFI Mode

Bạn có thể tải Parrot OS tại: https://www.parrotsec.org/





Bước 1: tạo USB cài đặt Parrot OS


Cũng như Kali Linux, Parrot OS được xây dựng trên nền tảng của debian nên cách tích hợp USB và cách cài tương tự nhau. Nhưng hiện tại phiên bản mới nhất của Parrot OS vẫn chưa fix được lỗi không thể cài Grub2. Để khắc phục lỗi này bạn có thể cài đặt Parrot OS từ chế độ live desktop sau đó cài thêm một distro linux khác, lúc này menu sẽ tự động sửa chữa cho bạn, khi boot vào Parrot OS được rồi thì kết nối internet và chạy các lệnh ở cuối bài để cài đặt lại Grub2 cho Parrot
https://niemtin007.blogspot.com/2015/08/make-usb-install-kali-linux-20-uefi-gpt-multiboot.html


Nếu đã thử tích hợp trực tiếp bộ cài Parrot OS vào USB giống như Kali linux mà không thể boot được thì bạn cần tải công cụ dưới đây để giúp boot được Parrot OS vào môi trường live desktop
https://niemtin007.blogspot.com/2015/12/multiboot-usb-grub2-grub4dos-syslinux-refind-xorboot-uefi-legacy-mode.html

Sau khi tích hợp MultibootUSB vào USB ta copy ISO của Parrot OS và Boot-Repair-Disk vào thư mục gốc trên USB, chạy file .addmodule.bat quyền quản trị

Boot vào Parrot OS để kiểm tra khả năng tương thích phần cứng của Parrot OS với máy bạn. Nếu ổn, tiến hành chạy trình cài đặt




Bước 2: cài đặt Parrot OS multiboot với các OS khác


Một lợi thế tuyệt vời của UEFI mode là việc multiboot hệ thống vô cùng dễ dàng. Ta chỉ cần chuẩn bị riêng một phân vùng cho OS muốn cài và tiến hành cài đặt. Việc multiboot sẽ diễn ra tự động









Bước 3: fix boot cho Parrot OS


Chạy boot-repair-disk trên trình đơn của MultibootUSB và tiến hành fix grub2. Mục đích ở bước này là tận dụng menu của một distro khác để boot vào Parrot OS



Sau khi boot vào Parrot OS thông qua Grub2 bootloader của một distro (của mình là ubuntu, riêng trường hợp máy chưa có một distro linux nào khác thì boot-repair-disk sẽ không nhận diện được, bạn cần cài thêm một distro linux khác để fixboot cho ParrotOS - cài xong không thích có thể xóa đi), kết nối mạng internet rồi mở Terminal quyền root (icon màu đỏ đó các bạn) và oánh các lệnh sau:

  • mount /dev/sda1 /boot/efi
  • apt-get install --reinstall grub-efi
  • grub-install /dev/sda
  • update-grub


Nếu bạn muốn một menu đẹp như này mời bạn đọc bài viết sử dụng Clover bootloader trong phần tiếp theo

(To be continued!)





Monday, December 28, 2015

Multiboot USB Flash Drive for UEFI/Legacy Mode - không chỉ là một chiếc USB cứu hộ


Bạn thường dùng USB để làm gì? Ngoài lưu trữ dữ liệu bạn còn làm gì nữa? Có bao giờ bạn tự hỏi là mình có thể làm gì khác trên chiếc USB của mình? Và cũng có bao giờ bạn cũng tự hỏi: "có cách nào để chạy Windows và Linux trực tiếp mà không phải cài đặt!?"

Công cụ dưới đây sẽ giúp bạn sở hữu một chiếc USB đa năng không chỉ dùng để lưu dữ liệu, cứu hộ mà còn nhiều hơn thế!




Changelog Multiboot Toolkit 2.3.2: (work-in-process)
  • Fixed installer script for Virtual Disk & USB in the Turkish system language
  • Added more modules (AOMEI Backupper, TrueImage 2020, Bob.Ombs.Win10PEx64...)
  • Supported to update Grub4dos automatic with the batch script
  • Fixed bug in the grub2 installer script for GPT disk
  • Supported script to create a new WIM menu in the WinPE Boot Manager
  • Supported Simplified Chinese language (thanks to A1ive)
  • Supported script to arrange the grub2 menu (add, remove, sort)
  • Supported script to create BIOS Boot Partition automatic
  • Supported to create GPT bootable USB disk (limited features)
  • Display copy percentage when integrating Wim, ISO modules type
  • Disabled SpVoice on Windows lite, added more grub2 themes
  • Supported install Windows from ISO directly (thanks to A1ive)
  • Supported script to update grub2 and grubfm automatic (thanks to By_FaRuK)
  • Supported to boot Linux Distro live ISO via partnew - Easy2Boot method
    (thanks to Steve6375 & A1ive)
  • Type: open-source project
  • Platform: Windows (7 or higher version)
  • License: GNU General Public License v3.0
  • User Interface: Console/Terminal
  • WinSetupFromUSB (Home Page)
  • YUMI boot (Home Page) - Multiboot Toolkit does not support for UEFI YUMI



Cách tích hợp:







Multiboot Toolkit được thiết kế cho ai?

Đây là món quà dành tặng cho những người bạn là kỹ thuật viên, chuyên viên cứu hộ, chuyên gia bảo mật/ an ninh mạng/ hacker mũ trắng, sinh viên IT hay đơn giản hơn là những newbie, vọc sĩ thích khám phá
P/s: xin lưu ý bản thân Multiboot Toolkit không chứa những công cụ nguy hiểm nhưng nó giúp tích hợp rất nhiều công cụ mạnh mẽ vì vậy hãy sử dụng với mục đích tốt và đừng lạm dụng nó!



Demo


rEFInd boot manager - UEFI


Chế độ UEFI - Grub2


Xorboot boot manager - UEFI


Chế độ Legacy - Grub2


Chế độ Legacy - Syslinux


Chế độ Legacy - Grub4dos





Mã nguồn:
    Tool được phát triển dựa trên gói BootUSB của anh Đặng Văn Anh (anhdv), sử dụng các bootloader mã nguồn mở Grub2/rEFInd/Xorboot/Clover/Grub4dos/Syslinux. Các module trong tool gồm WinPE SE được build bởi anhdv, apolloneptune, dinhphucit, Hoàng Khiển, ... gói Apps của anh Hà Sơn. Ngoài ra distro của linux, recuse, các tool cứu hộ khác được lấy từ trang chủ. Multiboot Toolkit được phát triển để liên kết các công cụ khác lại với nhau với mục đích tạo một chiếc USB đa năng giải quyết được hầu hết các vấn đề trong sử dụng máy tính



Tính năng hỗ trợ:
  • Hỗ trợ boot Legacy bằng Grub2, Grub4dos và Syslinux
  • Hỗ trợ boot UEFI bằng Grub2, Clover, Xorboot và rEFInd boot manager
  • Hỗ trợ boot qua lại giữa các bootloader mà không phải khởi động lại máy
  • Menu hiện thị tính năng phù hợp với chuẩn boot Legacy hay UEFI
  • Hỗ trợ boot Linux live ISO (tích hợp nhiều code boot sẵn - chỉ hiện thị menu khi có file ISO)
  • Hỗ trợ boot Antivirus live ISO dùng để quét virus ngoài môi trường Windows
  • Hỗ trợ boot WinPE SE để cứu hộ chuyên sâu



Cụ thể bạn có thể làm gì?
  • Phân vùng, cứu dữ liệu, test phần cứng máy tính thông qua WinPE SE
  • Cài Windows trực tiếp qua WinSetupfromUSB hoặc gián tiếp thông qua WinPE SE
  • Chạy trực tiếp các distro của linux dạng ISO mà không phải dùng bất kỳ tool tích hợp vào USB nào cả (có thể cài được linux trong môi trường live ISO)
  • Chạy các công cụ cứu hộ, diệt virus nền linux như: Acronis True Image, Parted Magic, Bitdefender Rescue CD ...
  • Chạy live các hacker distro gồm các công cụ mạnh mẽ trong pentesting, hacking, ẩn danh, pháp y, bảo mật...
  • Boot vào Windows/Linux/MacOS chế độ UEFI (chỉ hỗ trợ máy mac thật, chưa support cho hackintosh) thông qua rEFInd trong Multiboot OS





Danh sách themes





Link download Module

Multiboot Toolkit hỗ trợ cho rất nhiều dạng module, các phiên bản mới nhất của các module luôn được cập nhật liên tục. Để sử dụng các module mới nhất vui lòng lên trang chủ và tải về. Tùy nhu cầu sử dụng của mỗi người mà các bạn chọn tải về từng module mà các bạn muốn dùng. Càng muốn thêm nhiều module bạn cần phải sử dụng USB có dung lượng lớn hơn. Bản thân mình sử dụng USB 32GB

(Chi tiết xem ở file .modules)

WinPE SE - Mini Windows
Download
Apps cho WinPE (Hà Sơn)
Win8PE - Win10PE SE (anhdv)
Win8.1SE - Win10PE SE (apolloneptune)

Desktop/Service Linux Distros
Download
Android-x86
Arch
CentOS
Clonezilla
Chromixium
Debian
Elementary
Fedora
Gentoo
Knoppix
Linux Mint
Mageia
Manjaro
OpenSuse
Parted Magic
Sabayon
Slackware
Systemrescuecd
Ubuntu
Zorin OS

Hacker Distro
Download
ArchAssault
Backbox
BlackArch
DEFT-Z
Fedora Live Security
Kali Linux
NodeZero
Network Security Toolkit
Parrot OS
Tails
Wifislax
Weakerthan

Antivirus Live ISO
Download
AVG Rescue CD 
Avira Rescue System
BitDefender Rescue CD
Dr.Web® LiveDisk
ESET SysRescue Live
F-Secure Rescue CD
Kaspersky Rescue Disk 10
Vba32 Rescue



Công cụ test USB & cách test


Đối với việc kiểm tra khả năng boot và chỉnh sửa giao diện khuyên bạn dùng Qemu Boot Tester để chạy thử. Còn để test WinPE, test ISO booting và các module tích hợp khác khuyên dùng Virtualbox cùng với công cụ Virtual Machine USB Boot. Hoặc để không rườm rà bạn khởi động lại máy bạn chọn chế độ boot vào USB để trải nghiệm




Vấn đề lỗi và báo lỗi

Mặc dù đã cố gắng hoàn thiện nhưng không tránh khỏi sai sót về code boot, mặt khác code boot live ISO còn phụ thuộc vào phiên bản phát hành của các hãng nên sẽ khác nhau đôi chút. Vì vậy sẽ được tiến hành fix lỗi qua các phiên bản tiếp theo để theo kịp các gói update của các phần mềm, OS ... tích hợp trong Multiboot Toolkit dưới dạng module. Nếu một tính năng nào đó hoạt động không tốt mong được phản hồi (các bạn có thể gửi email hoặc nhắn tin trực tiếp trên trang facebook cá nhân của mình, cám ơn)





Lời nhắn gửi!

Trước tiên xin gửi lời cám ơn chân thành đến anh Hà Sơn đã góp ý và giúp fix lỗi cũng như chia sẻ rất nhiều gói Apps chạy tốt trên nền WinPE. Cám ơn anhdv đã ra bộ WinPE tuyệt vời cũng như là người có công đầu trong việc đặt nền móng để công cụ Multiboot Toolkit này ra đời. Cám lethimaivi đã giúp cải tiến chức năng, cám ơn bác Hoang Duch2 đã giúp support nhiệt tình trên diễn đàn. Và đặc biệt cám ơn các bài viết cũng như comment trên các diễn đàn linux (code mình lượm và chế từ đây ra :D )

Bản chất Multiboot Toolkit được build lại, và cũng có thể gọi là bản nâng cấp từ gói BootUSB của anhdv. Tất cả các công cụ người khác đã làm sẵn, mình chỉ làm cho nó màu mè hơn cũng như thêm code boot để nó đa năng hơn

Multiboot Toolkit thực sự giúp chiếc USB có thể làm hơn những gì nó được thiết kế ra, thông qua đây mình muốn xây dựng một cộng đồng phát triển nó và hưởng lợi từ nhau vì mình có ý tưởng nhưng bản thân còn nhiều hạn chế về trình độ cũng như kiến thức. Mình quyết định đặt tên phiên bản cho nó với mục đích là sẽ tiếp tục phát triển và nâng cấp nó thêm nhiều tính năng hữu ích hơn. Multiboot Toolkit luôn miễn phí cho tất cả các bạn. Chúc vui ^_^








Changelog Multiboot Toolkit 2.3.1: (01-07-2019)
  • Fixed "Load driver failed..." on Windows 64bit
  • Fixed bug for bcdedit, method change to keep configuration for WinSetupFromUSB
  • Updated WinSetup.ISO.Module_(ISO.method) -- developed by Tayfun Akkoyun
  • Added Hiren’s BootCD PE as a module (in Windows Boot Manager menu & Grub2)
  • Supported Wimboot in UEFI mode (thanks to A1ive, Serhat100, Tayfun Akkoyun)
  • Fixed grub2 configuration for Linux Distro, Rescue Disk (live ISO & extracted)
  • Added more themes (thanks to gnome-look.org & clover team):
    32 themes for the Grub2 Bootloader & 42 themes for the rEFInd Boot Manager

Changelog Multiboot Toolkit 2.3.0: (28-05-2019)
  • Supported Install Hackintosh - add all versions with only one bootable device
  • Changed the Multiboot devices' partition order, Support GPT Disk for HDD Box
    (ESP1-ESP2-BIOS Boot Partition-MULTIBOOT-MacInstaller1-MacInstaller2-...)
  • Changed the configuration for the bootloader to suitable with the new partition table
  • Using wimboot to boot the .wim image from GPT disk in Legacy BIOS Mode
  • Fixed Grub2 & Syslinux cannot bootable on some machines (thanks to Hoàng Đức)
  • Added option for creating/uncreate the EFI partition for Secure Boot in UEFI mode
  • Fixed config for about 50 Distros Linux, support multi-version in a menu
    (thanks to SmartFinn)
  • Added colortool to improve user experience in the installer interface
  • Added grub2-filemanager as an extra module (thanks to A1ive)
  • Fixed boot menu for DLC 2019, easy to use together with Strelec, HKboot, Anhdv...
  • Optimized source code for the batch script
  • And, a newly released version with many bugs @@

Changelog Multiboot Toolkit 2.2.0: (28-05-2017)
  • Updated the AOMEI Partition Assistant (thanks to Hoàng Khiển, Krishna)
  • Changed partition method, increase read and write speeds for Multiboot device
  • Updated partition tools configuration for Grub2 (updated by Tayfun Akkoyun)
  • Allowed install on the Virtual Disk, support to test quickly a Multiboot device
  • Fixed Grub2 cannot be bootable in UEFI mode on the External Portable Hard Drives
  • Fixed DLC Boot cannot be bootable from Grub2 menu in Legacy mode on the
    External Portable Hard Drives (thanks to steve6375 from reboot.pro forum)
  • Supported Grub2 Menu with multi-language (Vietnam, English, Turkish languages)
    (Changed the script structure for easy translation into other languages)
  • Updated Windows Setup from Source module with both WIM and ISO method
    (updated by Tayfun Akkoyun)
  • Added timeout between the partition commands. It makes the installation slower
    but it makes the Multiboot Installer works well in the system has low performance
  • Fixed missing disk and partition number variables in Windows 7, it is the cause of
    can not run script install file in the hidden partitions

Changelog Multiboot Toolkit 2.1.3: (03-05-2017)
  • Fixed bug scripts in the previous version, fixed bug for Windows 7
  • Added EasyUEFI Portable to edit UEFI boot entries for MultiOS
  • Supported script to change default bootloader/boot manager for UEFI mode
  • Updated new WinPE modules (thanks to Hoàng Khiển, anhdv, dinhphucIT)
  • Fixed boot Grub2, WinPE Boot Manager for UEFI 32bit (thanks to Ahmet Bulut)
  • Added WinPE Boot Manager & WinSetupFromUSB to Grub2 Menu in UEFI mode
  • Swapped files between ESP1 and ESP2 for compatibility with secure boot
    in some machine does not allow to choose boot option

Changelog Multiboot Toolkit 2.1.2: (28-04-2017)
  • Add Grub2 File Manager (thanks to karadurak, Tayfun Akkoyun)
  • Update Grub2 Bootloader 2.02 (thanks to Tayfun Akkoyun, Hà Sơn)
  • Convert more themes from Clover bootloader for rEFInd boot manager
  • Add script support to create config.plist for Clover (Hackintosh)
  • Fix script was not able to run in directory contain Unicode symbols or Whitespace
  • Support secure boot with original Microsoft UEFI boot files, only support for WIM format
    (Thanks to köylü, Tayfun Akkoyun from TNCTR forum)

Changelog Multiboot Toolkit 2.1.1: (29-03-2017)
  • Support Turkish Language (translate by tayfun akkoyun)
  • Improve Grub2 Config, more powerful with auto scan menu (thanks to aguslr)
    (fix boot for Wifislax64 or some particular ISO unbootable on a real machine)
  • Add NT6 method as a other option to install Windows (thanks to tayfun akkoyun)
  • Update WinSetup.ISO.Module, better than WIM method (update by tayfun akkoyun)
  • Add more options for XorBoot Boot Manager (UEFI mode)
  • Fix AOMEI Partition Assistant Warning in Windows XP, 7

Changelog Multiboot Toolkit 2.1.0:  (19-03-2017)
  • Improve modules script to prevent lost name file while running again
  • Improve multiboot_update script to auto update config for grub2
  • Add boot live ISO Wifislax64 (Grub2 UEFI/Legacy)
  • Fix multiboot_update script to keep the current grub2's theme setting
  • Loopback original config for some Linux distributions (need testing)
  • Fix missing Grub4dos config while installing WinSetupFromUSB (thanks to tayfun akkoyun)
  • Add many useful ISO tool on Grub4dos menu (thanks to tayfun akkoyun)
  • Make Grub4dos more powerful with auto menu (thanks to tayfun akkoyun and karadurak)
  • Add Wim method as an alternative to WinSetupFromUSB, saving more space
    (thanks to tayfun akkoyun, his friend Aşkın ÖZTAV and oguzhan43 from TNCTR)
  • Add ISO method as the other option to install Windows from original ISO
    (not support for modified ISO versions like Windows AIO - thanks to tayfun akkoyun)
  • Fix boot live ISO for Manjaro Linux 17 (Thanks to kainonergon)
  • Fix and Update the modules link

Changelog Multiboot Toolkit 2.0.1:  (28-02-2017)
  • Fix Windows format warning for USB (use bootice v1.3.3 instead bootice v1.3.4)
  • Add DLC boot menu from Grub2, fix WinPE Strelec menu in UEFI mode
  • Use Windows built-in chkdsk utility to check the partition before preparing
    the partition for HDD box. This method will help the data safety more
  • Update Grub2 bootloader 2.02 rc1 (thanks to Hà Sơn)
  • Fix config for Clover bootloader to auto scan entries like rEFInd
  • Add new module boot live ISO: AiO-SRT (thanks to kiet2507)

Changelog Multiboot Toolkit 2.0.0:  (27-01-2017)
  • Fix to miss Grub4dos configuration files when installing Grub2 with new method
  • Set Grub2 is the default legacy bootloader
  • Support some special ISO run only with FAT32 format on the hide partition
    (Bitdefender; Fedora; Network Security Toolkit...)
  • Support script auto add some special ISO in the hide partition
  • Fix and add much more the Grub2 themes
  • Improved the script to keep the original name when adding modules to boot live ISO
  • Support script to manually update the rEFInd boot manager and the Clover bootloader
  • Build new script to install rEFInd/Clover to Internal Hard Drives, support for MultiOS
  • Support edit mini Windows boot manager and WinSetup boot manager with bootice
  • Support script auto add ISO extracted to multiboot drive
  • Support script auto install portable software to multiboot drive

Changelog MultibootUSB 1.0.6:  (31-12-2016)
  • Fix Grub2 booting error in some devices without using CleanMBR
  • Add the another method to install/reinstall GRUB2 from Legacy mode
  • Support script change easily the Grub2 theme
  • Fix warning driver letter B:\ when installing to USB Flash Driver
  • Fix Shutdown error in some devices

Changelog MultibootUSB 1.0.5:  (31-10-2016)
  • Build new installer to install MultibootUSB for External Portable Hard Drives (HDD box) with 1 click (create boot without data loss - very safe for your data)
  • Add WinPE Sergei Strelec like a module (UEFI/Legacy)
  • Update Grub2, Clover bootloader
  • Fix boot error when booting to Syslinux bootloader
  • Fix boot AndroidOS, PhoenixOS, CubLinux
  • Add password recovery tool for web browsers and wifi
  • Build new script for update MultibootUSB manually
  • Add boot live ISO Caine OS (Grub2 UEFI/Legacy mode)

Changelog MultibootUSB 1.0.4:  (02-09-2016)
  • Set NTFS is a main boot partition
  • Use NTFS Drive Protection to protect USB 
  • Add WinSetupFromUSB for UEFI 32bit
  • Update Clover, rEFInd Boot Manager
  • Set rEFInd is the default boot manager for UEFI mode
  • Auto partition with simple script (thanks to AOMEI)
  • Build new instaler to install MultibootUSB for USB Flash Drive with 1 click
  • Fix boot live ISO for Parrot OS, Fix some bugs for script
  • Optimize the boot menu
  • Add new Mini Windows module (thanks to Hoàng Khiển)
  • Add boot live ISO Apricity OS (Grub2 UEFI/Legacy mode)
  • Remove Clover legacy (not support for NTFS)

Changelog MultibootUSB 1.0.3:  (15-08-2016)
  • Add boot live ISO Cyborg Essentials (Grub2 UEFI/Legacy)
  • Add boot live Cyborg Hawk (Grub2 UEFI/Legacy - extracted)
  • Add boot live LionSec Linux (Grub2 UEFI/Legacy - extracted)
  • Add boot live Cyborg Hawk (Grub2 UEFI/Legacy - extracted)
  • Add boot live Weakerthan 7 (Grub2 UEFI/Legacy - extracted)
  • Add boot live ISO Wifislax (Grub2 UEFI/Legacy) + Persistent just support with extracted method
  • Add boot live ISO Network Security Toolkit (NST 24) (Grub2 UEFI/Legacy)
  • Add boot live ISO BlackArch Linux on the second partition (NTFS) (Grub2 UEFI/Legacy)
  • Add boot live ISO Solus Linux (Grub2 UEFI/Legacy)
  • Add boot live ISO Antergos Linux (Grub2 UEFI/Legacy)
  • Add boot live ISO BBQLinux (Grub2 UEFI/Legacy)
  • Add boot live ISO Arch Strike Linux (x86_64) (Grub2 UEFI/Legacy)
  • Fix boot live ISO Fedora, Manjaro -- (thank Steave' E2B & hanhtrung92)
  • Fix boot Remix OS (new beta)
  • Fix bug & update MultibootUSB_HDD_Installer_(160812)
  • Add Simple Script auto add module (*.iso / *.wim / *.exe)
  • Add YUMI boot like a module Legacy & simple script to fix boot with Syslinux/Grub2
  • Add DLC boot like a module both UEFI & Legacy mode
  • Add WinSetupFromUSB to install multi windows-setup like a module for UEFI/Legacy mode
  • Update Clover bootloader, add more icon (Kali, Parrot, Remix), add more config.plist
  • Add Minitool Partition Wizard portable for MultibootUSB_HDD_Installer to partition and format manually
  • Try to boot Syslinux from UEFI mode (failure)

Changelog MultibootUSB 1.0.2:  (18-06-2016)
  • Hỗ trợ thêm Boot-Repair-Disk (Grub2 UEFI - Legacy chưa test)
  • Fix boot cho Kaspersky Rescue Disk 10 (Grub2 UEFI/Legacy + Syslinux/grub4dos legacy)
  • Fix boot cho AVG Rescue CD (Syslinux)
  • Fix boot WEAKERTHAN Linux 7 (Syslinux)
  • Thêm menu boot Wifislax + Persistent (syslinux)
  • Thêm menu cho Matriux Leandros (chỉ syslinux + không tích hợp cùng WEAKERTHAN Linux)
  • Thêm boot cho Deft linux (Grub2 UEFI/Legacy)
  • Thêm boot cho CAINE Linux (Syslinux + Grub2 UEFI/Legacy)
  • Thêm boot cho NodeZero Linux (Syslinux + grub2 Legacy)
  • Thêm boot cho Bugtraq-II blackwidow (Syslinux) -- (thank YUMI boot)
  • Thêm boot cho Network Security Toolkit (NST 22) (Syslinux)
  • Thêm Xiaopan OS (Syslinux)
  • Thêm boot Dr.Web LiveDisk  (Syslinux) -- (thank YUMI boot)
  • Thêm boot Eset rescue (Syslinux + Grub2 Legacy) -- (thank YUMI boot)
  • Thêm boot Comodo rescue (Syslinux)
  • Hỗ trợ boot live ISO PCLinuxOS (Grub2 UEFI/Legacy)
  • Hỗ trợ boot live ISO LXLE linux (Grub2 UEFI/Legacy)
  • Hỗ trợ boot live ISO Linux Lite (Grub2 UEFI/Legacy)
  • Hỗ trợ script chống phân mảnh tự động cho ISO -- (thank Steve' E2B)
  • Hỗ trợ boot qua syslinux từ menu grub2 và grub4dos -- (thank Steve' E2B)
  • Cập nhật bootloader (Grub2, Grub4dos, Clover)
  • Thêm menu cho Win8/8.1/10 PE/SE vào Xorboot Menu cho UEFI 32bit
  • Cập nhật MultibootUSB_HDD_installer_(160618).exe
  • Bổ sung các hướng dẫn trong file readme


Blog được tạo ra chỉ với mục đích chia sẻ kinh nghiệm. Không thu phí bạn đọc dưới bất kỳ hình thức nào. Chúc các bạn thành công!
Join Our Newsletter