|
|
- ### Partition scheme // UEFI settings for NVMe SSD + HDD
-
- #### Features
-
- - Boot partition is located at NVMe SSD (1st partition, EFI, FAT32)
-
- - OS is located at SSD (2nd partition, Linux, ext4)
-
- - Home folders on HDD (including `root`, ext4)
-
- --------------------------
-
- - Uses Syslinux (GRUB2 instruction have not been covered here)
-
- - Only Arch Linux installed
-
- - No Windows or any other OSes installed
-
- --------------------------
-
- - Various parts of the file system mounted in HDD (/var folder) in order to reduce redundant write operations
-
- - `/tmp` using RAM as a mounting point (total RAM: 16GB)
-
- - Swap is a file and is located at `/swap/swapfile` (Yes, this is against FHS)
-
- - For creating a swapfile, consult [Arch Linux wiki page](https://wiki.archlinux.org/index.php/Swap#Swap_file)
-
- - You can create your swapfile on old BIOS/HDD partition, if you find it more comfortable.
-
- --------------------------
-
- - **NOTE:** When you create UEFI-based boot partition, you don't need to run `extlinux --install` command (unlike on BIOS-based boot partition)
-
- - **NOTE:** You can't run `efibootmgr` command when you use a non-EFI file system (such as BIOS / HDD), as referred on some websites. You can only do this on EFI file system.
-
- - UEFI partition size is 256 MiB in my installation, rest of the SSD (~250 GiB) is for the Arch Linux OS
-
- - My method takes advantage of [bind mounting feature](https://wiki.archlinux.org/index.php/EFI_system_partition#Using_bind_mount)
-
- -------------------------------
-
- #### Partition scheme
-
- - Samsung EVO 960 250GB is referred as `/dev/nvme0n1`
-
- - Additional 1TiB HDD is referred as `/dev/sda`
-
- ```
- Disk /dev/nvme0n1: 232.9 GiB, 250059350016 bytes, 488397168 sectors
- Units: sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 512 bytes
- I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disklabel type: gpt
- Disk identifier: B4ED4BFE-7300-4B6E-8DE4-74D91681A89C
-
- Device Start End Sectors Size Type
- /dev/nvme0n1p1 2048 526335 524288 256M EFI System
- /dev/nvme0n1p2 526336 488396799 487870464 232.7G Linux filesystem
-
-
- Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
- Units: sectors of 1 * 512 = 512 bytes
- Sector size (logical/physical): 512 bytes / 4096 bytes
- I/O size (minimum/optimal): 4096 bytes / 4096 bytes
- Disklabel type: dos
- Disk identifier: 0x70fa94f7
-
- Device Boot Start End Sectors Size Id Type
- /dev/sda1 * 2048 1953525167 1953523120 931.5G 83 Linux
- ```
-
- -------------------------------
-
- #### Samsung EVO 960 /dev/nvme0n1p1 file system contents (EFI partition)
-
- ```
- . - EFI partition mount point
- └── EFI - subfolder
- ├── BOOT -subfolder with cloned contents from ../syslinux folder (temporarily needed for the first UEFI boot if you initially create EFI partition on BIOS/DOS based Linux OS)
- │ ├── bootx64.efi - same than ../syslinux/syslinux.efi
- │ ├── cat.c32
- │ ├── chain.c32
- │ ├── cmd.c32
- │ ├── cmenu.c32
- │ ├── config.c32
- │ ├── cptime.c32
- │ ├── cpu.c32
- │ ├── cpuid.c32
- │ ├── cpuidtest.c32
- │ ├── debug.c32
- │ ├── dhcp.c32
- │ ├── disk.c32
- │ ├── dmi.c32
- │ ├── dmitest.c32
- │ ├── elf.c32
- │ ├── ethersel.c32
- │ ├── gfxboot.c32
- │ ├── gpxecmd.c32
- │ ├── hdt.c32
- │ ├── hexdump.c32
- │ ├── host.c32
- │ ├── ifcpu64.c32
- │ ├── ifcpu.c32
- │ ├── ifmemdsk.c32
- │ ├── ifplop.c32
- │ ├── kbdmap.c32
- │ ├── kontron_wdt.c32
- │ ├── ldlinux.e64
- │ ├── lfs.c32
- │ ├── libcom32.c32
- │ ├── libgpl.c32
- │ ├── liblua.c32
- │ ├── libmenu.c32
- │ ├── libutil.c32
- │ ├── linux.c32
- │ ├── ls.c32
- │ ├── lua.c32
- │ ├── mboot.c32
- │ ├── meminfo.c32
- │ ├── menu.c32
- │ ├── pci.c32
- │ ├── pcitest.c32
- │ ├── pmload.c32
- │ ├── poweroff.c32
- │ ├── prdhcp.c32
- │ ├── pwd.c32
- │ ├── pxechn.c32
- │ ├── reboot.c32
- │ ├── rosh.c32
- │ ├── sanboot.c32
- │ ├── sdi.c32
- │ ├── sysdump.c32
- │ ├── syslinux.c32
- │ ├── syslinux.cfg
- │ ├── vesa.c32
- │ ├── vesainfo.c32
- │ ├── vesamenu.c32
- │ ├── vpdtest.c32
- │ ├── whichsys.c32
- │ └── zzjson.c32
- ├── initramfs-linux-fallback.img - fallback initramfs image
- ├── initramfs-linux.img - initramfs image
- ├── syslinux - subfolder with cloned contents from /usr/lib/syslinux/efi64 folder (you have an existing syslinux installation?)
- │ ├── cat.c32
- │ ├── chain.c32
- │ ├── cmd.c32
- │ ├── cmenu.c32
- │ ├── config.c32
- │ ├── cptime.c32
- │ ├── cpu.c32
- │ ├── cpuid.c32
- │ ├── cpuidtest.c32
- │ ├── debug.c32
- │ ├── dhcp.c32
- │ ├── disk.c32
- │ ├── dmi.c32
- │ ├── dmitest.c32
- │ ├── elf.c32
- │ ├── ethersel.c32
- │ ├── gfxboot.c32
- │ ├── gpxecmd.c32
- │ ├── hdt.c32
- │ ├── hexdump.c32
- │ ├── host.c32
- │ ├── ifcpu64.c32
- │ ├── ifcpu.c32
- │ ├── ifmemdsk.c32
- │ ├── ifplop.c32
- │ ├── kbdmap.c32
- │ ├── kontron_wdt.c32
- │ ├── ldlinux.e64
- │ ├── lfs.c32
- │ ├── libcom32.c32
- │ ├── libgpl.c32
- │ ├── liblua.c32
- │ ├── libmenu.c32
- │ ├── libutil.c32
- │ ├── linux.c32
- │ ├── ls.c32
- │ ├── lua.c32
- │ ├── mboot.c32
- │ ├── meminfo.c32
- │ ├── menu.c32
- │ ├── pci.c32
- │ ├── pcitest.c32
- │ ├── pmload.c32
- │ ├── poweroff.c32
- │ ├── prdhcp.c32
- │ ├── pwd.c32
- │ ├── pxechn.c32
- │ ├── reboot.c32
- │ ├── rosh.c32
- │ ├── sanboot.c32
- │ ├── sdi.c32
- │ ├── sysdump.c32
- │ ├── syslinux.c32
- │ ├── syslinux.cfg
- │ ├── syslinux.efi
- │ ├── vesa.c32
- │ ├── vesainfo.c32
- │ ├── vesamenu.c32
- │ ├── vpdtest.c32
- │ ├── whichsys.c32
- │ └── zzjson.c32
- └── vmlinuz-linux - kernel image
-
- 3 directories, 125 files
- ```
-
- - Above files have manually been copied from an existing Arch Linux installation (HDD) to newly formatted (FAT32) UEFI partition on SSD
-
- - mounted to `/mnt/boot_efi` in my system (for file accessibility reasons)
-
- - mounting point doesn't really matter when you create FAT32 EFI file system. The only thing you need to pay attention to is to keep all necessary boot files/folders as they are presented above
-
- - **NOTE:** EFI partition doesn't need to be mounted unless you want to access EFI partion files once the system has booted up
-
- - **NOTE:** EFI partition must be mounted only when you do file transfer operations or boot configurations (obviously you need to get access to `/boot`...)
-
- -------------------------------
-
- #### Samsung EVO 960 /dev/nvme0n1p2 & /dev/sda1 contents (OS + HDD partition)
-
- ```
- bin
- boot - in reality, this is located at /mnt/boot_efi. See below for more. I use bind mounting, see /etc/fstab contents below
- dev
- etc
- home - in reality, this is located at /dev/sda1. See below for more. I use bind mounting, see /etc/fstab contents below
- lib
- lib64
- lost+found
- media
- mnt
- │ ├── boot_efi - mounted /dev/nvme0n1p1 EFI partition, binded to /boot path. Files of this folder have been defined above
- │ └── hdd - HDD - mounted /dev/sda1 HDD partition
- └── home - user files are located here in reality
- └── root - root home folder is located here in reality
- └── var - all files written to /var are actually located here, and binded to /var path
- opt
- proc
- root
- run
- sbin
- srv
- swap
- sys
- tmp
- usr
- var - in reality, this is located at /dev/sda1. See above for more. I use bind mounting, see /etc/fstab contents below
- ```
-
- -------------------------------
-
- #### File contents
-
- /etc/fstab:
-
- ```
- #
- # /etc/fstab: static file system information
- #
- # <file system> <dir> <type> <options> <dump> <pass>
- #
- #########################################
- # M.2 - SAMSUNG 960 250GB
-
- # Root system
- UUID=2d865053-2f72-44b2-926f-114221785595 / ext4 defaults,noatime,discard 0 1
-
- #########################################
- # SATA2 - WESTERN DIGITAL 1TB
- UUID=058bf9ee-eb9d-47d0-80c9-57ca83b31449 /mnt/hdd ext4 defaults,discard 0 2
-
- # Home folders
- /mnt/hdd/home /home none bind 0 0
- /mnt/hdd/root /root none bind 0 0
-
- # Swap memory file
- /mnt/hdd/swap /swap none bind 0 0
- /swap/swapfile none swap defaults 0 0
-
- # var folder
- /mnt/hdd/var /var none bind 0 0
-
- #########################################
- # Boot files
- UUID=C23A-2C5F /mnt/boot_efi vfat defaults,dmask=0022,fmask=0133 0 0
- /mnt/boot_efi/EFI /boot none bind 0 0
-
- #########################################
- # temporary folders
- tmpfs /tmp tmpfs size=10240M,nr_inodes=500k 0 0
- ```
-
- /mnt/boot_efi/EFI/syslinux/syslinux.cfg:
-
- ```
- # Config file for Syslinux -
- # /boot/syslinux/syslinux.cfg
- #
- # Comboot modules:
- # * menu.c32 - provides a text menu
- # * vesamenu.c32 - provides a graphical menu
- # * chain.c32 - chainload MBRs, partition boot sectors, Windows bootloaders
- # * hdt.c32 - hardware detection tool
- # * reboot.c32 - reboots the system
- #
- # To Use: Copy the respective files from /usr/lib/syslinux to /boot/syslinux.
- # If /usr and /boot are on the same file system, symlink the files instead
- # of copying them.
- #
- # If you do not use a menu, a 'boot:' prompt will be shown and the system
- # will boot automatically after 5 seconds.
- #
- # Please review the wiki: https://wiki.archlinux.org/index.php/Syslinux
- # The wiki provides further configuration examples
-
- DEFAULT arch
- PROMPT 0 # Set to 1 if you always want to display the boot: prompt
- TIMEOUT 50
- # You can create syslinux keymaps with the keytab-lilo tool
- #KBDMAP de.ktl
-
- # Menu Configuration
- # Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux
- UI menu.c32
- #UI vesamenu.c32
-
- # Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
- MENU TITLE Boot Menu
- #MENU BACKGROUND splash.jpg
- MENU COLOR border 30;44 #40ffffff #a0000000 std
- MENU COLOR title 1;36;44 #9033ccff #a0000000 std
- MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
- MENU COLOR unsel 37;44 #50ffffff #a0000000 std
- MENU COLOR help 37;40 #c0ffffff #a0000000 std
- MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
- MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
- MENU COLOR msg07 37;40 #90ffffff #a0000000 std
- MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
- #MENU RESOLUTION 1920 1080
-
- #Clear the screen when exiting the menu
- MENU CLEAR
-
- # boot sections follow
- #
- # TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
- # 895 = 1920x1080x32 framebuffer
- #-*
-
- LABEL arch
- MENU LABEL Arch Linux
- LINUX ../vmlinuz-linux
- APPEND init=/usr/lib/systemd/systemd root=UUID=2d865053-2f72-44b2-926f-114221785595 rw vga=895 acpi_osi="!Windows 2015" acpi_osi=Linux vm.swappiness=10 net.ifnames=0 biosdevname=0
- INITRD ../initramfs-linux.img
-
- LABEL archshell
- MENU LABEL Arch Linux (shell)
- LINUX ../vmlinuz-linux
- APPEND init=/usr/lib/systemd/systemd root=UUID=2d865053-2f72-44b2-926f-114221785595 rw vga=895 systemd.unit=multi-user.target vm.swappiness=10 net.ifnames=0 biosdevname=0
- INITRD ../initramfs-linux.img
-
- LABEL archfallback
- MENU LABEL Arch Linux Fallback
- LINUX ../vmlinuz-linux
- APPEND init=/usr/lib/systemd/systemd root=UUID=2d865053-2f72-44b2-926f-114221785595 rw vga=895 acpi_osi="!Windows 2015" acpi_osi=Linux vm.swappiness=10 net.ifnames=0 biosdevname=0
- INITRD ../initramfs-linux-fallback.img
-
- LABEL archfallback-rescue
- MENU LABEL Arch Linux Fallback (rescue mode)
- LINUX ../vmlinuz-linux
- APPEND init=/usr/lib/systemd/systemd root=UUID=2d865053-2f72-44b2-926f-114221785595 vga=895 systemd.unit=multi-user.target vm.swappiness=10 net.ifnames=0 biosdevname=0
- INITRD ../initramfs-linux-fallback.img
-
- #LABEL windows
- # MENU LABEL Windows
- # COM32 chain.c32
- # APPEND hd0 1
-
- LABEL hdt
- MENU LABEL HDT (Hardware Detection Tool)
- COM32 hdt.c32
-
- LABEL reboot
- MENU LABEL Reboot
- COM32 reboot.c32
-
- LABEL poweroff
- MENU LABEL Poweroff
- COM32 poweroff.c32
-
- ```
-
- -------------------------------
|