mayfrost-guides/Initiation.md

345 lines
13 KiB
Markdown
Raw Normal View History

2018-02-26 01:35:51 +00:00
# Initiation Rite
2018-02-26 03:08:31 +00:00
This guide is for those who want to install either CRUX or __Source Mage GNU/Linux__. It was written so it can be used by both, only diverging on the particular details.
* __CRUX__: A ports based, BSD style init scripts, distro following true KISS principles (Keep It Simple, Stupid).
* __Source Mage GNU/Linux__: Without 3rd party patches, sensible defaults or masked packages, free from obfuscated and pre-configured code, use clean dependencies as they came from upstream developers and can also use flags.
2018-02-26 01:37:22 +00:00
## START
2018-02-26 01:35:51 +00:00
Boot in UEFI mode if on UEFI, BIOS if on BIOS, and select installation media.
2018-02-26 02:05:19 +00:00
* Make sure your network is up (OPTIONAL)
`dhcpcd <NIC>`
2018-02-26 02:33:45 +00:00
* Temporarily change keyboard (available configurations can be found in the directories "_/usr/share/kbd/keymaps/_" for __CRUX__ and "_/usr/share/keymaps/i386/qwerty_" for __Source Mage GNU/Linux__)
`loadkeys <KEYMAP>`
2018-02-26 01:35:51 +00:00
## PARTITIONING
2018-02-26 01:35:51 +00:00
Supported filesystems by bootloaders are (if on UEFI ignore this as it only supports FAT):
2018-02-26 02:11:15 +00:00
* __LILO__: indifferent (anything?)
* __SYSLINUX__: ext2, ext3, ext4, btrfs, ufs 1/2, FAT16, FAT32, iso9660, udf, NTFS
* __GRUB Legacy__: FAT16, FAT32, minix, ext2, ext3, ext4, ReiserFS, JFS, XFS, VSTa fs, Btrfs
* __GRUB 2__: ext2, ext3, ext4, btrfs, zfs, ufs, minix, iso9660, udf, jfs, hfs, hfs+, afs, affs, sfs, xfs, reiserfs, tar, cpio, NTFS, FAT16, FAT32
2018-02-26 01:35:51 +00:00
2018-02-26 02:33:45 +00:00
In these examples we make only two partitions but you can extend this if you know how. The partitions are one root partition, later mounted to "_/mnt/drive_" with "_mkfs.<ROOT_FILESYSTEM>_" format, and one boot partition, later mounted to "_/mnt/drive/boot_" and with "_mkfs.<BOOTLOADER_FILESYSTEM>_" format unless is __UEFI__ in which case "_mkfs.vfat_" is the only format available and will be mounted to "_/mnt/drive/boot/efi_" instead.
2018-02-26 01:35:51 +00:00
2018-02-26 01:54:29 +00:00
* Use parted
2018-02-26 01:45:06 +00:00
`parted /dev/sda`
2018-02-26 02:22:58 +00:00
* Inside parted, if on UEFI label the disk "_gpt_", but if on BIOS label it "_msdos_"
2018-02-26 01:45:06 +00:00
`mklabel <LABEL>
2018-02-26 01:35:51 +00:00
unit mb
mkpart primary 0g 128
mkpart primary 128 -1
toggle 1 boot
p free
2018-02-26 01:45:06 +00:00
quit`
2018-02-26 01:35:51 +00:00
2018-02-26 01:54:29 +00:00
* Make root filesystem according to your personal preference
2018-02-26 01:45:06 +00:00
`mkfs.<ROOT_FILESYSTEM> /dev/sda2
2018-02-26 01:35:51 +00:00
mkdir /mnt/drive
2018-02-26 01:45:06 +00:00
mount /dev/sda2 /mnt/drive`
2018-02-26 02:22:58 +00:00
* Make boot filesystem according to supported bootloader or just "_mkfs.vfat_" if on UEFI
2018-02-26 02:05:19 +00:00
`mkfs.<BOOTLOADER_FILESYSTEM> /dev/sda1`
2018-02-26 01:54:29 +00:00
* If on BIOS make directory and mount
2018-02-26 01:45:06 +00:00
`mkdir /mnt/drive/boot
mount /dev/sda1 /mnt/drive/boot`
2018-02-26 01:54:29 +00:00
* If on UEFI make directory and mount
2018-02-26 01:45:06 +00:00
`mkdir -p /mnt/drive/boot/efi
2018-02-26 01:35:51 +00:00
mount /dev/sda1 /mnt/drive/boot/efi
cd /mnt/drive
mount --bind /dev /mnt/drive/dev
mount --bind /sys /mnt/drive/sys
mount -t proc none /mnt/drive/proc
2018-02-26 01:45:06 +00:00
mount -t devpts none /mnt/drive/dev/pts`
2018-02-26 01:35:51 +00:00
## SETUP
2018-02-26 02:33:45 +00:00
* On __CRUX__ run "_setup_", and if on UEFI select on setup grub2-efi (if using GRUB 2), efibootmgr, and elfutils from opt (only select core, and say yes when you're asked if you want to select individual packages). And if you are not using LILO de-select it from core.
* On __Source Mage GNU/Linux__ get the tarball
2018-02-26 01:45:06 +00:00
`cd /mnt/drive
2018-02-26 01:35:51 +00:00
wget -c "http://download.sourcemage.org/image/official/smgl-stable-<version>-basesystem-x86_64.<compression>"
2018-02-26 01:45:06 +00:00
tar xvf smgl-stable-<version>-basesystem-x86_64.<compression>`
2018-02-26 01:35:51 +00:00
2018-02-26 02:05:19 +00:00
### Chroot
2018-02-26 01:54:29 +00:00
* Chroot specifying Bash in case live media has another shell
2018-02-26 01:45:06 +00:00
`chroot /mnt/drive /bin/bash`
2018-02-26 01:54:29 +00:00
* Change root password in chroot (TEST IF YOUR KEYBOARD HAS ALL THE CORRECT MAPPINGS before you change the password)
2018-02-26 01:45:06 +00:00
`passwd root`
### Change the network interfaces
2018-02-26 02:33:45 +00:00
* On __CRUX__ modify "_/etc/rc.d/net_" with the rules you want (IP, gateway, domain, etc)
* On __Source Mage GNU/Linux__ add preferred interfaces to "_/etc/network/interfaces_" for example
2018-02-26 01:45:06 +00:00
`auto eth0
2018-02-26 01:35:51 +00:00
allow-hotplug eth0
2018-02-26 01:45:06 +00:00
iface eth0 inet dhcp`
2018-02-26 02:22:58 +00:00
* On the "_/etc/resolv.conf.head_" file set your preferred DNS provider (this example is from OpenNIC)
2018-02-26 01:45:06 +00:00
`nameserver 193.41.79.236`
2018-02-26 02:22:58 +00:00
* Or copy "_/etc/resolv.conf_" to "_/mnt/etc/resolv.conf_" __BEFORE__ chrooting
2018-02-26 01:35:51 +00:00
2018-02-26 02:05:19 +00:00
### Edit fstab
2018-02-26 02:22:58 +00:00
* Change the "_/etc/fstab_" file with appropriate filesystems
2018-02-26 01:45:06 +00:00
`/dev/sda1 /boot <BOOTLOADER_FILESYSTEM> defaults 0 2
/dev/sda2 / <ROOT_FILESYSTEM> noatime 0 1`
2018-02-26 02:33:45 +00:00
* On __CRUX__ uncomment the lines referring to devpts, tmp, and shm as some programs require it (Firefox), also USB and or cdrom if using those
2018-02-26 02:22:58 +00:00
* If on UEFI replace "_/boot_" with "_/boot/efi_"
2018-02-26 01:35:51 +00:00
2018-02-26 02:05:19 +00:00
### Edit environment
2018-02-26 02:33:45 +00:00
* On __CRUX__ change the font, keyboard, timezone, hostname and services on the "_/etc/rc.conf_" file
2018-02-26 02:22:58 +00:00
`ls /usr/share/kbd/keymaps/`
2018-02-26 02:33:45 +00:00
* On __Source Mage GNU/Linux__ change keymaps on the "_/etc/sysconfig/keymap_" file
2018-02-26 02:22:58 +00:00
`ls /usr/share/keymaps/i386/qwerty`
2018-02-26 02:33:45 +00:00
* On __CRUX__ generate locales (change interface language)
2018-02-26 01:45:06 +00:00
`localedef -i <LOCALE> -f ISO-<CODE> <LOCALE>`
2018-02-26 02:33:45 +00:00
* On __Source Mage GNU/Linux__ generate locales (change interface language)
2018-02-26 01:45:06 +00:00
`cast -r locale`
2018-02-26 01:35:51 +00:00
2018-02-26 03:10:58 +00:00
## KERNEL
* Include the filesystem support the boot partition is format in.
* Include UEFI options if on UEFI.
* Include device drivers you need, build the rest as modules.
* On __CRUX__
`cd /usr/src/linux-<VERSION>
make menuconfig
make all
make modules_install
cp arch/x86/boot/bzImage /boot/vmlinuz
cp System.map /boot`
* On __Source Mage GNU/Linux__ (__OPTIONAL__)
`cast -r linux`
## BOOTLOADER
2018-02-26 02:22:58 +00:00
* The drive where bootloaders and OSes are installed on these examples is "_/dev/sda_", but could be anywhere.
* The bootloader installation __IS__ inside chroot AND with drives mounted, so this guides assumes you are inside "_/mnt/drive_".
2018-02-26 02:33:45 +00:00
* "_<PARTITION_NUMBER_OF_DISTRO>_", "_<PARTITION_NUMBER_OF_FREEDOS>_" and "_<PARTITION_NUMBER_OF_WINDOWS>_" are just the numbers of partitions.
2018-02-26 02:22:58 +00:00
* The "_vmlinuz_" file makes reference to the kernel image, you can rename it or simlink to it in all cases, the only rule is you have to make sure the name is referenced correctly in the bootloader. By default it can have names like "_vmlinuz-linux_", "_vmlinuz-<KERNEL_VERSION>_" and so on. The same with "_initramfs.img_", it can be "_initramfs-<KERNEL_VERSION>.img_" and such.
* All bootloader examples have included other OS inside what is called "_stanzas_".
* FreeDOS and Windows stanzas are __OPTIONAL__.
2018-02-26 01:35:51 +00:00
* If dualbooting with Windows remember that it likes to be in the first partition.
2018-02-26 02:22:58 +00:00
* If on UEFI check if module is loaded by issuing "_modprobe efivars_".
2018-02-26 02:33:45 +00:00
* On __CRUX__ do "_prt-get remove lilo_" if you dont use LILO.
* On __Source Mage GNU/Linux__ do "_cast <BOOTLOADER>_" to install the preferred bootloader.
2018-02-26 01:35:51 +00:00
### LILO
2018-02-26 02:22:58 +00:00
* If on UEFI use __elilo__ and change names to "_/etc/elilo.conf_" instead of "_/etc/lilo.conf_" and "_elilo_" instead of "_lilo_" in commands
2018-02-26 01:45:06 +00:00
`nano /etc/lilo.conf`
2018-02-26 02:22:58 +00:00
* Inserting "_password=<PASSWORD>_" inside an OS stanza will protect with a password that OS, but inserting "_password=<PASSWORD>_" just before the stanzas and outside any of them will protect with a password the bootloader itself (notice the space inside stanzas)
2018-02-26 01:45:06 +00:00
`boot = /dev/sda
2018-02-26 01:35:51 +00:00
image = /boot/vmlinuz
2018-02-26 02:33:45 +00:00
Label = <DISTRO_NAME>
2018-02-26 01:35:51 +00:00
root = /dev/sda<PARTITION_NUMBER_OF_DISTRO>
other = /dev/sda<PARTITION_NUMBER_OF_FREEDOS>
table = /dev/sda
Label = FreeDos
other = /dev/sda<PARTITION_NUMBER_OF_WINDOWS>
table = /dev/sda
2018-02-26 01:45:06 +00:00
Label = Windows7`
`lilo -A /dev/sda 1
lilo`
2018-02-26 02:22:58 +00:00
* Prevent anyone but root of reading the config file (in case you used a password)
2018-02-26 01:45:06 +00:00
`chmod 600 /etc/lilo.conf`
2018-02-26 01:35:51 +00:00
### SYSLINUX
2018-02-26 01:54:29 +00:00
* If on BIOS make directory and copy files accordingly
2018-02-26 01:45:06 +00:00
`mkdir -p /boot/syslinux
cp /usr/lib/syslinux/bios/*.c32 /boot/syslinux/`
2018-02-26 01:54:29 +00:00
* If on UEFI make directory and copy files accordingly
2018-02-26 01:45:06 +00:00
`mkdir -p /boot/efi/EFI/syslinux
cp -r /usr/lib/syslinux/efi64/* /boot/efi/EFI/syslinux/`
2018-02-26 01:54:29 +00:00
* If on BIOS setup boot entry
2018-02-26 01:45:06 +00:00
`umount /dev/sda1
2018-02-26 01:35:51 +00:00
syslinux --directory syslinux --install /dev/sda1
2018-02-26 01:45:06 +00:00
mount /dev/sda1 /boot`
2018-02-26 02:22:58 +00:00
* If on UEFI setup boot entry using "_efibootmgr_"
2018-02-26 01:45:06 +00:00
`umount /dev/sda1
2018-02-26 01:35:51 +00:00
efibootmgr -c -d /dev/sda -p 1 -l /boot/efi/EFI/syslinux/syslinux.efi -L Syslinux
2018-02-26 01:45:06 +00:00
mount /dev/sda1 /boot/efi`
2018-02-26 02:22:58 +00:00
* Edit "_/boot/syslinux/syslinux.cfg_" if on BIOS or "_/boot/efi/EFI/syslinux/syslinux.cfg_" if on UEFI
* "_splash.png_" is the splash screen image located in "_/boot/syslinux/_" if on BIOS or "_/boot/efi/EFI/syslinux/_" if on UEFI
2018-02-26 01:45:06 +00:00
`PROMPT 1
2018-02-26 01:35:51 +00:00
TIMEOUT 50
MENU BACKGROUND splash.png
2018-02-26 02:33:45 +00:00
DEFAULT <DISTRO_NAME>
LABEL <DISTRO_NAME>
MENU LABEL <DISTRO_NAME>
2018-02-26 01:35:51 +00:00
LINUX /boot/vmlinuz
INITRD /boot/initramfs.img
LABEL FreeDOS
MENU LABEL FreeDOS
KERNEL chain.c32
APPEND sda <PARTITION_NUMBER_OF_FREEDOS>
LABEL Windows7
MENU LABEL Windows7
KERNEL chain.c32
2018-02-26 01:45:06 +00:00
APPEND sda <PARTITION_NUMBER_OF_WINDOWS>`
2018-02-26 01:35:51 +00:00
### GRUB Legacy
2018-02-26 01:54:29 +00:00
* If on BIOS setup boot entry (boot partition must be mounted)
2018-02-26 01:45:06 +00:00
`mount /dev/sda1 /boot
grub-install /dev/sda`
2018-02-26 01:54:29 +00:00
* If on UEFI setup boot entry (boot partition must be mounted)
2018-02-26 01:45:06 +00:00
`mount /dev/sda1 /boot/efi
grub-install /boot/efi`
2018-02-26 02:22:58 +00:00
* Edit configuration file "_/boot/grub/menu.lst_"
2018-02-26 01:45:06 +00:00
`default=0
2018-02-26 01:35:51 +00:00
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title <DISTRO_NAME> (<KERNEL_VERSION>)
root (hd0,<PARTITION_NUMBER_OF_DISTRO>)
kernel /vmlinuz-<KERNEL_VERSION> ro root=/dev/sda5 rhgb quiet
initrd /initramfs-<KERNEL_VERSION>.img
title <DISTRO_NAME_alternative_kernel> (<ANOTHER_KERNEL_VERSION>)
root (hd0,<PARTITION_NUMBER_OF_DISTRO>)
kernel /vmlinuz-<ANOTHER_KERNEL_VERSION> ro root=/dev/sda5 rhgb quiet
initrd /initramfs-<ANOTHER_KERNEL_VERSION>.img
title FreeDOS
root (hd0,<PARTITION_NUMBER_OF_FREEDOS>)
kernel /memdisk
initrd (hd0,<PARTITION_NUMBER_OF_FREEDOS>)/fdboot.img
title Windows 7
root (hd0,<PARTITION_NUMBER_OF_WINDOWS>)
2018-02-26 01:45:06 +00:00
chainloader /EFI/Microsoft/Boot/bootmgfw.efi`
2018-02-26 01:35:51 +00:00
### GRUB 2
2018-02-26 01:54:29 +00:00
* If on BIOS setup boot entry (boot partition must be mounted)
2018-02-26 01:45:06 +00:00
`mount /dev/sda1 /boot
grub-install /dev/sda`
2018-02-26 01:54:29 +00:00
* If on UEFI setup boot entry (boot partition must be mounted)
2018-02-26 01:45:06 +00:00
`mount /dev/sda1 /boot/efi
grub-install /boot/efi`
2018-02-26 02:22:58 +00:00
* If Grub does not detect your OS run "os-prober" followed by "update-grub"
* Or add the OS manually to the Grub config file "_/etc/grub.d/40_custom_"
2018-02-26 01:45:06 +00:00
`menuentry "FreeDOS" {
2018-02-26 01:35:51 +00:00
set root='(hd0,msdos2)'
linux16 /memdisk
initrd16 /fdboot.img
chainloader +1
}
menuentry "Windows 7" {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --no-floppy --set=root 3482FBC382FB879E
chainloader +1
ntldr /bootmgr
2018-02-26 01:45:06 +00:00
}`
2018-02-26 01:54:29 +00:00
* Update config file
2018-02-26 01:45:06 +00:00
`grub-mkconfig -o /boot/grub/grub.cfg`
2018-02-26 02:56:14 +00:00
## THE END
2018-02-26 03:08:31 +00:00
* Exit the chroot
2018-02-26 02:56:14 +00:00
`exit`
2018-02-26 03:08:31 +00:00
* Shutdown the machine
2018-02-26 02:56:14 +00:00
`shutdown -h now`
And done.
2018-02-26 03:08:31 +00:00
## CONFIGURATION ON CRUX
### ENABLE CONTRIB
* Enable contrib for ports
`cd /etc/ports
mv contrib.rsync.inactive contrib.rsync`
* Enable contrib for prt-get
`nano /etc/prt-get.conf`
* Uncomment line "_prtdir /usr/ports/contrib_"
### ADD EXTERNAL REPOS
`cd /etc/ports/`
* download httpup/rsync file and pub file
`wget -c <URL>`
* Add repo location to /etc/prt-get.conf (order sets precedence)
`nano /etc/prt-get.conf`
* Add "prtdir /usr/ports/<REPO>"
* Populate repo
`ports -u <REPO>`
* Enable pre-/post-install scripts in "_/etc/prt-get.conf_" (usually safe to run repeatedly, usually used to rebuild caches and add system users when installing certain software)
`nano /etc/prt-get.conf`
* uncomment line "_runscripts yes_"
* Ignore footprint mismatches due to new files (usually not a bad thing)
`nano /etc/pkgmk.conf`
* Set line "_PKGMK_IGNORE_NEW="yes"_"
## CRUX COMMANDS
### Automated installation of ports
* Populate ports tree (is empty by default)
`ports -u`
* Automatically download and build a package with its required dependencies ignoring signature mismatch
`prt-get -in depinst <PORT>`
* Remove a package
`prt-get remove <PORT>`
* Search package
`prt-get search <PORT>`
* Get info from package
`prt-get info <PORT>`
* Get dependency info from package
`prt-get depends <PORT>`
* Update all packages
`prt-get sysup`
* List all installed packages
`pkginfo -i`
### Manually dowloading and installing
* Go to apropriate directory for all these tasks
`cd to /usr/ports/<REPO>/<PORT>`
* To download a package
`pkgmk -d <PORT>`
* To install a downloaded package
`pkgmk -i <PORT>`
* In case of signature mismatch
`pkgadd -f <PORT>`
* To clean directory from downloaded package and build
`pkgadd -c <PORT>`
* To remove installed package
`pkgrm <PORT>`
## SOURCE MAGE GNU/LINUX COMMANDS
* To get a manual
`cast smgl-setup`
`man smgl-setup`
* To change general things like the color scheme
`sorcery`
* To update the package manager
`sorcery update`
* To update the package list
`scribe update`
* To check for any changes in the architecture specs
`cast smgl-archspecs`
* To rebuild everything from source
`sorcery rebuild`
* To recompile the kernel
`cast -r linux`
* To get a list of spells needing upgrade
`sorcery -q`
* To upgrade the spells themselves known to be available for upgrade
`cast --queue`
* To check for broken installations
`cleanse --fix`
* After casting new spells you need this to have apropos, man -k, and whatis
` makewhatis`
* To install new packages
`cast <spell>`
* To update an existing package
`cast <spell>`
* To search for packages
`gaze search <spell>`
* To search by package name
`gaze search -name <spell>`
* To list installed packages
`gaze installed`
* To remove a spell
`dispel <spell>`
* To delete completely a package
`dispel --nosustain <spell>`
* To list repositories
`scribe index`
* To add a repository
`scribe add <grimoire>`
* To remove a repository
`scribe remove <grimoire>`