This how-to might help when Crux install ISO does not detect your hardware. 1. Boot Live ISO from any Linux distro that can properly detect hardware in your system. Note: For this article gentoo-admincd-amd64-20240630T170408Z.iso was used. 2. Go to step 11 if you do need ssh or download any files during install. 3. If not loaded yet, load kernel module for your network device. Note: To find your network device, run: # lspci | grep '\(Ethernet\|Network\)[[:space:]]\+controller' Example (for Intel 82541PI GE): # modprobe e1000 4. Check your IP: # ip addr show 5. Start your DHCP client if you do not have IP in the step 4 above: Example: # dhcpcd 6. Check your IP (see NEWCRUXIP in the step 10 below): # ip addr show 7. Start sshd: Example: # /etc/init.d/sshd start 8. Set password for root user: # passwd root 9. (optional) Enable DPMS: # setterm -blank 10 10. Connect via ssh from another system: Note: NEWCRUXIP is IP from step 6 # ssh root@NEWCRUXIP 11. This and following steps can be performed either from local login or from ssh session. 12. (optional; helpful for ssh session) Change prompt: # export PS1="(ssh-gentoo-root) $PS1" 13. Create partitions for Crux: Example: # fdisk /dev/sda # mkfs.ext4 -L cruxboot -O ^64bit /dev/sda6 # mkfs.ext4 -L cruxroot /dev/sda7 14. Mount Crux root and boot partitions: Note: These partitions will have final Crux root file system. # mkdir -p /mnt/crux # mount -t ext4 -o data=journal /dev/sda7 /mnt/crux # mkdir /mnt/crux/boot # mount -t ext4 -o data=journal /dev/sda6 /mnt/crux/boot 15. Download or copy Crux install ISO: # curl --remote-time --remote-name --output-dir /mnt/crux/ https://crux.ninja/updated-iso/crux-3.7-updated.iso # curl --remote-time --remote-name --output-dir /mnt/crux/ https://crux.ninja/updated-iso/crux-3.7-updated.sha256 ## Verify: # cat /mnt/crux/crux-3.7-updated.sha256; sha256sum /mnt/crux/crux-3.7-updated.iso 16. Mount Crux install ISO: # mkdir /mnt/cruxiso # mount -t iso9660 -o ro,loop /mnt/crux/crux-3.7-updated.iso /mnt/cruxiso 17. Prepare chroot directory: # mkdir /mnt/crux/chroot # tar xpJf /mnt/cruxiso/rootfs.tar.xz -C /mnt/crux/chroot # mkdir /mnt/crux/chroot/media # mount -t iso9660 -o ro,loop /mnt/crux/crux-3.7-updated.iso /mnt/crux/chroot/media # cp -L /etc/resolv.conf /mnt/crux/chroot/etc/ # touch /mnt/crux/chroot/root/.vimrc 18. Mount all target file systems for install ISO chroot environment: # mkdir -p /mnt/crux/chroot/mnt/crux # mount -t ext4 -o data=journal /dev/sda7 /mnt/crux/chroot/mnt/crux # mkdir -p /mnt/crux/chroot/mnt/crux/boot # mount -t ext4 -o data=journal /dev/sda6 /mnt/crux/chroot/mnt/crux/boot 19. Mount virtual file systems for install ISO chroot environment: # mount --bind /dev /mnt/crux/chroot/dev # mount --bind /tmp /mnt/crux/chroot/tmp # mount --bind /run /mnt/crux/chroot/run # mount -t proc proc /mnt/crux/chroot/proc # mount -t sysfs sysfs /mnt/crux/chroot/sys # mkdir -p /mnt/crux/chroot/dev/pts # mount -t devpts -o noexec,nosuid,gid=tty,mode=0620 devpts /mnt/crux/chroot/dev/pts # [ -d /sys/firmware/efi/efivars ] && mount -o nosuid,noexec,nodev -t efivarfs efivarfs /mnt/crux/chroot/sys/firmware/efi/efivars 20. Chroot into Crux install ISO environment: # chroot /mnt/crux/chroot /bin/bash 21. Setup environment: # export PATH=/bin:/usr/bin:/sbin:/usr/sbin # export PS1="(chroot-crux-iso) $PS1" 22. Install Crux: Note: Install to the same path, relative to chroot base, as you used in step 18, for example /mnt/crux. # setup 23. When install finishes, exit Crux ISO chroot environment: # exit 24. Unmount file systems used in Crux ISO chroot environment: Note: We will keep some directories mounted for the next install stage: # [ -d /sys/firmware/efi/efivars ] && umount /mnt/crux/chroot/sys/firmware/efi/efivars # umount /mnt/crux/chroot/dev/pts # umount /mnt/crux/chroot/sys # umount /mnt/crux/chroot/proc # umount /mnt/crux/chroot/run # umount --lazy /mnt/crux/chroot/tmp # umount /mnt/crux/chroot/dev # umount /mnt/crux/chroot/mnt/crux/boot # umount /mnt/crux/chroot/mnt/crux # umount --lazy /mnt/crux/chroot/media # umount /mnt/cruxiso Note: At this point these directories should remain mounted: /mnt/crux /mnt/crux/boot 25. Prepare Crux chroot environment: # mkdir -p /mnt/crux/mnt/media # mount -t iso9660 -o ro,loop /mnt/crux/crux-3.7-updated.iso /mnt/crux/mnt/media # mv /mnt/crux/etc/resolv.conf /mnt/crux/etc/resolv.orig.conf # cp -L /etc/resolv.conf /mnt/crux/etc/ # touch /mnt/crux/root/.vimrc 26. Mount virtual file systems for Crux chroot environment: # mount --bind /dev /mnt/crux/dev # mount --bind /tmp /mnt/crux/tmp # mount --bind /run /mnt/crux/run # mount -t proc proc /mnt/crux/proc # mount -t sysfs sysfs /mnt/crux/sys # mkdir -p /mnt/crux/dev/pts # mount -t devpts -o noexec,nosuid,gid=tty,mode=0620 devpts /mnt/crux/dev/pts # [ -d /sys/firmware/efi/efivars ] && mount -o nosuid,noexec,nodev -t efivarfs efivarfs /mnt/crux/sys/firmware/efi/efivars 27. Chroot into Crux environment: # chroot /mnt/crux /bin/bash 28. Setup environment: # export PATH=/bin:/usr/bin:/sbin:/usr/sbin # export PS1="(chroot-crux) $PS1" 29. Complete setup according to Crux Handbook. Note: Linux kernel source and kernel configs can be found at: /mnt/media/crux/kernel /mnt/media/crux/kernel/contrib 30. When Crux is set up, exit Crux chroot environment: # exit 31. Unmount file systems used in Crux chroot environment: # [ -d /sys/firmware/efi/efivars ] && umount /mnt/crux/sys/firmware/efi/efivars # umount /mnt/crux/dev/pts # umount /mnt/crux/sys # umount /mnt/crux/proc # umount /mnt/crux/run # umount /mnt/crux/tmp # umount /mnt/crux/dev # umount /mnt/crux/mnt/media # umount /mnt/crux/boot # umount --lazy /mnt/crux 32. Reboot. 33. After confirming that system is bootable, you can delete these files and directories: /chroot/ /crux-3.7-updated.iso /crux-3.7-updated.sha256 /mnt/media/