According to Gentoo's official site,
Welcome to Gentoo, a flexible, source-based Linux distribution that becomes just about any system you need—and much more.
As you can see, installing Gentoo on your beloved Rcs machine enables you to manage your server in a more controlled manner, as you choose what's on the server and even more, you choose which features to compile in in order to save the precious resources on your server.
For a Gentoo installation on Rcs we basically need to do the following things:
- Load the installation ISO onto your Rcs account.
- Create a machine using the Custom ISO template.
- Fire up
sshdin the LiveCD environment. - Install the OS
Let's start!
Preparation work
First navigate to the ISO Management page and upload your ISO from remote. Almost any medium is fine for installing Gentoo, and we'll use the official minimal CD. Fill this (or another minimal Gentoo ISO link) into the URL box and hit upload, then wait a few minutes. After the ISO has been successfully uploaded, we can proceed to creating a machine.
Choose Custom ISO in the operating system section. Choose other options according to your need, and remember to check Enable IPv6 as we'll be deploying a IPv6-enabled install. Once you're sure that everything is correct, create the machine and fire it up.
Choose View console in the machine's control panel and you will be greeted with Gentoo minimal CD's shell. As operations from the VNC can be difficult, we'll enable sshd. Use passwd to change your root password, and then do the following:
/etc/init.d/sshd startThen find the server IP address in your control panel and connect to the server with:
ssh root@203.0.113.1Note that any IP address which falls in 203.0.113.0/24 is virtual and you should replace them with your server's real IPv4 address.
Installation
Now that we get to a proper shell in LiveCD, we can start the installation process. Basically we'll be doing the following things:
- Partition and mount the disk.
- Get and unpack the stage3 tarball.
- Grab the portage tree.
- Chroot into the target environment.
- Select profile and perform world update.
- Install necessary tools.
- Reboot and check.
First, we'll divide the disk. Use cfdisk:
cfdisk /dev/vdaChoose mbr in the popup and create 2 partitions: one is your root partition and the other is your swap partition. I recommend you reserve 2*memory size on small memory plans while smaller swaps are possible if you have a lot of physical memory. Write the partition table and quit after you have made the right alternations.
Then format the partitions. We will just use ext4 here. You can choose whatever you want, but remember to enable support for that fs later when configuring the kernel, or the system won't boot. Do the following:
mkfs.ext4 /dev/vda1
mkswap /dev/vda2Assuming that your root partition is vda1 and swap partition is vda2.
Then mount the filesystems.
mount /dev/vda1 /mnt/gentoo
swapon /dev/vda2Grab the LATEST stage3 tarball (look what's inside the folder on the mirror first!) from a mirror which is geographically close to your server. Unpack the tarball into the new root.
cd /mnt/gentoo
wget http://ftp.iij.ad.jp/pub/linux/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20161103.tar.bz2
tar xvjpf stage3-amd64-20161103.tar.bz2 --xattrsWe'll need to choose a source which is geographically close to the server in order to save time while downloading source codes. Gentoo's minimal install CD provides us with a perfect tool mirrorselect. Select the ones that are in your server's region:
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.confFor example, a server located in Tokyo would want to have IIJ and Jaist's mirror enabled, so hit Spacebar and mark those lines with a *. Exit and review make.conf changes:
nano -w /etc/portage/make.confA second important step in selecting mirrors is to configure the main Gentoo repository via the /etc/portage/repos.conf/gentoo.conf file. Definitions about the remote source of portage tree is located there. Do the following:
mkdir -p /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
nano -w /mnt/gentoo/etc/portage/repos.conf/gentoo.confSubstitute the server address in the sync-uri setion. A list of rsync mirrors can be found here. Regional rsync servers are usually provided by using URLs like rsync://rsync.jp.gentoo.org/gentoo-portage/. This round-robin way will ensure that the configuration will still work even if some servers failed in the server pool.
A little hint here: as rsync is costly, many servers don't allow too many frequent syncs. I recommend you sync once daily or less frequently. If you try to (even involuntarily) disturb the server's rotation, you may be added to a temporary ban list.
Copy resolv.conf into the chroot.
cp -L /etc/resolv.conf /mnt/gentoo/etc/Mount necessary filesystems so that we can chroot.
mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/devThen chroot into the environment.
chroot /mnt/gentoo /bin/su
export PS1="(chroot) $PS1"Grab the portage snapshot.
emerge-webrsyncRead the news:
eselect news list
eselect news readSelect the profile:
eselect profile list
eselect profile set 1Do world update:
emerge -avuDN @worldSet the timezone. Suppose the timezone of choice is Europe/Brussels:
echo "Europe/Brussels" > /etc/timezone
emerge --config sys-libs/timezone-dataSet the locale.
nano /etc/locale.gen
locale-gen
eselect locale list
eselect locale set en_US.UTF-8Reload the environment.
env-update && source /etc/profile && export PS1="(chroot) $PS1"Install the Linux kernel. Emerge the source first:
emerge -av sys-kernel/gentoo-sourcesThen configure the kernel. As we're performing the installation on a VPS, we need to enable VirtIO related options. You can use the standard menuconfig tool:
make menuconfigUse / key to search for VIRTIO_PCI and VIRTIO_MMIO. After you have located them, enable them as well as the new items that may show up after enabling these two. Also select Maintain a devtmpfs file system to mount at /dev so that critical device files are already available early in the boot process (CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT).
Save and quit the menuconfig.
If you have a rather small terminal or you're not fond of searching around for options, you can also hack .config on your own. Just search for VIRTIO and change
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_MMIO is not set
# CONFIG_VIRTIO_BLK may not be setto:
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_BLK=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y... and answer y to all the questions about VIRTIO in the following kernel compile section (but be sure to read the prompts before pressing enter).
We're going to compile the kernel now. Once you have returned to the shell, do:
make -j2 && make modules_installThe -j2 argument here means that the compile will run concurrently with 2 jobs. Change this to the number of your machine's cores plus one to best shorten the compile time. After you have started the compile, grab a cup of coffee and relax!
After the compile has finished, install the kernel to /boot by:
make installThen let's configure the fstab.
nano -w /etc/fstabChange /dev/ROOT to /dev/vda1 and /dev/SWAP to /dev/vda2, and comment out all the other lines.
Change the hostname to match the one you set when creating the machine.
nano /etc/conf.d/hostnameInstall net-misc/netifrc and configure the network.
emerge -a --noreplace net-misc/netifrc
nano /etc/conf.d/netAnd add the following line:
config_eth0="dhcp"Start the network interface at boot time.
cd /etc/init.d
ln -s net.lo net.eth0
rc-update add net.eth0 defaultEdit the hosts file.
nano -w /etc/hostsChange the root password.
passwdInstall various utilities including syslog-ng, logrotate, cronie, and dhcpcd.
emerge -av syslog-ng logrotate cronie dhcpcdEnable the services:
rc-update add sshd default
rc-update add cronie default
rc-update add syslog-ng defaultReview sshd_config (make sure that you don't lock yourself out!):
nano -w /etc/ssh/sshd_configInstall the grub bootloader:
emerge -a sys-boot/grub:2Install the bootloader and generate the config:
grub-install /dev/vda
grub-mkconfig -o /boot/grub/grub.cfgTest the installation
We're all set now! Exit from the chroot and issue the ultimate command for testing:
exit
rebootIf everything is correct, you'll be able to log in via ssh in moments after the system has booted up. If you encounter problems, don't panic. Use the VNC console as well as the minimal ISO to check what was wrong, and fix the errors.
You now have a brand-new Gentoo install sitting on your Rcs machine. Enjoy!