Terminus
:setfont ter-d22b
alias lsblk="lsblk -o NAME,FSTYPE,SIZE,UUID,LABEL,MOUNTPOINTS"
lsblk
/dev/mapper/myvg-root = /dev/myvg/root
/dev/mapper/myvg-home = /dev/myvg/home
gdisk /dev/nvme0n1
Command (? for help): n Partition number (1-128, default 1): First sector (34-62914526, default = 2048) or {+-}size{KMGTP}: Last sector (2048-62914526, default = 62912511) or {+-}size{KMGTP}: +260M Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): ef00 Changed type of partition to 'EFI system partition'
Command (? for help): n Partition number (2-128, default 2): First sector (34-62914526, default = 534528) or {+-}size{KMGTP}: Last sector (534528-62914526, default = 62912511) or {+-}size{KMGTP}: +512M Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to ‘Linux filesystem’
Command (? for help): n Partition number (3-128, default 3): First sector (34-62914526, default = 1583104) or {+-}size{KMGTP}: Last sector (1583104-62914526, default = 62912511) or {+-}size{KMGTP}: 62914526 Current type is 8300 (Linux filesystem) Hex code or GUID (L to show codes, Enter = 8300): 8309 Changed type of partition to ‘Linux LUKS’
Command (? for help): p Disk /dev/nvme0n1: 62914560 sectors, 30.0 GiB Model: QEMU NVMe Ctrl Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 9B38641F-9465-43B0-8F1D-3F28D94A670B Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 62914526 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name 1 2048 534527 260.0 MiB EF00 EFI system partition 2 534528 1583103 512.0 MiB 8300 Linux filesystem 3 1583104 62914526 29.2 GiB 8309 Linux LUKS
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!
Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/nvme0n1. The operation has completed succesfully.
ESP
yang akan menempatkan bootloader EFI
(saya guna GRUB2):mkfs.fat -F 32 -n ESP /dev/nvme0n1p1
BOOT
(mengikut format masing-masing).(LVM2 + XFS)
mkfs.xfs -L BOOT /dev/nvme0n1p2
(Btrfs)
mkfs.btrfs -L BOOT -n 32k /dev/nvme0n1p2
cryptsetup luksFormat /dev/nvme0n1p3
WARNING! ======== This will overwrite data on /dev/nvme0n1p3 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/nvme0n1p3: _ Verify passphrase: _ cryptsetup luksFormat /dev/nvme0n1p3 19.78s user 0.71s system 5% cpu 6:49.45 total
cryptarchvm
. Hendak bagi nama apa pun kepada peranti itu, terpulanglah pada keputusan masing-masing.cryptsetup open /dev/nvme0n1p3 cryptarchvm
Enter passphrase for /dev/nvme0n1p3: _ cryptsetup open /dev/nvme0n1p3 cryptarchvm 6.54s user 0.33s system 10% cpu 3.327 total
(LVM2 + XFS)
LUKS
ini.pvcreate /dev/mapper/cryptarchvm
vgcreate myvg /dev/mapper/cryptarchvm
lvcreate -L 10G myvg -n root
lvcreate -l +100%FREE myvg -n home
mkfs.xfs -L ROOT /dev/myvg/root
mkfs.xfs -L HOME /dev/myvg/home
mount -m /dev/myvg/root /mnt/arch
mount -m /dev/myvg/home /mnt/arch/home
mount -m /dev/nvme0n1p2 /mnt/arch/boot
mount -m /dev/nvme0n1p1 /mnt/arch/boot/efi
(Btrfs)
LUKS
itu dan jalankan langkah-langkah berikutnya; ② mount root partition, ③ tambah subvolumes btrfs
, ④ unmount root partitition tersebut sebelum kemudiannya, ⓹ mount kesemua subvolumes berkenaan.mkfs.btrfs -L ARCH -n 32k /dev/mapper/cryptarchvm
mount -m -o defaults,compress=zstd /dev/mapper/cryptarchvm /mnt/arch
btrfs subvolume create /mnt/arch/@
btrfs subvolume create /mnt/arch/@home
btrfs subvolume create /mnt/arch/@snapshots
umount /mnt/arch
mount -o defaults,compress=zstd,ssd,subvol=@ /dev/mapper/cryptarchvm /mnt/arch
mount -m -o defaults,compress=zstd,ssd,subvol=@home /dev/mapper/cryptarchvm /mnt/arch/home
mount -m -o defaults,compress=zstd,ssd,subvol=@snapshots /dev/mapper/cryptarchvm /mnt/arch/.snapshots
mount -m -o defaults,compress=zstd,ssd /dev/nvme0n1p2 /mnt/arch/boot
mount -m /dev/nvme0n1p1 /mnt/arch/boot/efi
Seterusnya:
ParallelDownloads
dalam /etc/pacman.conf
. Muat turun selari ini tidak ditetapkan secara lalai maka perlu di-enabled terlebih dahulu.arch-chroot
:(LVM2 + XFS)
pacstrap -K /mnt/arch base base-devel linux lvm2 xfsprogs vim terminus-font efibootmgr grub amd-ucode gptfdisk openssh
(Btrfs)
pacstrap -K /mnt/arch base base-devel linux btrfs-progs vim terminus-font efibootmgr grub amd-ucode gptfdisk openssh
genfstab -U /mnt/arch >> /mnt/arch/etc/fstab
arch-chroot /mnt/arch
ln -sf /usr/share/zoneinfo/Asia/Kuala_Lumpur /etc/localtime
hwclock --systohc
ArchWiki
.systemctl enable systemd-timesyncd.service
vim /etc/locale.gen #nyahkomen 'locale' yang dikehendaki sebelum jana
locale-gen
echo 'LANG=en_US.UTF-8' >> /etc/locale.conf
echo 'FONT=ter-d22b' >> /etc/vconsole.conf
echo 'archlinuxvm' >> /etc/hostname
vim /etc/mkinitcpio.conf
(untuk LVM2 + XFS) HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck)
(untuk Btrfs) BINARIES=(btrfs setfont) HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
mkinitcpio -P
passwd
vim /etc/default/grub
GRUB_CMDLINE_LINUX="cryptdevice=UUID=UUID-peranti-LUKS:cryptarchvm" GRUB_ENABLE_CRYPTODISK=y
grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot/efi --bootloader-id=GRUB --recheck
Installing for x86_64-efi platform. Installation finished. No error reported.
/boot/efi
: ① EFI dan juga ② grub. Jana fail konfig grub dengan perintah berikut. Saya abaikan amaran berkenaan os-prober kerana memang tidak ada menggunakan sistem selainnya.grub-mkconfig -o /boot/efi/grub/grub.cfg
Generating grub configuration file ... Found linux image: /boot/vmlinuz-linux Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux.img Found fallback initrd image(s) in /boot: amd-ucode.img initramfs-linux-fallback.img Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. Adding boot menu entry for UEFI Firmware Settings ... done
1menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d696445d-15d5-4591-bd60-b7b1d707232e' {
2 load_video
3 set gfxpayload=keep
4 insmod gzio
5 insmod part_gpt
6 insmod btrfs
7 search --no-floppy --fs-uuid --set=root fb49ee31-3c1a-4fee-ac37-6f6b30a4100f
8 echo 'Loading Linux linux ...'
9 linux /vmlinuz-linux root=UUID=d696445d-15d5-4591-bd60-b7b1d707232e rw rootflags=subvol=@ cryptdevice=UUID=d166095a-9b06-4e4a-b4c7-62e6504c3cb9:cryptarchvm loglevel=3 quiet
10 echo 'Loading initial ramdisk ...'
11 initrd /amd-ucode.img /initramfs-linux.img
12}
Untuk menyambung jaringan di dalam sistem tetamu ini, terdapat dua medium yang menyediakan Resolusi Domain Name (DNS):-
systemd-networkd
dan systemd-resolved
yang menurut ArchWiki
ialah cara yang paling ringkas untuk VM. Terasa seperti telah ditipu pula sebab berdasarkan pembelajaran sendiri, kaedahnya tak adalah ringkas mana.systemctl enable systemd-networkd.service
systemctl enable systemd-resolved.service
exit
cp -r /etc/systemd/system/systemd-networkd-wait-online.service.d /mnt/arch/etc/systemd/system
cp -r /etc/systemd/network /mnt/arch/etc/systemd
arch-chroot
): Saya rasa, kaedah kedua ini lebih ringkas iaitu dengan menggunakan klien dhcpcd
. Pasang pakej ini dan enable sahaja servisnya. Dulu-dulu pun memang cara inilah yang saya aplikasikan. Tetapi sekarang saya cuba untuk membuka hati kepada kebanyakan servis systemd
yang ada memandangkan inilah sistem init
yang dijadikan sebagai tetapan lalai oleh pengurusan sistem utama saya ini.pacman -S dhcpcd
systemctl enable dhcpcd.service
exit
umount -R /mnt/arch
reboot
stub-resolv.conf
ke /etc/resolv.conf
(hanya seandainya menggunakan servis systemd-resolved
untuk memperoleh Resolusi Domain Name sebagaimana yang telah saya terangkan di atas. Sekiranya menggunakan klien dhcpcd
, langkau perkara ini);ln -rsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
timedatectl
Local time: Tue 2022-06-28 18:05:45 +08 Universal time: Tue 2022-06-28 10:05:45 UTC RTC time: Tue 2022-06-28 10:05:45 Time zone: Asia/Kuala_Lumpur (+08, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no
Jangan lupa ping mana-mana url untuk memastikan sambungan jaringan berjaya diperolehi.
Katakanlah kita sudah menggunakan opsyen pertama tetapi mahu beralih kepada dhcpcd
, buat langkah-langkah di bawah sebagai root (pastikan pakej dhcpcd sudah dipasang terlebih dahulu sebelum menjalankan ini).
unlink /etc/resolv.conf
systemctl stop systemd-resolved.service
systemctl stop systemd-networkd.service
systemctl disable systemd-resolved.service
systemctl disable systemd-networkd.service
systemctl enable --now dhcpcd.service
Xorg
di antara sistem VM dengan sistem sebenar. Begitu juga terdapat beberapa pakej / perkara yang boleh dilangkau apabila di dalam VM dek perkongsian peranti di antara keduanya.iwd
, NetworkManager
dan lain-lain.xf86-video-driver
untuk grafik kerana VM menggunakan GPU virtio
yang dikesan secara automatik.XFCE4
(Sebagai root):
touchpad
, sebahagian pakej daripada grup xorg
, ejen spice
bagi kemudahan copy paste antara kedua-dua sistem dan pakej xsel
untuk clipboard (pakej alternatif ialah xclip
) serta xcompmgr
sebagai pengurus komposit.pacman -Syu xf86-input-libinput xorg-server xorg-apps xorg-xinit xfce4 spice-vdagent qemu-guest-agent xsel xcompmgr
Xorg
untuk disalin fail konfignya ke direktori /etc/X11
.Xorg -configure
cp xorg.conf.new /etc/X11/xorg.conf
(Sebagai pengguna) ~Tambah user dengan arahan useradd dan masukkan namanya ke dalam fail sudoers (visudo
):
xinitrc
ke direktori rumah pengguna dan jadikan fail berkenaan boleh dilaksanakan (executable).cp /etc/X11/xinit/xinitrc .xinitrc
chmod +rx .xinitrc
.xinitrc
itu di bahagian paling bawah sekali dan komen baris-baris yang tidak berkenaan:vim .xinitrc
xcompmgr -c & exec startxfce4
Xorg
.startx