Daniel P. Barron

Gentoo Eulora Quest

Monday, July 31, 2017 

This recipe doesn't work anymore but serves as a historical record. See trinque's work on the subject.


My appologies for not publishing this sooner, as this recipe may come in handy for whatever nonsense is about to go down tomorrow. You may be one of the many people reading the log for the first time, looking for an answer to the question: how can I safely keep my bitcoin now that the USGcoinists are going full retard? I propose that you make an Eulora machine and buy coppers! The in-game currency is backed one-to-one with the real bitcoin, and it's a lot easier to get going than a real node. Of course you'd have to trust Mircea Popescu, but bitcoin wouldn't be worth doing if he wasn't involved. If you are reading this, you probably already trust him with your bitcoin, whether you were aware of it or not.


This guide makes reference to an assortment of files which you may download here. It also assumes you have either a working linux machine or a bootable CD/DVD/USB linux; preferably Gentoo. I used some iso-on-a-flash-drive that I made years ago, but I don't imagine you'd have problems with something similar. It also assumes the machine you'll be installing on has a 64 bit CPU, and that the video card is NVIDIA. If you don't have either of these things, you'll have to tweak the recipe. And finally, if you don't feel like doing all this, I can do it for you and ship the result. You can have your very own Eulora-os laptop for 10 million copper (0.1 BTC) shipped. Contact me for details. You must be in the WoT. USD accepted for 20% premium.

Installing Gentoo for Eulora

Zero out the beginning of your hard drive.

livecd ~ # dd if=/dev/zero of=/dev/sda count=1 bs=1M
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0187842 s, 55.8 MB/s

Create a couple partitions on the hard drive. One is for /boot and the other is for everything else. You may not need to create a separate boot partition, depending on your motherboard firmware, but it doesn't hurt. The boot partition doesn't need to be more than 64 megabytes, which is specified by typing +64M when it asks for the last sector. The other partition can take up the rest of the hard drive.

livecd ~ # fdisk /dev/sda
Welcome to fdisk (util-linux 2.28).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x8084e543.

Command (m for help): p
Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 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: dos
Disk identifier: 0x8084e543

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1):
First sector (2048-156301487, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-156301487, default 156301487): +64M

Created a new partition 1 of type 'Linux' and of size 64 MiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2):
First sector (133120-156301487, default 133120):
Last sector, +sectors or +size{K,M,G,T,P} (133120-156301487, default 156301487): 

Created a new partition 2 of type 'Linux' and of size 74.5 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Create the filesystems. I use ext2, but others should also work. If you go with something else, you may need to modify the kernel config later on.

livecd ~ # mkfs.ext2 /dev/sda1
mke2fs 1.43.1 (08-Jun-2016)
/dev/sda1 contains a ext2 file system
	last mounted on /boot on Thu Jun 22 16:07:22 2017
Proceed anyway? (y,n) y
Creating filesystem with 65536 1k blocks and 16384 inodes
Filesystem UUID: a4b57647-b867-4d75-9238-94c361cb7ac4
Superblock backups stored on blocks:
	8193, 24577, 40961, 57345

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

livecd ~ # mkfs.ext2 /dev/sda2
mke2fs 1.43.1 (08-Jun-2016)
Creating filesystem with 19521046 4k blocks and 4882432 inodes
Filesystem UUID: be4a30df-eb2f-433a-8fa4-6b5df5d8fae0
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

Mount the root filesystem and copy some files into it.

livecd ~ # mount /dev/sda2 /mnt/gentoo
livecd ~ # mkdir /mnt/usb
livecd ~ # mount /dev/sdc /mnt/usb
livecd ~ # cp -r /mnt/usb/files /mnt/gentoo/
livecd ~ # umount /mnt/usb

Check the date. If it's not ~accurate, fix it with date -s "whatever". If you don't do this, you will get very strange errors later on and it won't be clear why they are happening.

livecd ~ # date
Thu Jun 22 16:22:10 UTC 2017 i

Change directory to the mounted root filesystem. Copy the stage3 tarball and its related files there. Verify it with gpg. ii Untar it. Remove those files when done; you don't need them anymore.

livecd ~ # cd /mnt/gentoo/
livecd gentoo # cp files/stage3-amd64-hardened+nomultilib-20161208.tar.bz2* ./
livecd gentoo # gpg --verify stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS.asc
gpg: directory '/root/.gnupg' created
gpg: new configuration file '/root/.gnupg/dirmngr.conf' created
gpg: new configuration file '/root/.gnupg/gpg.conf' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: Signature made Fri Dec  9 14:27:29 2016 UTC using RSA key ID BB572E0E2D182910
gpg: Can't check signature: No public key

livecd gentoo # gpg --recv-keys BB572E0E2D182910
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key BB572E0E2D182910: public key "Gentoo Linux Release Engineering (Automated Weekly Release Key) " imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1

livecd gentoo # gpg --verify stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS.asc
gpg: Signature made Fri Dec  9 14:27:29 2016 UTC using RSA key ID BB572E0E2D182910
gpg: Good signature from "Gentoo Linux Release Engineering (Automated Weekly Release Key) " [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 13EB BDBE DE7A 1277 5DFD  B1BA BB57 2E0E 2D18 2910
gpg: WARNING: not a detached signature; file 'stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS' was NOT verified!

livecd gentoo # diff stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS.asc
0a1,3
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
8a12,27
> -----BEGIN PGP SIGNATURE-----
>
> iQIcBAEBCAAGBQJYSr9RAAoJELtXLg4tGCkQYWAP/ibUFSp9G/nHwFkPDPzGqDro
> jOuGub7sExvikb8/fruT7QH2/zfxXTOTom78A4x1EqMWzwISNG6v8UVHboUt86tl
> esVK4vC85hxLewFm41igMmHoDNUsY7+DWV3C4sF+E41gtAxSZ1yHbH3LBq34Pzd4
> 6A2d5EVCm91QuZsTxSFFck+zi+y5vk1zaE4HIC9L2OFWyVHxt2T5taLzqDe2yAXz
> NHEjtaMre0Mn1VzeaV0AABPYsUb1EmnpSHH3oT7qKGMLATPaoz9ImSrETI/GJWQp
> EArCaGd7JahVnPlyRbI3GgtODrchDvm4tDdsQhFjEryzpSB5fftMDnhTDteI5b8o
> omYEewfDHUK8m4dTbRJuZU6shdoQ1KJdux2ftSwlcrDnyI9lmuDalsit93ivjdAH
> TrOCPhjpCt3bLzb3ZXgeaIpP8HwglLiTZ2FRHYgbEv3ZfjoWxMMjRbdj04M49mBQ
> PR9ZbSNwcxucAtCQLwBEtGlfm6c7VoMKLM612YhUoS2/O/7ZeMibzGGxqziTK1q8
> JfbiSqPTlfquyeVJRp+l5Qjgg7BK4e1HDnQbq4KOL5XBhwIK9+bcsOM0DG8q8BBH
> CIOleg0CX4509r7aZ5Bv+L1ZR/xeN2fqCXtjy1yAEI/NLUQRMtxfNr1IsRUzbTjO
> Yl/EAoXWpK2iuhKDv/SC
> =9jU6
> -----END PGP SIGNATURE-----

livecd gentoo # grep $(sha512sum stage3-amd64-hardened+nomultilib-20161208.tar.bz2) stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS
stage3-amd64-hardened+nomultilib-20161208.tar.bz2.DIGESTS:57b9cd8f1d45229655f3dd13a12c2b0860ebe55b8e6a3ca2cbc0ad47daa22dc21904872d4f2193ae964e1853272b7555338f5609296ebf60609bc8a372203f41  stage3-amd64-hardened+nomultilib-20161208.tar.bz2

livecd gentoo # tar xvjpf stage3-amd64-hardened+nomultilib-20161208.tar.bz2 --xattrs --numeric-owner

...

livecd gentoo # rm stage3-amd64-hardened+nomultilib-20161208.tar.bz2*

Copy various files into place. The portage make.conf defines some global variables for the gentoo package system. You may need to tweak this file, particularily to reflect how many CPU cores you have. In that case, you'd want to change the MAKEOPTS line. Mine says -j4 because my machine has 4 cores.

livecd gentoo # cp files/etc-portage-make.conf etc/portage/make.conf
livecd gentoo # cat etc/portage/make.conf
CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# These are the USE and USE_EXPAND flags that were used for
# buidling in addition to what is provided by the profile.
USE="-libnotify -consolekit -gtk3 -systemd -cups -dbus -gpm -avahi -gnome \
     -tls-heartbeat alsa"
CPU_FLAGS_X86="mmx sse sse2"
PORTDIR="/usr/portage"
DISTDIR="${PORTDIR}/distfiles"
PKGDIR="${PORTDIR}/packages"
MAKEOPTS="-j4"
INPUT_DEVICES="evdev"
VIDEO_CARDS="nvidia"

GENTOO_MIRRORS="http://gentoo.gossamerhost.com http://gentoo.supp.name/ http://mirror.neolabs.kz/gentoo/pub http://gentoo.prz.rzeszow.pl http://mirrors.xservers.ro/gentoo/ http://gentoo.bloodhost.ru/ http://gentoo.wheel.sk/"

I'm not sure what repos.conf and resolv.conf are for, but they're in the official gentoo installation notes and seem ~important.

livecd gentoo # mkdir /mnt/gentoo/etc/portage/repos.conf
livecd gentoo # cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

livecd gentoo # cp -L /etc/resolv.conf /mnt/gentoo/etc/

Next you need to copy in some files that will further limit the way gentoo's package system works. The ones for dieharder and ent are mostly for testing a FG unit with a 64-bit CPU, which isn't inherently necessary to run Eulora, but you should better do it anyway.

livecd gentoo # mkdir etc/portage/package.accept_keywords

livecd gentoo # cp files/etc-portage-package.accept_keywords-dieharder etc/portage/package.accept_keywords/dieharder
livecd gentoo # cat etc/portage/package.accept_keywords/dieharder
# required by app-crypt/dieharder (argument)
=app-crypt/dieharder-3.31.1-r1 ~amd64

livecd gentoo # cp files/etc-portage-package.accept_keywords-ent etc/portage/package.accept_keywords/ent
livecd gentoo # cat etc/portage/package.accept_keywords/ent
# required by sci-mathematics/ent (argument)
=sci-mathematics/ent-101202 ~amd64

The crapolade file was curated by Stanislav to prevent most of the nastiest packages from getting pulled in.

livecd gentoo # cp files/etc-portage-package.mask-crapolade etc/portage/package.mask/crapolade
livecd gentoo # cat etc/portage/package.mask/crapolade
sys-apps/systemd
sys-fs/udev
media-video/libav
gnome-base/gconf
>=app-crypt/gnupg-2.0.22
app-accessibility/at-spi2-atk
app-accessibility/at-spi2-core
sys-apps/dbus
sys-auth/consolekit
sys-auth/polkit
gnome-extra/polkit-gnome
dev-util/gdbus-codegen
gnome-base/dconf
>=x11-libs/gtk+-3.0.0

And you'll want to mask some versions of things so that there aren't conflicts later. I restrict the kernel sources version because the later ones are not compatible with the NVIDIA drivers I have. The perl stuff is because perl sucks. There's more about that later on in this guide.

livecd gentoo # cp files/etc-portage-package.mask-gcc etc/portage/package.mask/gcc
livecd gentoo # cat etc/portage/package.mask/gcc
>=sys-devel/gcc-5.4.0

livecd gentoo # cp files/etc-portage-package.mask-gentoo-sources etc/portage/package.mask/gentoo-sources
livecd gentoo # cat etc/portage/package.mask/gentoo-sources
>sys-kernel/gentoo-sources-4.1.35

livecd gentoo # cp files/etc-portage-package.mask-perl etc/portage/package.mask/perl
livecd gentoo # cat etc/portage/package.mask/perl
dev-lang/perl-5.24.1-r1
>dev-perl/XML-Parser-2.440.0
>=sys-apps/texinfo-6.1

livecd gentoo # cp files/etc-portage-package.use-gtk etc/portage/package.use/gtk
livecd gentoo # cat etc/portage/package.use/gtk
# required by dev-cpp/cairomm (argument)
>=dev-cpp/cairomm-1.12.0-r1 X
# required by x11-libs/cairo (argument)
>=x11-libs/cairo-1.14.8 X
# required by x11-libs/wxGTK-3.0.2.0-r2::gentoo[X]
# required by x11-libs/wxGTK (argument)
>=x11-libs/pango-1.40.5 X

livecd gentoo # cp files/etc-portage-package.use-sysklogd etc/portage/package.use/sysklogd
livecd gentoo # cat etc/portage/package.use/sysklogd
app-admin/sysklogd logrotate

The portage/world file is a big one. It isn't something you usually want to modify directly as it gets automatically updated whenever you use emerge, but you aren't even running the new system yet, and this is by far the easiest way to get all the packages installed. The list is an assortment of basic stuff you'd want anyway, and the rest is stuff Eulora needs/wants. I may have included a few too many, or left out a few, but this list will result in the game starting up with no errors on the splash screen. You may notice that there are no desktop environments, or even window managers! This recipe lets you run Eulora from command line!! How cool is that?

livecd gentoo # cp files/var-lib-portage-world var/lib/portage/world
livecd gentoo # cat var/lib/portage/world
app-admin/logrotate
app-admin/sysklogd
app-crypt/dieharder
app-crypt/gnupg
app-editors/nano
app-editors/vim
app-misc/screen
app-portage/gentoolkit
app-text/aspell
dev-games/ode
dev-util/ftjam
dev-vcs/subversion
media-gfx/nvidia-cg-toolkit
media-libs/alsa-lib
media-libs/assimp
media-libs/jpeg
media-libs/libpng
media-libs/openal
media-libs/speex
media-sound/alsa-utils
media-sound/vorbis-tools
net-misc/dhcpcd
net-misc/netifrc
sci-mathematics/ent
sys-apps/mlocate
sys-apps/pciutils
sys-apps/rng-tools
sys-boot/lilo
sys-devel/gdb
sys-kernel/genkernel
sys-kernel/gentoo-sources:4.1.35
sys-process/cronie
www-client/lynx
x11-apps/xrandr
x11-base/xorg-server
x11-libs/cairo
x11-libs/gtk+
x11-terms/xterm

Your etc/fstab may need to be different, depending on what the name of your hard drive is and what filesystem you picked. But it's very likely you'll want it to look like this.

livecd gentoo # cp files/etc-fstab etc/fstab
livecd gentoo # cat etc/fstab
/dev/sda1		/boot		ext2		noauto,noatime	1 2
/dev/sda2		/		ext2		noatime		0 1
#/dev/cdrom		/mnt/cdrom	auto		noauto,ro	0 0
#/dev/fd0		/mnt/floppy	auto		noauto		0 0

Mount some things so that you can start "using" your new system. Of course you'll still be using whatever kernel is in your temporary installer, but chroot will let you do everything else as if you were using this new creation.

livecd gentoo # mount -t proc /proc /mnt/gentoo/proc
livecd gentoo # mount --rbind /sys /mnt/gentoo/sys
livecd gentoo # mount --rbind /dev /mnt/gentoo/dev

livecd gentoo # chroot /mnt/gentoo /bin/bash
livecd / # source /etc/profile
livecd / # export PS1="(chroot) $PS1"

(chroot) livecd / # mount /dev/sda1 /boot

The emerge-webrsync command gets gentoo's package system ready to work. It'll throw an error the first time; don't worry about that.

(chroot) livecd / # emerge-webrsync

...

The emerge --sync command further preps the package manager; specifically it will remove a bunch of stuff you don't need. The output is quite long and I have ommited it from these notes.

(chroot) livecd / # emerge --sync

...

You probably don't need to do the following eselect commands as the default choices are what you want, but it doesn't hurt.

(chroot) livecd / # eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/13.0
  [2]   default/linux/amd64/13.0/selinux
  [3]   default/linux/amd64/13.0/desktop
  [4]   default/linux/amd64/13.0/desktop/gnome
  [5]   default/linux/amd64/13.0/desktop/gnome/systemd
  [6]   default/linux/amd64/13.0/desktop/plasma
  [7]   default/linux/amd64/13.0/desktop/plasma/systemd
  [8]   default/linux/amd64/13.0/developer
  [9]   default/linux/amd64/13.0/no-multilib
  [10]  default/linux/amd64/13.0/systemd
  [11]  default/linux/amd64/13.0/x32
  [12]  hardened/linux/amd64
  [13]  hardened/linux/amd64/selinux
  [14]  hardened/linux/amd64/no-multilib *
  [15]  hardened/linux/amd64/no-multilib/selinux
  [16]  hardened/linux/amd64/x32
  [17]  hardened/linux/musl/amd64
  [18]  hardened/linux/musl/amd64/x32
  [19]  default/linux/uclibc/amd64
  [20]  hardened/linux/uclibc/amd64

(chroot) livecd / # eselect profile set 14

I'm sure at this point you've noticed some obnoxious news items throwing errors every time you do an emerge command. Here's how to fix it.

(chroot) livecd / # rm -rf /usr/portage/metadata/news/2017-04-10-split-and-slotted-wine
(chroot) livecd / # rm -rf /usr/portage/metadata/news/2017-07-16-systemd-rootprefix
(chroot) livecd / # eselect news read all
(chroot) livecd / # eselect news purge

Before you install the majority of the packages, perl needs to go first. This step is the root of most headaches, and it varies every single time I try to replicate my own build on a new machine. If the following commands throw errors for you, feel free to contact me and I'll do my best to figure out how the ****gnomes messed it up. Edit: in less than a month it has happened again. Before proceeding further, you'll need to get the right kernel. Most of the output is clipped in these notes. Answer yes when prompted.

(chroot) livecd / # emerge --ask --unmerge dev-lang/perl dev-perl/XML-Parser virtual/perl-File-Temp virtual/perl-Data-Dumper virtual/perl-Test-Harness sys-apps/texinfo 

...

(chroot) livecd / # emerge --ask dev-lang/perl dev-perl/XML-Parser sys-apps/texinfo

...

This next command will take the longest time. Here's where all those packages defined in the world file get installed. Feel free to review the output before answering yes, then go for a walk. It should finish without issue in a couple hours. If it doesn't, see previous step.

(chroot) livecd / # emerge --ask --update --deep --newuse @world

...

If you made it this far, congratulations; it's almost done!

(chroot) livecd / # emerge --depclean -va
(chroot) livecd / # perl-cleaner --all
(chroot) livecd / # emerge @preserved-rebuild

Set your timezone.

(chroot) livecd / # ls /usr/share/zoneinfo
Africa      CST6CDT  Etc      Greenwich  Kwajalein  PRC        UCT          posixrules
America     Canada   Europe   HST        Libya      PST8PDT    US           zone.tab
Antarctica  Chile    Factory  Hongkong   MET        Pacific    UTC          zone1970.tab
Arctic      Cuba     GB       Iceland    MST        Poland     Universal
Asia        EET      GB-Eire  Indian     MST7MDT    Portugal   W-SU
Atlantic    EST      GMT      Iran       Mexico     ROC        WET
Australia   EST5EDT  GMT+0    Israel     NZ         ROK        Zulu
Brazil      Egypt    GMT-0    Jamaica    NZ-CHAT    Singapore  iso3166.tab
CET         Eire     GMT0     Japan      Navajo     Turkey     localtime

(chroot) livecd / # echo "America/New_York" > /etc/timezone

(chroot) livecd / # emerge --config sys-libs/timezone-data

Configuring pkg...

 * Updating /etc/localtime with /usr/share/zoneinfo/America/New_York

Set your locale. In nano, uncomment whichever thing(s) you want. I do en_US.ISO-8859-1 and en_US.UTF-8.

(chroot) livecd / # nano -w /etc/locale.gen
(chroot) livecd / # locale-gen
 * Generating locale-archive: forcing # of jobs to 1
 * Generating 2 locales (this might take a while) with 1 jobs
 *  (1/2) Generating en_US.ISO-8859-1 ...                                             [ ok ]
 *  (2/2) Generating en_US.UTF-8 ...                                                  [ ok ]
 * Generation complete

(chroot) livecd / # eselect locale list
Available targets for the LANG variable:
  [1]   C
  [2]   POSIX
  [3]   en_US
  [4]   en_US.iso88591
  [5]   en_US.utf8
  [ ]   (free form)

(chroot) livecd / # eselect locale set 3
Setting LANG to en_US ...
Run ". /etc/profile" to update the variable in your shell.

(chroot) livecd / # env-update && source /etc/profile && export PS1="(chroot) $PS1"
>>> Regenerating /etc/ld.so.cache...

Copy the lilo and kernel config files into place. Yours may differ.

(chroot) livecd / # cp files/etc-lilo.conf /etc/lilo.conf
(chroot) livecd / # cat /etc/lilo.conf
large-memory
linear
prompt
boot        = /dev/sda
disk        = /dev/sda
bios        = 0x80
map         = /boot/map
install     = menu
menu-scheme = Wb:Yr:Wb:Wb
timeout     = 100
vga         = normal
default     = Gentoo
verbose     = 2

image       = /boot/vmlinuz-4.1.35-gentoo
label       = Gentoo
initrd      = /boot/initramfs-genkernel-x86_64-4.1.35-gentoo
root        = /dev/ram0
append      = "real_root=/dev/sda2 scandelay=5"
read-only

(chroot) livecd / # cp files/kernel-config /usr/src/linux/.config

Change directory to the kernel sources and compile it. Lilo will throw an error when you make install and that's because my config file told it there would be a ramdisk in /boot which hasn't been created yet. Don't worry about that.

(chroot) livecd / # cd /usr/src/linux

(chroot) livecd linux # make && make modules_install

...

(chroot) livecd linux # make install
(chroot) livecd linux # genkernel --install initramfs

...

Set your hostname.

(chroot) livecd linux # nano -w /etc/conf.d/hostname
(chroot) livecd linux # cat /etc/conf.d/hostname
# Set to the hostname of this machine
hostname="rizpah"

You might want to tweak etc/issue to prevent a minor warning.

(chroot) livecd linux # nano -w /etc/issue
(chroot) livecd linux # cat /etc/issue

This is \n (\s \m \r) \t

Copy in your preferred hosts file.

(chroot) livecd linux # cd /
(chroot) livecd / # cp files/etc-hosts /etc/hosts
(chroot) livecd / # nano -w /etc/hosts
(chroot) livecd / # cat /etc/hosts
127.0.0.1  rizpah localhost
::1        localhost

10.0.0.1	router
10.0.0.34	persis
10.0.0.98	rhoda
10.0.0.188	peninnah
10.0.0.195	naomi
10.0.0.222	sapphira

10.0.0.34	danielpbarron.com
91.218.246.33	trilema.com
216.151.13.77	wotpaste.cascadianhacker.com
216.151.13.77	p.bvulpes.com
46.166.170.207	qntra.net
104.131.72.249	btcbase.org
46.166.165.30	nosuchlabs.com
46.166.165.30	phuctor.nosuchlabs.com
208.94.116.204	loper-os.org
104.244.76.215	lobbesblog.com
192.121.170.137	logs.minigame.bz
54.83.32.137	eulorum.org
54.83.32.137	www.eulorum.org
104.192.170.198	wot.deedbot.org
172.86.178.46	deedbot.org
70.40.209.246	dianacoman.com

Add a few things to the default run-level. This means they will automatically run on system start.

(chroot) livecd / # rc-update add sysklogd default
 * service sysklogd added to runlevel default

(chroot) livecd / # rc-update add cronie default
 * service cronie added to runlevel default

(chroot) livecd / # rc-update add sshd default
 * service sshd added to runlevel default

Run lilo.

(chroot) livecd / # /sbin/lilo
Warning: LINEAR is deprecated in favor of LBA32:  LINEAR specifies 24-bit
  disk addresses below the 1024 cylinder limit; LBA32 specifies 32-bit disk
  addresses not subject to cylinder limits on systems with EDD-BIOS extensions;
  use LINEAR only if you are aware of its limitations.
raid_setup returns offset = 00000000  ndisk = 0
 BIOS   VolumeID   Device
Reading boot sector from /dev/sda
pf_hard_disk_scan: ndevs=2
  0800  8084E543  /dev/sda
  0810  13D41D02  /dev/sdb
device codes (user assigned pf) = 1
device codes (user assigned) = 1
device codes (BIOS assigned) = 1
device codes (canonical) = 3
Warning: Unable to determine video adapter in use in the present system.
Using MENU secondary loader
Calling map_insert_data
Secondary loader: 18 sectors (0x3600 dataend).
bios_boot = 0x80  bios_map = 0x80  map==boot = 0  map S/N: 8084E543
BIOS data check will include auto-suppress check

Boot image: /boot/vmlinuz-4.1.35-gentoo
Setup length is 31 sectors.
Mapped 7546 sectors.
Mapping RAM disk /boot/initramfs-genkernel-x86_64-4.1.35-gentoo
RAM disk: 7142 sectors.
The initial RAM disk will be loaded in the high memory above 16M.
Added Gentoo  *

 BIOS   VolumeID   Device
  80    8084E543    0800
  81    13D41D02    0810
Writing boot sector.
Backup copy of boot sector in /boot/boot.0800
Map file size: 88064 bytes.
RAID device mask 0x0000
2 warnings were issued.

Set your root password.

(chroot) livecd / # passwd
New password:
Retype new password:
passwd: password updated successfully

Find out the name of your ethernet device, and add it to the default run level.

(chroot) livecd linux # ifconfig
enp0s8: flags=4163  mtu 1500
        inet 10.0.0.91  netmask 255.255.255.0  broadcast 10.0.0.255
        ether 00:1c:c4:18:71:8a  txqueuelen 1000  (Ethernet)
        RX packets 2410269  bytes 2835138332 (2.6 GiB)
        RX errors 2  dropped 15  overruns 2  frame 0
        TX packets 1319107  bytes 275670289 (262.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Add it to etc/conf.d/net and to the default run-level.

(chroot) livecd linux # nano -w /etc/conf.d/net
(chroot) livecd linux # cat /etc/conf.d/net
config_enp0s8="dhcp"

(chroot) livecd linux # cd /etc/init.d
(chroot) livecd init.d # ln -s net.lo net.enp0s8
(chroot) livecd init.d # rc-update add net.enp0s8 default
 * service net.enp0s8 added to runlevel default

Exit and unmount some stuff. Then reboot! Lilo might hang on the first try for some reason; maybe it's just my machine. If you do a hard power down and back up it should work.

(chroot) livecd init.d # exit
exit
livecd gentoo # cd
livecd ~ # umount -l /mnt/gentoo/proc
livecd ~ # umount -l /mnt/gentoo/dev
livecd ~ # umount -l /mnt/gentoo/sys
livecd ~ # umount -R /mnt/gentoo
livecd ~ # reboot

Once you're in the new system, move that files directory into /root and run whichever NVIDIA driver works for your card. It'll ask if you want the 32-bit libraries and I'm not sure if this is needed. I've tried with and without and it works either way. Otherwise, answer yes to everything until it's finished.

rizpah ~ # mv /files ~/

rizpah ~ # ./files/NVIDIA-Linux-x86_64-304.134.run
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 304.134...............................................................................................................................................................

Add a eulora user account and put it in some groups. Also, unset its password and copy some files into its home directory. The unsetting password is mostly if you want your computer to boot straight into Eulora, which I explain how to do at the end of this guide. If that's not what you're gonna do, then feel free to set a password. And of course, that's done with the same command but without the -d part.

rizpah ~ # useradd -mG audio,video eulora

rizpah ~ # passwd -d eulora
passwd: password expiry information changed.

rizpah ~ # cp files/eulora* /home/eulora/
rizpah ~ # cp files/*.tar.gz /home/eulora/
naomi ~ # ls /home/eulora/
cal3d.tar.gz      eulora               eulora-development-install  eulora-v0.1.2b.tar.gz
cs_July24.tar.gz  eulora-bash_profile  eulora-gdb                  eulora-xinitrc

rizpah ~ # chown -R eulora:eulora /home/eulora

Switch to the eulora account, change directory, and move some files around.

rizpah ~ # su eulora
eulora@rizpah /root $ cd

This one sets some options for gdb which will let you figure out why Eulora crashed, which it sometimes does. Be sure to type bt in gdb if that happens. These options will cause it to automatically log to a file which you can wotpaste iii and post in #eulora.

eulora@rizpah ~ $ mv eulora-gdb .gdb
eulora@rizpah ~ $ cat .gdb
set logging file euclient.log
set logging on

These files will cause Eulora to run automatically when you log in as the eulora user account.

eulora@rizpah ~ $ mv eulora-xinitrc .xinitrc
eulora@rizpah ~ $ cat .xinitrc
xterm -maximized -fullscreen -e ~/eulora

eulora@rizpah ~ $ mv eulora-bash_profile .bash_profile
eulora@rizpah ~ $ cat .bash_profile
# /etc/skel/.bash_profile

# This file is sourced by bash for login shells.  The following line
# runs your .bashrc and is recommended by the bash info pages.
if [[ -f ~/.bashrc ]] ; then
	. ~/.bashrc
fi
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
	exec startx;
fi

eulora@rizpah ~ $ chmod +x eulora
eulora@rizpah ~ $ cat eulora
export LD_LIBRARY_PATH=$HOME/development/cal3d/src/cal3d/.libs/:$LD_LIBRARY_PATH
export CRYSTAL=$HOME/development/cs
export LD_LIBRARY_PATH="$HOME/development/cal3d/src/cal3d/.libs/:$HOME/development/cs/:"$LD_LIBRARY_PATH
gdb -x ~/.gdb -ex run -q --args ~/development/Eulora/euclient --fs

And finally, install Eulora!

eulora@rizpah ~ $ mkdir development
eulora@rizpah ~ $ mv *.tar.gz development/
eulora@rizpah ~ $ mv eulora-development-install development/install
eulora@rizpah ~ $ chmod +x development/install
eulora@rizpah ~ $ cd development/

eulora@rizpah ~/development $ sha512sum *.tar.gz
e61fea26d2696c5cdb2ed0d03b2fb8f31506a978798af1cc53be616ee7ab667931931ee30293a069292418a6915fb6a87910bfa94d05ac2f57c699e5bf6a4e77  cal3d.tar.gz
4c4dc7f6b534e6dccf18c25015abe34cbc899b1a7ec1b8225ce17fea328277e6059571d7e89a7c3897bd2a1ff44e3ffdd0299d73a56c23925351abef22cec1d5  cs_July24.tar.gz
4cc3bd15f73f6ddf926cb68e036eab073a38370944ec860727d1428d99b04fa337a815fc0d84ea2ff4aa30b950027292a8bad4fe5090f16ffc820b1d532c0822  eulora-v0.1.2b.tar.gz

eulora@rizpah ~/development $ cat install
tar -xzf cal3d.tar.gz
tar -xzf cs_July24.tar.gz
tar -xzf eulora-v0.1.2b.tar.gz
mv cs-forupload cs
ln -s EuloraV0.1.2 Eulora
cd cal3d
autoreconf --install --force
./configure --prefix=$HOME/development/cal3d
make
make install
export LD_LIBRARY_PATH=$HOME/development/cal3d/src/cal3d/.libs/:$LD_LIBRARY_PATH
cd ../cs
./configure --without-java --without-perl --without-python --without-3ds --with-cal3d=$HOME/development/cal3d --with-Cg=/opt/nvidia-cg-toolkit --with-CgGL=/opt/nvidia-cg-toolkit
jam -aq libs plugins cs-config walktest
export CRYSTAL=$HOME/development/cs
cd ../Eulora
./autogen.sh
./configure --with-cal3d=$HOME/development/cal3d --with-cs-prefix=$CRYSTAL --without-mysqlclient --without-sqlite3 --without-pq --without-hunspell
jam -aq client
export LD_LIBRARY_PATH="$HOME/development/cal3d/src/cal3d/.libs/:$HOME/development/cs/:"$LD_LIBRARY_PATH

eulora@rizpah ~/development $ ./install 

...

You should now be able to start Eulora by logging into the machine as user account eulora from the first terminal. And suppose you want this machine to boot up directly into Eulora, you can make the following changes.

rizpah ~ # diff /etc/inittab /etc/inittab.original
41,42c41
< c1:12345:respawn:/sbin/agetty -n -l /sbin/autologin 38400 tty1 linux
< #c1:12345:respawn:/sbin/agetty 38400 tty1 linux
---
> c1:12345:respawn:/sbin/agetty 38400 tty1 linux

rizpah ~ # cat /sbin/autologin
#!/bin/sh

exec login eulora
  1. I first typed this up in June, but I tested and fixed it last night. In only a month it no longer worked! ^
  2. for whatever that's worth considering it's signed by a WoT-nonperson ^
  3. You can put this file somewhere, give it +x, and pipe a log into it for a URL to paste.

    rizpah ~ # cp files/wotpaste /home/eulora/wotpaste
    rizpah ~ # chown eulora:eulora /home/eulora/wotpaste
    rizpah ~ # chmod +x /home/eulora/wotpaste
    rizpah ~ # cat /home/eulora/wotpaste
    echo $(curl -Ls -o /dev/null -w %{url_effective} -X POST -F "pastebox=$(cat /dev/stdin)" http://wotpaste.cascadianhacker.com -w %{url_effective})
    
    eulora@rizpah ~ $ cat euclient.log | ~/wotpaste
    http://wotpaste.cascadianhacker.com/pastes/6tMDf/?raw=true

     ^

2 Responses

  1. Wow, incredible weblog format! How lengthy have you been running a blog for? you make running a blog look easy. The overall look of your site is wonderful, let alone the content!!

  2. Thanks. Been doing it since 2016, although I've had a website hosted for a couple decades.

Leave a Reply

Your criticism is welcome. Your name and website are optional. Some HTML tags are allowed.