Thứ Bảy, 23 tháng 11, 2019

INSTALL GRUB2 TRÊN WINDOWS


INSTALL GRUB2 TRÊN WINDOWS
*****
1. TẢI VỀ GRUB2
Để tải bản mới nhất của grub, dành cho cả Windows và Linux bạn vào đường dẫn này.
https://ftp.gnu.org/gnu/grub/
2. CHUYỂN ĐẾN THƯ MỤC GIẢI NÉN CỦA GRUB VÀ CHẠY DÒNG LỆNH ĐỂ CÀI ĐẶT BOOTLOADER GRUB2 CHO Ổ ĐĨA CỦA BẠN
grub-install.exe   --boot-directory=G:\boot    --target=i386-pc    //./PHYSICALDRIVE2
- Trong đó [--boot-directory=] là vị trí lưu file boot của grub có thể thay G:\boot bằng một thư mục con trong G:, ở đây G:\boot là phân vùng cần chứa bootloader
- [--target=] là kiểu hệ điều hành cần tạo boot, [i386-pc] là cho hệ điều hành chế độ BIOS (CSM, Legacy), ngoài ra còn [x86_64-efi] cho boot hệ điều hành x64 efi, [i386-efi] cho hệ điều hành boot x86 efi
- [//./PHYSICALDRIVE2] là thứ tự ổ đĩa cần tạo grub2 bootloader, nếu là ổ USB thì chọn [--removeable]. Để biết thứ tự ổ đĩa bạn dùng lệnh list disk trong diskpart nhé. Vào cmd, gõ diskpart, gõ list disk.

grub-install.exe   --boot-directory=G:\boot    --efi-directory=G:   --target=x86_64-efi    --removable
3. Sau khi thực hiện lệnh chương trình sẽ thông báo thành công hay không.

- Nhớ rằng, để boot efi thì phân vùng chứa efi boot phải định dạng FAT32
- Nếu chọn kiểu boot efi thì cần xác định thư mục chứa boot-efi nữa qua [--efi-directory=], tuy nhiên lệnh tạo EFI chỉ thành công khi bạn đang boot OS với chế độ UEFI. Không sao, bạn chỉ cần tìm file grubx64.efi và đổi tên thành bootx64.efi và chép đè vào file bootx64.efi của windows là được, với efi x86 cũng làm tương tự.
- Ưu tiên tạo boot uefi x64 hơn nhé, vì trước sau thì chúng ta cũng phải gặp vấn đề cần giải quyết trên boot UEFI này.
- Dưới đây là vị trí file khi chọn –boot-directory=G:\boot, 2 thư mục boot và EFI này nằm ở gốc ổ G:


4. Tải file grub.cfg và đặt vào thư mục [ổ đĩa:\...\grub\]
- Sau đó thêm những menuentry {….} của hệ điều hành mà bạn muốn vào.
- Ví dụ menuentry windows 7
menuentry "Windows 7  BIOS" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
chainloader +1
}
- Những OS khác các bạn tự tìm trên mạng
menuentry "OS using grub2" {
   insmod xfs
   search --set=root --label OS1 --hint hd0,msdos8
   configfile /boot/grub/grub.cfg
}
menuentry "OS using grub2-legacy" {
   insmod ext2
   search --set=root --label OS2 --hint hd0,msdos6
   legacy_configfile /boot/grub/menu.lst
}
menuentry "Windows XP" {
   insmod ntfs
   search --set=root --label WINDOWS_XP --hint hd0,msdos1
   ntldr /ntldr
}
menuentry "Windows 7" {
   insmod ntfs
   search --set=root --label WINDOWS_7 --hint hd0,msdos2
   ntldr /bootmgr
}
menuentry "FreeBSD" {
          insmod zfs
          search --set=root --label freepool --hint hd0,msdos7
          kfreebsd /freebsd@/boot/kernel/kernel
          kfreebsd_module_elf /freebsd@/boot/kernel/opensolaris.ko
          kfreebsd_module_elf /freebsd@/boot/kernel/zfs.ko
          kfreebsd_module /freebsd@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
          set kFreeBSD.vfs.root.mountfrom=zfs:freepool/freebsd
          set kFreeBSD.hw.psm.synaptics_support=1
}
menuentry "experimental GRUB" {
          search --set=root --label GRUB --hint hd0,msdos5
          multiboot /experimental/grub/i386-pc/core.img
}

menuentry "Fedora 16 installer" {
          search --set=root --label GRUB --hint hd0,msdos5
          linux /fedora/vmlinuz lang=en_US keymap=sg resolution=1280x800
          initrd /fedora/initrd.img
}
menuentry "Fedora rawhide installer" {
          search --set=root --label GRUB --hint hd0,msdos5
          linux /fedora/vmlinuz repo=ftp://mirror.switch.ch/mirror/fedora/linux/development/rawhide/x86_64 lang=en_US keymap=sg resolution=1280x800
          initrd /fedora/initrd.img
}
menuentry "Debian sid installer" {
          search --set=root --label GRUB --hint hd0,msdos5
          linux /debian/dists/sid/main/installer-amd64/current/images/hd-media/vmlinuz
          initrd /debian/dists/sid/main/installer-amd64/current/images/hd-media/initrd.gz
}
* Với windows uefi chúng ta tìm tới bootmgfw.efi
menuentry 'Windows 10' {
    search --fs-uuid --no-floppy --set=root FF44-56B0
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
* FF44-56B0 là UUID của phân vùng, nếu bạn dùng lệnh search --file thì sẽ có lúc, trên 1 máy tính khác có sẵn file bootmgfw.efi và chúng ta không biết là nó boot file nào. UUID của ổ đĩa, chúng ta có thể chạy thử grub2 trên giả lập và dùng lệnh "ls -l" để hiện thị UUID của phân vùng chúng ta muốn dùng. Lệnh ls –l sẽ liệt kê từ phân vùng cuối đến phân vùng đầu trên ổ đĩa, như hình dưới đây, ta nên xem dung lượng phân vùng và mã thứ tự để biết phân vùng cần chọn.

* Nếu bạn cài đặt efi trong môi trường bios sẽ bị báo lỗi, nhưng file efi của grub vẫn được tạo ra, khi đó, bạn có thể đổi tên grubx64.efi thành bootx64.efi và chép đè vào \efi\boot\bootx64.efi của windows.
* Khi cài đặt grub UEFI thì cũng đã tự động tạo thư mục grub cho BIOS rồi, cả grub uefi và grub bios đều dùng chung thư mục cấu hình bios, nên bạn chỉ cần điều chỉnh file grub.conf trong thư mục [ổ đĩa:]\[thư mục chứa grub]\grub là được. Các bạn cứ thêm đầy đủ các menuentry cho từng lựa chọn boot bios và uefi trong file grub.conf đó, khi boot trên máy tính, nếu bạn chọn menu boot này không được thì chọn menu boot kia là được.
5. Có thể tùy chỉnh màu sắc và hình nền cho menu boot bằng các thông số sau
- Hình ảnh để làm nền có kích thước 640x480px, dạng màu 8bit
- Trong file grub.conf cần phải khai báo các thông số và load module như sau.
            insmod gfxterm
            insmod png
            terminal_output gfxterm
            background_image -m stretch ${prefix}/wall.png
- Một số lệnh điều chỉnh menu
     color_normal=white/black
     menu_color_normal=white/black
     menu_color_highlight=green/black
Dưới đây là 1 file grub.conf mà tôi đã sửa lại cho dễ nhìn. Bạn copy vào file grub.conf của mình và chạy thử để xem thế nào.
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
            font="${prefix}/fonts/unicode.pf2"
fi

if loadfont $font ; then
            load_video
            insmod gfxterm
            insmod png
            terminal_output gfxterm
            background_image -m stretch ${prefix}/wall.png
            color_normal=white/black
            menu_color_normal=white/black
            menu_color_highlight=green/black
fi
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=15
else
  set timeout=15
fi

#BOOT ENTRY BEGIN

menuentry "Windows 7 BIOS" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos1)'
chainloader +1
}

menuentry 'Windows 7 efi' {
            insmod part_msdos
            insmod fat
    search --fs-uuid --no-floppy --set=root FF44-56B0
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
            source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
            source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

Chủ Nhật, 28 tháng 7, 2019

Một thời để nhớ với đầu karaoke Arirang

Những kỷ niệm thời tôi là 1 đứa trẻ, tính nhút nhát, giọng yếu như con gái và trong tuổi mới lớn tôi sợ hãi tất cả. Nhưng ngay từ nhỏ tôi đã có đam mê với âm nhạc, ban đầu chị em tôi chỉ nghe mấy ca sĩ năm 80 - 90 như Cẩm Ly, Đan Trường, Mỹ Tâm, Thanh Thảo... Và ghi chép vào sổ bìa cứng hát theo. Vui lắm.
Rồi chị vào đại học, chị mua đĩa nhạc tiếng Anh, tôi nghe đầu tiên là Britney Spears, hay biết bao nhiêu, rồi tôi nghe radio và yêu thích những diva nước ngoài. Celien Dion, Mariah Carey, Whitney Houston.... Tôi đòi chị mua cho đĩa Mariah Carey, tôi đặc biệt thích người ca sĩ này, và hát theo những kỹ thuật đó, tất nhiên là tôi tưởng nó hay nhưng không phải vậy.
Rồi tôi vào đại học, lúc đó chị tôi ra trường và có tiền lương nên tôi đòi mua dàn karaoke về hát. Có biết gì đâu, tôi mua đồ Kentech gì đó, haha, chỉ có 1 đĩa theo máy, nhưng tôi vẫn hát. Không biết sao, nhưng khi hát, tôi không còn nhút nhát mà tự tin ra hẳn, giọng tôi cũng thay đổi dần, không còn yếu ớt nữa.
Rồi tôi đi học đại học cũng dành dụm được tiền và sắm liền đầu karaoke arirang, vì lúc đó tôi học khôn ra rồi, tôi biết arirang còn thịnh hơn california nữa. Sướng lắm, tôi hát rất nhiều và dần dần quen với nhịp điệu, sau này bài hát nào tôi cũng hát được, chỉ cần nghe qua 1-2 lần và xử lý giọng cũng tinh tế hơn. Tôi rất cảm ơn những bài karaoke đã khiến tôi dạn dĩ trong cuộc sống, không có nó tôi chắc như 1 tên vô dụng nhút nhát. Lúc đó tôi mua là đầu ar-36m
Sau này tôi học được cách chép đĩa, nên ko cần mua đĩa mà cứ tải trên mạng rồi ghi ra đĩa mà dùng.
Tôi tự học lập trình và viết chương trình tra mã cho đầu 5 số arirang. Ban đầu cho java sau đó là android.
Tôi học lập trình cho vui thôi, và đam mê giải mã, rồi tôi giải mã đc file của arirang trên đầu smart box, lúc đó là vol 59, sau đó tới vol 62 thì arirang biết được bị giải mã nên dừng sản xuất bản cập nhật cho đầu karaoke này.
Sau này, tôi lại tiếp tục giải mã cho những đầu khác, cuối cùng thì tôi giải mã đc đến file của vol cuối cùng là 66. Tôi sợ rằng luật bản quyền sẽ bắt tôi xử lý nên tôi không công bố nữa và cũng muốn chờ đến nhiều vol rồi phát hành luôn không thôi arirang lại sửa sai nữa.
Tiếc là kể từ cuối năm 2018 đến nay, arirang không phát hành vol67 nữa. Đến tháng 7 năm 2019 thì tôi đọc được maseco đã rút chân ra khỏi mảng điện tử, kết thúc chặng đường karaoke sôi nổi của arirang tại Việt Nam. Có lẽ đó là 1 kết thúc buồn và đáng nhớ. Dù sao cũng cảm ơn đến Ariang đã đem đến những giải khuây thật tuyệt.
 ARIRANG 
https://vnexpress.net/kinh-doanh/cuoc-thao-chay-cua-ong-chu-thuong-hieu-karaoke-arirang-3952297.html?espv=1

Thứ Ba, 7 tháng 5, 2019

(Autoit) Lấy danh sách những file có trong thư mục

Tôi thường tải 1 loạt file phim về từ trên mạng, và tôi không đặt tên 1 cách khoa học, khiến cho chúng lẫn lộn, nếu có cách nào có thể lấy danh sách 1 loạt file đó, sau đó tôi sẽ dùng Excel để tạo lệnh đổi tên cho nhanh.
Tôi viết 1 chương trình để lấy danh sách tên như sau (Autoit)
===================================================
#include <File.au3>
#include <Array.au3>

$path=@WorkingDir
RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\dir2list")
RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\dir2list","","REG_SZ","=>Create List of filename (ls.txt)")
RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\dir2list\command")
RegWrite("HKEY_CLASSES_ROOT\Directory\Background\shell\dir2list\command","","REG_SZ",""""&@ScriptFullPath&"""")
;RunWait(@comSpec&" /c echo "&@WorkingDir&" & pause","",@SW_SHOW)
if $cmdline[0] > 0 then
$path=$cmdLine[1]
endif
Local $af
$af=_FileListToArray($path,default,1)
$dt=""
for $i = 1 to $af[0]
   $fn=$af[$i]
   ConsoleWrite($fn&@lf)
   $dt = $dt & $fn & @CRLF
next

$fh=FileOpen($path&"\ls.txt",$FO_OVERWRITE)
Filewrite($fh,$dt)
Fileclose($fh)
================================================
Và như vậy, khi dùng autoit để tạo file, chạy file lần đầu tiên, nó sẽ thêm vào menu chuột phải 1 lệnh để tạo danh sách file
Chỉ cần chọn nó, 1 file ls.txt sẽ hiện ra trong thư mục, và đó là danh sách những file ở thư mục đó.
Download dir_to_list