The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "User:Pnoecker/standard install"
(initial commit, prepping to strip luks, and turn into a generic LVM2 install, which can hopefully become official install.) |
(stripped to standard LVM2 install) |
||
Line 1: | Line 1: | ||
This howto describes how to setup | This howto describes how to setup a generic LVM2 install. It is a standalone installation walk through, loosely based on the official installations finished product. | ||
{{warning| You may try this installation method at your own risk! Please note: this guide is outside of the official installation documentation, and cannot be supported. If you choose to use this, we assume you know what you are doing and you are on your own!}} | {{warning| You may try this installation method at your own risk! Please note: this guide is outside of the official installation documentation, and cannot be supported. If you choose to use this, we assume you know what you are doing and you are on your own!}} | ||
== Prepare the hard drive and partitions == | == Prepare the hard drive, and partitions == | ||
*Before you begin, make sure you are partitioning the correct drive. For the rest of this tutorial, we will be using /dev/sdX as a placeholder. | *Before you begin, make sure you are partitioning the correct drive. For the rest of this tutorial, we will be using /dev/sdX as a placeholder. | ||
{{console|body= | {{console|body= | ||
Line 12: | Line 12: | ||
\#├─sdX2 8:2 0 8G 0 esp /efi | \#├─sdX2 8:2 0 8G 0 esp /efi | ||
\#└─sdX3 8:3 0 1.8T 0 part | \#└─sdX3 8:3 0 1.8T 0 part | ||
\# ├─main-boot 254:0 0 500G 0 lvm /root | |||
\# ├─main-swap 254:0 0 500G 0 lvm [swap] | |||
\# ├─main-root 254:0 0 500G 0 lvm / | \# ├─main-root 254:0 0 500G 0 lvm / | ||
}} | }} | ||
Line 70: | Line 71: | ||
Partition Number: ##i##2 ↵ | Partition Number: ##i##2 ↵ | ||
First sector: ##i##↵ | First sector: ##i##↵ | ||
Last sector: ##i##+ | Last sector: ##i##+32M ↵ | ||
Hex Code: ##i##EF00 ↵ | Hex Code: ##i##EF00 ↵ | ||
}} | }} | ||
'''Create partition which will be | '''Create partition which will be our LVM2 virtual partition''': | ||
{{console|body= | {{console|body= | ||
Line 97: | Line 98: | ||
{{console|body=# ##i##mkfs.vfat -F 32 /dev/sdX2}} | {{console|body=# ##i##mkfs.vfat -F 32 /dev/sdX2}} | ||
'''Create | '''Create LVM2 volume''' | ||
'''Create LVM volume for /, /boot, and swap''' | |||
'''Create LVM | |||
{{console|body=# ##i##pvcreate /dev/mapper/root}} | {{console|body=# ##i##pvcreate /dev/mapper/root}} | ||
{{console|body=# ##i##vgcreate vg /dev/mapper/root}} | {{console|body=# ##i##vgcreate vg /dev/mapper/root}} | ||
{{console|body=# ##i##lvcreate -L256M --name boot vg}} | |||
{{Note|Replace "2G" with the amount of swap you would like to make available.}} | {{Note|Replace "2G" with the amount of swap you would like to make available.}} | ||
{{console|body=# ##i##lvcreate -L2G --name swap vg}} | {{console|body=# ##i##lvcreate -L2G --name swap vg}} | ||
Line 116: | Line 110: | ||
'''Create filesystems on LVM volumes''' | '''Create filesystems on LVM volumes''' | ||
*boot: | |||
{{console|body=# ##i##mkfs.xfs /dev/mapper/vg-boot}} | |||
*swap: | |||
{{console|body=# ##i##mkswap /dev/mapper/vg-swap}} | {{console|body=# ##i##mkswap /dev/mapper/vg-swap}} | ||
*for ext4: | *for ext4: | ||
Line 127: | Line 124: | ||
==Mount filesystems== | ==Mount filesystems== | ||
{{console|body=# ##i##mount /dev/mapper/vg-root /mnt/funtoo}} | {{console|body=# ##i##mount /dev/mapper/vg-root /mnt/funtoo}} | ||
{{console|body=###i## mkdir /mnt/funtoo/boot | |||
{{console|body=# ##i##mount /dev/mapper/vg-boot /mnt/funtoo/boot}} | |||
==Set the date== | ==Set the date== | ||
Line 161: | Line 160: | ||
'''Set hostname''' | '''Set hostname''' | ||
{{console|body=# ##i##echo 'hostname=" | {{console|body=# ##i##echo 'hostname="NewFuntooInstall"' > /etc/conf.d/hostname}} | ||
'''Set up DNS resolution''' | '''Set up DNS resolution''' | ||
Line 180: | Line 179: | ||
'''Configure /etc/fstab''' | '''Configure /etc/fstab''' | ||
{{note|this example uses xfs}} | |||
{{console|body=# ##i##cat > /etc/fstab << 'EOF' | {{console|body=# ##i##cat > /etc/fstab << 'EOF' | ||
/dev/mapper/vg-boot /boot xfs noauto,noatime,nodiratime,defaults 0 1 | |||
/dev/mapper/vg-swap none swap sw 0 0 | /dev/mapper/vg-swap none swap sw 0 0 | ||
/dev/mapper/vg-root / | /dev/mapper/vg-root / xfs noatime,nodiratime,defaults 0 1 | ||
tmpfs /var/tmp/portage tmpfs uid=portage,gid=portage,mode=775,noatime 0 0 | tmpfs /var/tmp/portage tmpfs uid=portage,gid=portage,mode=775,noatime 0 0 | ||
EOF}} | EOF}} | ||
Line 197: | Line 198: | ||
###i## umount /var/tmp/portage | ###i## umount /var/tmp/portage | ||
}} | }} | ||
==Portage== | ==Portage== | ||
'''Download the portage tree''' | '''Download the portage tree''' | ||
{{console|body=# ##i##ego sync}} | {{console|body=# ##i##ego sync}} | ||
'''Edit package USE-flags''' | '''Edit package USE-flags''' | ||
{{console|body=# ##i##cat > /etc/portage/package.use <<'EOF' | {{console|body=# ##i##cat > /etc/portage/package.use <<'EOF' | ||
*/* device-mapper lvm | */* device-mapper lvm | ||
sys-kernel/linux-firmware initramfs | sys-kernel/linux-firmware initramfs | ||
EOF}} | EOF}} | ||
'''Install necessary packages''' | '''Install necessary packages''' | ||
{{console|body=# ##i##emerge grub haveged intel-microcode linux-firmware | {{console|body=# ##i##emerge grub haveged intel-microcode linux-firmware lvm2 genkernel iucode_tool shim mokutil}} | ||
'''Configure services to start at boot''' | '''Configure services to start at boot''' | ||
{{console|body=# ##i##rc-update add device-mapper sysinit}} | {{console|body=# ##i##rc-update add device-mapper sysinit}} | ||
{{console|body=# ##i##rc-update add lvmetad sysinit}} | {{console|body=# ##i##rc-update add lvmetad sysinit}} | ||
{{console|body=# ##i##rc-update add haveged default}} | {{console|body=# ##i##rc-update add haveged default}} | ||
Line 241: | Line 230: | ||
kernel kernel[-v] | kernel kernel[-v] | ||
initrd initramfs[-v] | initrd initramfs[-v] | ||
params += | params += dolvm real_root=/dev/mapper/vg-root ro rootfstype=auto resume=swap:/dev/mapper/vg-swap quiet | ||
} | } | ||
EOF}} | EOF}} | ||
Line 257: | Line 246: | ||
*load efi directory: | *load efi directory: | ||
{{console|body= | {{console|body= | ||
###i## mkdir / | ###i## mkdir /ESP | ||
###i## mount /dev/sdX2 / | ###i## mount /dev/sdX2 /ESP | ||
}} | }} | ||
===64bit systems=== | ===64bit systems=== | ||
{{console|body=# ##i##grub-install --target=x86_64-efi --efi-directory=/ | {{console|body=# ##i##grub-install --target=x86_64-efi --efi-directory=/ESP --bootloader-id="Funtoo" --recheck /dev/sdX}} | ||
{{console|body= | {{console|body= | ||
###i## cp /usr/share/shim/BOOTX64.EFI /usr/share/shim/mmx64.efi / | ###i## cp /usr/share/shim/BOOTX64.EFI /usr/share/shim/mmx64.efi /ESP/EFI/Funtoo | ||
}} | }} | ||
*For usb keys & removable drives: | *For usb keys & removable drives: | ||
{{console|body=# ##i##grub-install --target=x86_64-efi --efi-directory=/ | {{console|body=# ##i##grub-install --target=x86_64-efi --efi-directory=/ESP --bootloader-id="BOOT" --no-nvram --recheck /dev/sdX}} | ||
{{console|body= | {{console|body= | ||
###i## cp /usr/share/shim/BOOTX64.EFI /usr/share/shim/mmx64.efi / | ###i## cp /usr/share/shim/BOOTX64.EFI /usr/share/shim/mmx64.efi /ESP/EFI/BOOT | ||
}} | }} | ||
===32bit systems=== | ===32bit systems=== | ||
{{console|body=# ##i##grub-install --target=i386-efi --efi-directory=/ | {{console|body=# ##i##grub-install --target=i386-efi --efi-directory=/ESP --bootloader-id="Funtoo" --recheck /dev/sdX}} | ||
{{console|body= | {{console|body= | ||
###i## cp /usr/share/shim/BOOTIA32.EFI /usr/share/shim/mmia32.efi / | ###i## cp /usr/share/shim/BOOTIA32.EFI /usr/share/shim/mmia32.efi /ESP/EFI/Funtoo | ||
}} | }} | ||
*For usb keys & removable drives: | *For usb keys & removable drives: | ||
{{console|body=# ##i##grub-install --target=i386-efi --efi-directory=/ | {{console|body=# ##i##grub-install --target=i386-efi --efi-directory=/ESP --bootloader-id="BOOT" --no-nvram --recheck /dev/sdX}} | ||
{{console|body= | {{console|body= | ||
###i## cp /usr/share/shim/BOOTIA32.EFI /usr/share/shim/mmia32.efi / | ###i## cp /usr/share/shim/BOOTIA32.EFI /usr/share/shim/mmia32.efi /ESP/EFI/BOOT | ||
}} | }} | ||
Line 293: | Line 282: | ||
'''Generate a new initramfs''' | '''Generate a new initramfs''' | ||
{{console|body=# ##i##genkernel --clean | {{console|body=# ##i##genkernel --clean --lvm --disklabel --ramdisk-modules --fullname=$(ls /boot/initramfs-* {{!}} tail -c +17) initramfs}} | ||
==Finishing installation== | ==Finishing installation== | ||
From this point, you should be able to finish following the [https://www.funtoo.org/Install/Network official Funtoo Linux install instructions] | From this point, you should be able to finish following the [https://www.funtoo.org/Install/Network official Funtoo Linux install instructions] | ||
==Rechroot== | ==Rechroot== |
Revision as of 00:10, January 16, 2023
This howto describes how to setup a generic LVM2 install. It is a standalone installation walk through, loosely based on the official installations finished product.
You may try this installation method at your own risk! Please note: this guide is outside of the official installation documentation, and cannot be supported. If you choose to use this, we assume you know what you are doing and you are on your own!
Prepare the hard drive, and partitions
- Before you begin, make sure you are partitioning the correct drive. For the rest of this tutorial, we will be using /dev/sdX as a placeholder.
root # lsblk #NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT #sda 8:0 0 1.8T 0 disk #├─sdX1 8:1 0 1M 0 bios_boot #├─sdX2 8:2 0 8G 0 esp /efi #└─sdX3 8:3 0 1.8T 0 part # ├─main-boot 254:0 0 500G 0 lvm /root # ├─main-swap 254:0 0 500G 0 lvm [swap] # ├─main-root 254:0 0 500G 0 lvm /
link your drive to /dev/sdX
to make following this guide easier you can set udev rules and link the drive you're installing to /dev/sdX so everything is copy paste. just replace the kernel's == sda/mmc/nvme to match your target drive.
- hda/sda drives:
root # echo 'KERNEL=="sda*", SYMLINK+="sdX%n"' > /etc/udev/rules.d/01-funtoo.rules root # udevadm control --reload-rules root # udevadm trigger
- mmc/nvme drives:
root # echo 'KERNEL=="mmcblk0", SYMLINK+="sdX"' > /etc/udev/rules.d/01-funtoo.rules root # echo 'KERNEL=="mmcblk0p*", SYMLINK+="sdX%n"' >> /etc/udev/rules.d/01-funtoo.rules root # udevadm control --reload-rules root # udevadm trigger
- verify linking
root # ls -al /dev/sdX* lrwxrwxrwx 1 root root 3 Jul 31 14:00 /dev/sdX -> sde lrwxrwxrwx 1 root root 4 Jul 31 14:00 /dev/sdX1 -> sde1 lrwxrwxrwx 1 root root 4 Jul 31 14:00 /dev/sdX2 -> sde2
Partition
UEFI Partitioning
root # gdisk /dev/sdX
Within gdisk
, follow these steps:
Empty the partition table:
Command: o ↵ This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N): y ↵
Create bios boot partition:
Command: n ↵ Partition Number: 1 ↵ First sector: ↵ Last sector: +1M ↵ Hex Code: EF02 ↵
Create efi esp partition:
Command: n ↵ Partition Number: 2 ↵ First sector: ↵ Last sector: +32M ↵ Hex Code: EF00 ↵
Create partition which will be our LVM2 virtual partition:
Command: n ↵ Partition Number: 3 ↵ First sector: ↵ Last sector: ↵ (for rest of disk) Hex Code: ↵
Write Partition Table To Disk:
Command: w ↵ Do you want to proceed? (Y/N): Y ↵
The partition table will now be written to the disk and gdisk
will close.
Create and mount filesystems.
Create esp filesystem
root # mkfs.vfat -F 32 /dev/sdX2
Create LVM2 volume
Create LVM volume for /, /boot, and swap
root # pvcreate /dev/mapper/root
root # vgcreate vg /dev/mapper/root
root # lvcreate -L256M --name boot vg
Replace "2G" with the amount of swap you would like to make available.
root # lvcreate -L2G --name swap vg
root # lvcreate -l 100%FREE --name root vg
The "-l 100%FREE" option above will use the remainder of the disk for your root partition. If you would prefer to create separate for /home or /var (for example), you can instead continue to use the "-LXXG" option for fixed sizes.
Create filesystems on LVM volumes
- boot:
root # mkfs.xfs /dev/mapper/vg-boot
- swap:
root # mkswap /dev/mapper/vg-swap
- for ext4:
root # mkfs.ext4 /dev/mapper/vg-root
- for xfs:
root # mkfs.xfs /dev/mapper/vg-root
Create directories for chroot
root # mkdir -p /mnt/funtoo
Mount filesystems
root # mount /dev/mapper/vg-root /mnt/funtoo
{{console|body=###i## mkdir /mnt/funtoo/boot
root # mount /dev/mapper/vg-boot /mnt/funtoo/boot
Set the date
See the official Funtoo docs on setting the date.
Install the Funtoo starge tarball of your choice
These instructions will be using the generic64 next minimal stage3. You should adjust them accordingly.
or a stage more closely aligned to your hardware:
or funtoo from scratch generated stages:
root # cd /mnt/funtoo
root # wget https://build.funtoo.org/next/x86-64bit/generic_64/2022-09-13/stage3-generic_64-next-2022-09-13.tar.xz
root # tar --numeric-owner --xattrs --xattrs-include='*' -xpf stage3*.tar.xz && rm -f stage3*.tar.xz
Chroot into your new system
Traditional Method
root # mkdir /mnt/funtoo/proc
root # mount -t proc none /mnt/funtoo/proc
root # mkdir /mnt/funtoo/dev
root # mount --rbind /dev /mnt/funtoo/dev
root # mkdir /mnt/funtoo/sys
root # mount --rbind /sys /mnt/funtoo/sys
root # env -i HOME=/root TERM=$TERM $(which chroot) /mnt/funtoo bash -l
Fchroot Method
root # fchroot .
Configure your system
Set a new root password
root # passwd
Set hostname
root # echo 'hostname="NewFuntooInstall"' > /etc/conf.d/hostname
Set up DNS resolution
We are using the Cloudflare DNS server address here. Feel free to use your own.
root # echo "nameserver 1.1.1.1" > /etc/resolv.conf
Set your timezone
root # ln -sf /usr/share/zoneinfo/$(tzselect) /etc/localtime
Note your filesystem information
root # blkid
/dev/sdX2: UUID="6453-0C55" TYPE="vfat" PARTLABEL="efi" PARTUUID="4e195c4b-f88c-4205-b9df-79a879704b2f" /dev/sdX3: UUID="aafe709b-82e7-448f-a2cb-36adc3787dc3" TYPE="crypto_LUKS" PARTLABEL="system" PARTUUID="93d0cf9b-0b95-4d8b-919f-48cd1774996f" /dev/mapper/root: UUID="hvz79n-I2VE-nR1c-0hDQ-PVkR-3GRb-rnuJ9C" TYPE="LVM2_member" /dev/mapper/vg-swap: UUID="a9188bc3-7def-422b-990d-9de431825779" TYPE="swap" /dev/mapper/vg-root: UUID="2eaf45e6-d33b-4155-b4ca-63a2fdbfb896" TYPE="ext4"
Configure /etc/fstab
this example uses xfs
root # cat > /etc/fstab << 'EOF' /dev/mapper/vg-boot /boot xfs noauto,noatime,nodiratime,defaults 0 1 /dev/mapper/vg-swap none swap sw 0 0 /dev/mapper/vg-root / xfs noatime,nodiratime,defaults 0 1 tmpfs /var/tmp/portage tmpfs uid=portage,gid=portage,mode=775,noatime 0 0 EOF
compile in ram:
root # mkdir /var/tmp/portage root # chown portage:portage /var/tmp/portage root # mount /var/tmp/portage
or exclude compiling in ram if your machine's not powerful enough:
root # umount /var/tmp/portage
Portage
Download the portage tree
root # ego sync
Edit package USE-flags
root # cat > /etc/portage/package.use <<'EOF' */* device-mapper lvm sys-kernel/linux-firmware initramfs EOF
Install necessary packages
root # emerge grub haveged intel-microcode linux-firmware lvm2 genkernel iucode_tool shim mokutil
Configure services to start at boot
root # rc-update add device-mapper sysinit
root # rc-update add lvmetad sysinit
root # rc-update add haveged default
root # rc-update add busybox-ntpd default
Install a bootloader
Configure /etc/boot.conf
The UUID parameter is set to the UUID of /dev/sdX3 as found from the blkid command above.
root # cat > /etc/boot.conf <<'EOF' boot { generate grub default "Funtoo Linux" timeout 3 } "Funtoo Linux" { kernel kernel[-v] initrd initramfs[-v] params += dolvm real_root=/dev/mapper/vg-root ro rootfstype=auto resume=swap:/dev/mapper/vg-swap quiet } EOF
Install GRUB
For BIOS systems & UEFI legacy mode support
root # echo "GRUB_ENABLE_CRYPTODISK=y" >> /etc/default/grub
root # grub-install --target=i386-pc --no-floppy /dev/sdX
For UEFI systems
root # mount -o remount,rw /sys/firmware/efi/efivars
Install grub & shim
- load efi directory:
root # mkdir /ESP root # mount /dev/sdX2 /ESP
64bit systems
root # grub-install --target=x86_64-efi --efi-directory=/ESP --bootloader-id="Funtoo" --recheck /dev/sdX
root # cp /usr/share/shim/BOOTX64.EFI /usr/share/shim/mmx64.efi /ESP/EFI/Funtoo
- For usb keys & removable drives:
root # grub-install --target=x86_64-efi --efi-directory=/ESP --bootloader-id="BOOT" --no-nvram --recheck /dev/sdX
root # cp /usr/share/shim/BOOTX64.EFI /usr/share/shim/mmx64.efi /ESP/EFI/BOOT
32bit systems
root # grub-install --target=i386-efi --efi-directory=/ESP --bootloader-id="Funtoo" --recheck /dev/sdX
root # cp /usr/share/shim/BOOTIA32.EFI /usr/share/shim/mmia32.efi /ESP/EFI/Funtoo
- For usb keys & removable drives:
root # grub-install --target=i386-efi --efi-directory=/ESP --bootloader-id="BOOT" --no-nvram --recheck /dev/sdX
root # cp /usr/share/shim/BOOTIA32.EFI /usr/share/shim/mmia32.efi /ESP/EFI/BOOT
root # ego boot update
Generate a new initramfs
root # genkernel --clean --lvm --disklabel --ramdisk-modules --fullname=$(ls /boot/initramfs-* | tail -c +17) initramfs
Finishing installation
From this point, you should be able to finish following the official Funtoo Linux install instructions
Rechroot
In the event of build failure, to rechroot requires unlocking the root, re-mounting, and re-chroot.
root # mount /dev/mapper/vg-root /mnt/funtoo root # cd /mnt/funtoo root # fchroot .