2023年11月16日 星期四

新硬碟在 uefi bios 的主機上, 安裝 linux mint livecd, 預留空間存放 windows10 安裝檔

1. 上  Linux mint 官網下載 iso 檔:  https://linuxmint.com 將它燒錄成 DVD,  設定 UEFI BIOS 從 DVD 開機

2. 開啟終端機,  在 nvme SSD 上產生 GPT, ESP 用來安裝 grub2 啟動多重作業系統, 8G NTFS 分區先暫存 Windows 10 安裝檔, EXT4 分區用來裝 Linux 作業系統,先作好這 4 個分割區(BBP + ESP + NTFS + EXT4), 後續視需要再添加(若要安裝 Windows 10 作業系統,大概還需要 NTFS 80G 的空間 ).
sudo gdisk /dev/nvme0n1
    partition 1: 16M BBP  (0xEF02) BIOS boot partition
    partition 2: 4G  ESP  (0xEF00) EFI system partition
    partition 3: 8G  NTFS (0x0700) Microsoft basic data
    partition 4: 40G EXT4 (0x8300) Linux filesystem
sudo partprobe /dev/nvme0n1

3. 列出分割區資訊
lsblk -oname,label,size,uuid && df

4. 格式化各分割區, 並設定標籤, 將來方便管理
sudo mkfs.fat  /dev/nvme0n1p2 -n ESP -F 32
sudo mkfs.ntfs /dev/nvme0n1p3 -L NTFS
sudo mkfs.ext4 /dev/nvme0n1p4 -L LINUX

5. 掛上 ESP
sudo mkdir /mnt/nvme0n1p2 && sudo mount /dev/nvme0n1p2 /mnt/nvme0n1p2

6. 安裝 grub2 到 ESP
sudo grub-install --root-directory=/mnt/nvme0n1p2 /dev/nvme0n1

7.  可以將 livecd 複製存到 ESP 分區的目錄 /boot 裡面, 並編輯 ESP 分區內 /boot/grub/grub.cfg 檔案, 之後就能移除 DVD, 改從 SSD 快速開機
sudo dd if=/dev/loop0 of=/mnt/nvme0n1p2/boot/linuxmint21_2.iso
sudo xed /mnt/nvme0n1p2/boot/grub/grub.cfg
######## grub.cfg  檔案內容, espUUID 記得要修改!!!
    set timeout=3
    set default=0
    menuentry "Linux Mint 21.2 livecd ISO" {
        insmod iso9660
        set espUUID=D9E6-44CC
        search --no-floppy --fs-uuid --set=root $espUUID
        set isoFile=/boot/linuxmint21_2.iso
        loopback loop $isoFile
        linux  (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isoFile locale=zh_TW.UTF-8
        initrd (loop)/casper/initrd.lz
    }
######## grub.cfg 檔案結尾
 
8. 清除快取並釋放 ESP 分區, 重新開機 (設定好 UEFI BIOS boot source 從  SSD 開機)
sync && sudo umount /mnt/nvme0n1p2 && reboot

9. Linux 開完機, 可以點選桌面的安裝圖示, 將整個作業系統安裝到 EXT4 分區, 只要修改 grub.cfg, 添加啟動 Linux 項目, 其中 ext4UUID 必需修正 !!!
menuentry 'Linux Mint 21.2 Cinnamon' --hotkey=1 {
    set ext4UUID=c5bfc0ce-3f68-4bf5-9eb2-8344ff02cd03
    search --no-floppy --fs-uuid --set=root $ext4UUID
    linux    /boot/vmlinuz-5.15.0-76-generic root=UUID=$ext4UUID ro  quiet splash
    initrd    /boot/initrd.img-5.15.0-76-generic
}

10. 複製 Windows10 安裝光碟的內容, 用 SSD 也能快速安裝 Windows10
sudo mkdir /mnt/iso /mnt/nvme0n1p3
sudo mount -o loop ~/Downloads/windows10.iso /mnt/iso
sudo mount /dev/nvme0n1p3    /mnt/nvme0n1p3
sudo cp -r /mnt/iso/boot     /mnt/nvme0n1p3
sudo cp -r /mnt/iso/efi      /mnt/nvme0n1p3
sudo cp -r /mnt/iso/sources  /mnt/nvme0n1p3
sudo cp -r /mnt/iso/support  /mnt/nvme0n1p3
sudo cp /mnt/iso/bootmgr     /mnt/nvme0n1p3
sudo cp /mnt/iso/bootmgr.efi /mnt/nvme0n1p3
sudo cp /mnt/iso/setup.exe /mnt/nvme0n1p3
sudo cp /mnt/iso/autorun.inf /mnt/nvme0n1p3
sync

11. 修改 grub.cfg, 加入安裝 Windows10 選項, 其中 ntfsUUID 需修正 !!!
    menuentry "安裝 Windows 10" {
        insmod part_gpt
        set ntfsUUID=1AFC6C0B6ED4A89E
        search --no-floppy --fs-uuid --set=root $ntfsUUID
        chainloader /efi/boot/bootx64.efi
    }

12. 當安裝完 Windows10, 修改 grub.cfg, 可以自行添加啟動 Windows10 選項
    menuentry "啟動 Windows 10" {
        insmod part_gpt
        set espUUID=D9E6-44CC
        search --no-floppy --fs-uuid --set=root $espUUID
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    }

P.S. 若安裝完 Windows10 或是 Linux mint, 導致無法透過原先的 grub2 開機, 可以調整 UEFI BIOS 開機選項, 或是乾脆使用 Linux mint 開機光碟, 進入 Linux 系統後, 再重新植入 grub2:
    sudo mkdir /mnt/nvme0n1p2
    sudo mount /dev/nvme0n1p2 /mnt/nvme0n1p2
    sudo grub-install --root-directory=/mnt/nvme0n1p2 /dev/nvme0n1


簡單 c 程式碼, 根據五行八卦相生相剋推斷吉凶

#include "stdio.h" // 五行: //               木2 //      水1           火3 //         金0     土4 // // 先天八卦 vs 五行 //                    ...