Dorion Mode

December 24, 2020

A Gentoo install on JWRD desktop

Filed under: JWRD — Tags: — Robinson Dorion @ 18:14

I managed to install Gentoo on my JWRD desktop with the software in the table below. Below the table I've documented the steps I took and the commands I issued to beat this thing into shape. I've included various example configs, adjust to suit your needs.

Part Make & Model
Compiler GCC 4.9.4
C library and linking method glibc 2.23 dynamic1
Kernel Linux 4.92
Coreutils binutils 2.25.13
Boot loader Lilo 24
Graphical Environment X11 1.19
Masterclass in Economy Eulora v1

1. Flash USB stick with Gentoo install env and boot

Obtain an install ISO from Gentoo and run :

dd if=/path/to/image.iso of=/dev/sdc bs=8192k

2. Modify BIOS to boot into USB

My BIOS menu is accessed by hitting F2 on boot. I enabled legacy boot mode4, then hit F8 to select the inserted USB as boot media.

3. Format the disk partitions and make filesystems.

fdisk -t dos /dev/sda

In fdisk, punch the p key to print the partition table, the m key for help and the a key to toggle a bootable flag on partition 1. I made 3 partitions leaving 100 GB of my 2 TB disk unpartitioned.

1 125M /boot
2 25G /
3 1874.875G /home

When you've got everything set, the w key writes your work to disk and exits.

mkfs.ext4 /dev/sda{1,2,3}

4. Mount your disks and install some Gentoo files.

mount /dev/sda2 /mnt/gentoo
cd /mnt/gentoo
tar xjvf /path/to/stage3-amd64-20170316.tar.bz2
cd usr
tar xjvf /path/to/portage-amd64-multilib-20170627.tar.bz2
mount /dev/sd1 /mnt/gentoo/boot

I installed the following :

/mnt/gentoo/etc/portage/make.conf
/mnt/gentoo/etc/portage/package.mask/crapolade
/mnt/gentoo/etc/portage/package.use/use.flags

While -suid is set in make.conf, it's enabled for x11-base/xorg-server in use.flags to allow starting X from non-root users.

I used those CFLAGS in make.conf to match the AMD Piledriver architecture of my CPU, adjust to fit your gear.

CFLAGS="-march=bdver2 O2 -pipe"

For the initial install, you may want DNS because if the GENTOO_MIRRORS in your make.conf don't have the specific package you're looking for, portage will try some additional mirrors whose URLs it resolves with DNS. If you don't need DNS and can manage purely on a /etc/hosts basis, more power to you.

cp /etc/resolv.conf /mnt/gentoo/etc/

5. Enter the chroot

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

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

6. Set profile, time and locale, and proper Python

eselect profile list
[X] default/linux/amd64/13.0

echo "UTC" > /etc/timezone
emerge --config sys-libs/timezone-data

nano -w /etc/locale.gen

en_US ISO-8859-15
en_US.UTF-8 UTF-8

env-update && source /etc/profile && export PS1="(chroot) $PS1"

Gentoo is married to Python, which is a clear mark against. Nevertheless, if we're stuck with Python, Python2 it'll be.

eselect python list
eslect python set 2

Created /etc/portage/package.use/python

PYTHON_TARGETS python2_7 -python3_4
PYTHON_SINGLE_TARGET python2_7 -python3_4

7. Configure and Install Kernel and Related Utilities

PCI utils is handy even if you already think you know what all your hardware is.

emerge --ask sys-apps/pciutils

The Lilo bootloader will be run at the `make install` step of the kernel install.

emerge -av sys-boot/lilo

Install /etc/lilo.conf within the chroot.

I'm in the habit of adding a user named build with a home directory at /var/build which I use for compiling packages by hand.

useradd -d /var/build -m -s /bin/bash build
su - build

tar xJf /usr/src/linux-4.9.tar.xz
cd linux-4.9
xz -dc /usr/src/patch-4.9.95.xz |patch -p1

I've archived the kernel configuration file I installed at /var/build/linux-4.9/.config. I used the thinkpad-static.config from Gales Linux as a basis and adjusted to the needs of this deployment. To make any changes issue :

make menuconfig

When you're all set with your kernel config,

make

(as root)
make install
cd /boot
cp vmlinuz-4.9.95 bzImage-4.9.956

8. Install some basic config files

/etc/fstab
/etc/conf.d/hostname

Set a static IP and set the network interface to the default run level.

nano /etc/conf.d/net
cd /etc/conf.d/
ln -s net.lo net.enp3s0
rc-update add net.enp3s0 default

9. Exit the Chroot and Re-enter to remove udev and install static device nodes

I learned how to do this in the Old Fashioned Install Gentoo wiki article.

Mount /proc but not /dev inside the chroot. We will be using a static /dev, so we have to emerge dev-static. With /dev bind mounted in the normal way, our static dev would go into the parents devtmpfs which is in RAM. If you are very very lucky, the static /dev provided by the stage3 may be enough to get you started.

The stage3 tarball is provided with a static /dev that includes sda ... sdd inclusive. If you need more that that, use mknod to make the extra /dev entries.

Mount the special filesystems:

mount -t proc proc /mnt/gentoo/proc

Enter the chroot:

chroot /mnt/gentoo /bin/bash

Set the chroot environment:

env-update
source /etc/profile
export PS1="(chroot) $PS1"

The Old Fashioned article says to first issue:

emerge --ask --unmerge sys-fs/udev

However, mine reported that wasn't installed, not sure. So I issued:

emerge --ask --unmerge virtual/udev

Now for static-dev, which installed makedev-3.23.1 :

emerge --ask sys-fs/static-dev

Add some groups to please MAKEDEV :

groupadd -r serial
groupadd -r kvm

Make some devices:

MAKEDEV -x tty_basic
MAKEDEV std
MAKEDEV sd{a,b,c}
MAKEDEV random
MAKEDEV snd7

And so on as needed.

Disable now spurious services :

rc-update show -V |less
rc-update delete swap boot
rc-update delete modules boot
rc-update delete udev sysinit
rc-update delete udev-trigger sysinit
rc-update delete devfs sysinit

Uninstall now spurious dependencies :

emerge --ask --depclean

The last command should offer to remove the following packages :

sys-apps/hwids
sys-fs/udev-init-scripts
sys-libs/libcap
dev-util/gperf
virtual/udev

10. Reboot

Before getting into any more changes, I like to reboot here to make sure everything I've done this far is working.

exit
cd
umount /mnt/gentoo/{proc,boot,}
reboot

Assuming you booted clean, continuamos..

11. Install X11 Window System

I went straight to emerging fluxbox, which is my preferred window manager and pulls in xorg-server and its dependencies. Consult the article on X on the Gentoo wiki as needed.

(as root)
emerge -av x11-wm/fluxbox

Which pulls in x11-base/xorg-server-1.19.38. Consult and adjust the /etc/portage/ files linked in section 4 above with the USE flags of your preference. The default media-libs/mesa had gallium enabled, which then pulls in llvm as a hard requirement. I think this is Gentoo braindamage because I consulted Jacob's recipe for building X by hand and he had gallium enabled for mesa without llvm. Anyways, I built with the gallium flag disabled, but dmesg reported the r600_dri.so file was not found. I then added modified make.conf to add r600 to the VIDEO_CARDS variable and rebuilt. According to Gentoo, mesa with gallium and thus llvm is required to support the r600 driver.

12. Configure and run X11.

I'm running X in the most straightforward way, i.e. login to a tty and issue startx to launch fluxbox. To achieve that, the following config files were installed.

echo "XSESSION=fluxbox" > /etc/env.d/90xsession
env-update

Ensure the user you plan to run startx with is in the video group in /etc/group, e.g.

video:x:27:root,dorion

In the $HOME directory of the non-root user, I added a file named .xsession with contents :

#!/bin/sh
. /etc/profile
exec startfluxbox

I'm running startx under tmux because that allows me to detach the X session and and log out of the user when I'm not around. This isn't going to stop someone who has physical access and knows what they're doing, but achieves some level of login-logout functionality. If you don't have tmux, install it now.

emerge -av app-misc/tmux

X via Gentoo is supposed to run out of the box.

tmux
startx

Startx invokes /etc/X11/xinit/xinitrc which invokes /etc/X11/xinit/xserverrc which execs /usr/bin/X. I modified xserverrc to pass the -nolisten tcp option to X.

Some potentially helpful Gentoo links :

13. Conclusion

A planned use for this machine is to play Eulora. I managed to install the v1 client and its dependencies, which will be documented in a separate article to follow.

  1. I'd prefer to use neither glibc nor dynamic linking because poettering is negrated, but I suspect musl in Gentoo is going to give me more headaches than it's worth and Gales is purely text for the time being. []
  2. I'd prefer to use Linux 2, but haven't managed that config. []
  3. Eulora requires binutils 2.26 and earlier. In my portage tree, 2.25.1 was the default, but I also have an ebuild for 2.26.1. Gales uses 2.24. []
  4. This board also comes with UEFI []
  5. Tailor to suit you. []
  6. To match my lilo.conf []
  7. Also ensure the users you want to have access to audio are in the audio group in /etc/group []
  8. This eschews x11-base/xorg-x11 which has quite a few more packages and so far I've managed without it. []

December 19, 2020

Romanian 1, Practice 6

Filed under: Philologia — Robinson Dorion @ 14:14

I practiced exercise 6 this morning. It's a ~30 minute session of listening and speaking building on the previous practices.

As dori sa mananc ceva. Si as dori si1 sa beau ceva. Ati dori sa mancati si sa beti ceva ?2

Da, si eu. Unde ati dori sa mancati ?3

La dumneavoastra.4

La mine ? Cand ?5

Da, la dumneavoastra. Acum.6

Cred ca nu, nu acum. Mai tarziu.7

Stiti unde este strada Eroilor ? Este aici, nu-i asa ?8

Nu stiu.9

Vorbeti Romaneste foarte bine.10

Nu, nu vorbesc foarte bine, dar multsumesc.11

Ba da, ba da.12

Inteleg putin si vorbesc putin.13

  1. And and too/also are the same. []
  2. Me gustaria comer algo. Y me gustaria tomar algo tambien. Le gustaria comer y tomar algo ?
    Je voudrais manger quelque chose. Et je voudrais boire quelque chose aussi. Voudriez-vous manger et boire quelque chose ?
    I would like to eat something. And I would like to drink something too. Would you like to eat and drink something ? []
  3. Si, yo tambien. Donde le gustaria comer ?
    Oui, moi aussi. Ou voudriez-vous manger ?
    Yes, me too. Where would you like to eat ? []
  4. En su casa.
    Chez vous.
    At your place. []
  5. En mi casa ? Cuando ?
    Chez moi ? Quand ?
    At my place ? When ? []
  6. Si, en su casa. Ahora.
    Oui, chez vous. Maintenant.
    Yes, your place. Now. []
  7. Creo que no, ahora no, Mas tarde.
    Je ne crois pas, pas maintenant, plus tard.
    I don't think so, not now, later. []
  8. Sabe donde esta la calle Eriolor ? Esta aqui, no es asi* ?
    Savez vous ou est-ce la rue Eroilor ? C'est ici, n'est-ce pas ?
    Do you know where Eroilor street is ?

    *I find myself more likely to ask, "verdad ?", i.e. true ? []

  9. Yo no se.
    Je ne sais pas.
    I don't know. []
  10. Usted habla rumana muy bien.
    Vous parlez roumaine tres bien.
    You speak Romanian very well. []
  11. No, no hablo muy bien, pero gracias.
    No, je ne parle pas tres bien, mais merci.
    No, I don't speak very well, but thank you. []
  12. Pero si, pero si.
    Mais si, mais si.
    But yes, but yes. []
  13. Entiendo poco y hablo poco.
    Je comprends un peu et pale un peu.
    I understand a little and speak a little. []

November 7, 2020

Romanian 1, Practice 5

Filed under: Philologia — Robinson Dorion @ 14:47

I practiced exercise 5 this morning. It's a ~30 minute session of listening and speaking building on the previous practices.

I learned that in Ro the conditional and optative moods are the same. The optative doesn't exist is French and Spanish, so the present conditional was used.

A helpful reader pointed out I was mixing up my French tenses in previous exercises, so I worked to clean that up here. I kept in mind to use the 2nd person plural in Romanian and French for formal address and 3rd person singular in Spanish.

Buna ziua Donule.1

Buna ziua Domnisoara, ce mai faceti ?2

Eu ? Foarte bine. Si dumneavoastra ? Sunteti bine ?3

Da, sunt bine, multumesc. As dori sa beau ceva. Ati dori sa beti ceva ?4

Cred ca nu, dar as dori sa mananc ceva. Ati dori sa mancati ceva ?5

~~Present indicative.~~
Doriti sa mancati ceva ?6

Nu doresc sa mananc, multumesc.7

Nu stiu.8

  1. Buenos dias Senor.
    Bonjour Monsoir.
    Good day Sir. []
  2. Buenos dias Senorita. Como esta usted ?
    Bonjour Mademoiselle, comment allez-vous ?
    Good day Miss, how are you ? []
  3. Yo ? Muy bien. Y usted ? Esta bien ?
    Moi ? Tres bien. Et vous ? Allez-vous bien ?
    Me ? Very well. And you ? Are you well ? []
  4. Si, estoy bien, gracias. Me gustaria* beber algo. Le gustaria beber algo ?
    Oui, je vais bien, merci. Je voudrais boire quelquechose. Voulez-vous boire quelque chose ?
    Yes, I'm well, thanks. I'd like to drink something. Would you like to drink something ?

    *"Yo querria" can also be used, but I've found myself using gustar more in the conditional. []

  5. Creo que no, pero me gustaria comer algo. Le gustaria comer algo ?
    Je crois que non, mais je voudrais manger quelque chose. Voudreiz-vous manger quelque chose ?
    I think not, but I'd like to eat something. Would you like to eat something ? []
  6. Quiere comer algo ?
    Voulez-vous manger quelque chose ?
    Do you want to eat something ? []
  7. No quiero comer, gracias.
    Je ne veux pas manger, merci.
    No, I don't want to eat, thanks. []
  8. Yo no se.
    Je ne sais pas.
    I don't know. []

November 6, 2020

Romanian 1, Practice 4

Filed under: Philologia — Robinson Dorion @ 17:39

I practiced exercise 4 this morning. It's a ~30 minute session of listening and speaking building on the previous practices.

Buna ziua Doamnisoara.1

Buna ziua Donule.2

Va rog, stiti unde este strada Eminescu ?3

Da, cred ca este aici.4

Multumesc, si stiti unde este bulevard Popular ? Este acolo ?5

Da, este acolo. Cred ca vorbiti Romaneste foarte bine. 6

Multumesc, dar vorbesc putin Romaneste.7

Dar da8, cred que vorbiti Romaneste foarte bine si sunt Romanca.9

  1. Buenos dias Senorita.
    Bonjour Mademoiselle.
    Good day Miss. []
  2. Buenos dias Senor.
    Bonjour Monsoir.
    Good day Sir. []
  3. Por favor, sabe donde esta la calle Eminescu ?
    S'il vous plait, savez vous ou est-ce la rue Eminescu ?
    Please, do you know where Eminescu street is ? []
  4. Si, creo que esta aqui.
    Oui, je crois que c'est ici.
    Yes, I think it's here ? []
  5. Gracias, y sabe usted donde esta el bulevar Popular ? Esta alla ?
    Merci, y savez vous ou est-ce l'boulevard Popular ? Est-ce la-bas ?
    Thank you, and do you know where Popular boulevard is ? Is it over there ? []
  6. Si, esta alla. Creo que habla Ruman muy bien.
    Oui, c'est la-bas. Je crois que vous parlez Roumain tres bien.
    Yes, it's over there. I think you speak Romanian well. []
  7. Gracias, pero hablo poquito Ruman.
    Merci, mais je parle un peu Roumain.
    Thank you, but I speak a little Romanian. []
  8. Sounded like "Ba da", used to contradict a negative. []
  9. Pero si, creo que habla ruman muy bien y soy Romana.
    Mais si*, je crois que vous parlez Romaine tres bien et je suis Romaine.
    But yes, I think you speak Romanian very well and I'm Romanian.

    *Used to contradict. []

November 5, 2020

Romanian 1, Practice 3

Filed under: Philologia — Robinson Dorion @ 14:48

I practiced exercise 3 this morning. It's a ~30 minute session of listening and speaking. There is much overlap from yesterday's practice.

I took the opportunity to also practice my spanish and french because they're cousins of romanian and I want to continue sharpening those. Romanian has the ~same rolling r as spanish.

Buna ziua, Doamna !1

Sunteti American ?2

Da, si dumneavoastra ? Sunteti Romanca ?3

Da, si ce mai faceti ? Sunteti bine ?4

Da, sunt bine, multumesc.5

Stiti Romaneste ?6

Putin, dar nu stiu Romaneste foarte bine.7

Scuzati-ma, va rog.8

La revedere.9

  1. Buenos dias, Senora !
    Bonjour, Madam !
    Good day, Ma'am ! []
  2. Usted es Americano ?
    Vous etes Americain ?
    Are you American ? []
  3. Si, y usted ? Usted es rumana ?
    Oui, et vous ? Vous etes roumain ?
    Yes, and you ? Are you Romanian ? []
  4. Si, y como esta usted ? Esta bien ?
    Oui, et vous ? Comment allez-vous ? Ca va bien ?
    Yes, and how are you ? Are you well ? []
  5. Si, estoy bien, gracias.
    Oui, je vais bien, merci.
    Yes, I am well, thank you. []
  6. Sabe usted rumana ?
    Savais vous roumaine ?
    Do you know Romanian ? []
  7. Un poco, pero no se rumana muy bien.
    Un petite, mais je ne sais pas roumaine tres bien.
    A bit, but I don't know Romanian well. []
  8. Perdoname, por favor.
    Pardonne moi, s'il vous plait.
    Pardon me, please. []
  9. Adios.
    Aurevoir.
    Goodbye. []

November 4, 2020

Romanian 1 Practice 2

Filed under: Philologia — Robinson Dorion @ 16:07

I practiced Pimsleur's Romanian 1, Practice 2 this morning. It's a ~30 minute session of listening and speaking with a lot of repetition. I looked up the spelling following the audio. Below are the phrases I practiced written in all ascii because I'm not yet in practice of using the entire Romanian alphabet nor have I yet looked into transliteration.

Buna ziua !1

Ce mai faceti domnisoara ?2

Intelegi engleza ?3

Ce mai faceti Domnule ?4

Sunt foarte bine, multumesc doamna.5

Nu, nu inteleg.6

Sunteti Roman ?7

Sunteti American.8

Scuzati-ma doamna.9

Intelegi doamna ?10

Inteleg putin Romaneste.11

La revedere !12

  1. Good day ! []
  2. How are you miss ?*

    * Literarlly, what more do you do miss ? []

  3. Do you understand Engligh ? []
  4. How are you Sir ? []
  5. I am very well, thanks ma'am. []
  6. No, I don't understand. []
  7. Are you Romanian ? []
  8. You are American. []
  9. Excuse me ma'am. []
  10. Do you understand ma'am ? []
  11. I understand a little Romanian. []
  12. Good bye ! []

November 1, 2020

A JWRD desktop aiming for open graphics

Filed under: JWRD — Robinson Dorion @ 19:34

I am in the process of building a desktop computer. I approached the task on the following fronts :

  1. a motherboard supported by an open source BIOS, e.g. Coreboot;
  2. an AMD CPU which is not locked down by AMD's Platform Security Processor (PSP);
  3. a graphics card with minimal to no proprietary microcode.

This was motivated by a couple goals :

  1. expand JWRD's hardware offering;
  2. have a desktop with which to play the masterclass in economy mascarading as a video game: Eulora published by The Ministry of Games.

The components I chose are :

Component Make & Model Note
Motherboard ASUS F2A85M
APU AMD A8-5600k with AMD Radeon HD 7560D 4 cores, 3.6GHz base clock
RAM Corsair CMZ8GX3M1A1600C10 DDR3, 2 x 8 GB
SSD Samsung 860 EVO 1 TB
HDD Seagate Barracuda 3.5" SATA, 2 TB
Power Supply CORSAIR TX650M 650W, 80 + Gold, semi-modular
Case Corsair Carbide 200R Mid-tower ATX
Case Fans Corsair AF120 3 x 120mm
UPS CyberPower CP1500AVRLCD 900W

Motherboard

I started my search by reading up on motherboard candidates via the Coreboot supported mainboards and board status wiki pages and git respository. The Coreboot wiki has a dedicated page for the ASUS F2A85M (archived).

This board is equipped with an FM2 socket which supports AMD APUs of the A85 Piledriver line on the CPU side and Terra Scale 3 based GPUs of the Trinty line.

The Read Only Memory (ROM) chip is a Winbound 25Q64F that will be flashed externally with an 8 pin chip clip to replace the vendor UEFI/BIOS with a BIOS I compile.

APU

To pick the APU, my starting point was the ASUS website which lists the 391 supported chips. Despite the long list, from what I managed to find, the supply for these is tight. This makes sense given they went out of print in October of 2012 and are supported by Coreboot.

For graphics support, I started at the wiki of the X Window System and in particular the page on the Radeon line of graphics cards due to the Radeon integration in many of the APUs supported by the motherboard.

I'm a bit less of a graphics noob than when I started this process, but still very much a graphics noob. As far as I understand at present, there are no graphics cards which do not require proprietary firmware. There are some rumors that the abandoned radeonhd driver did not require firmware compiled by the vendor, but the Pleased to meet you, hope you guess my name (archived) and Pleased to flash you, hope you change my name (archived) articles by Luc Verhaegen record that if you were familiar with the details, that was never the case. RadeonHD relied on the AtomBIOS, the source code of which was never published, to whit,

At no point do AtomBIOS functions come close to fitting the definition of script, at least not as we get them. It might start life as "scripts", but what we get is the bytecode, stuck into the ROM of our graphics cards or our mainboard.

After reading this, I didn't bother adding a discrete graphics card supported by radeonhd for this iteration. Despite being over a decade old, I did find some radeonhd supported cards still available.

For the APU, I picked the AMD A8-5600K which has the Radeon HD 7560D integrated GPU. The Radeon HD 7560D requires the 3 ARUBA_me.bin, ARUBA_pfp.bin and ARUBA_rlc.bin binary files from the Radeon Linux firmware list which weigh a combined 23.552 kb. Permitting 23kb of mystery meat to run graphics is not the worst of fates. While not ideal, the fact is the complexity the of hardware itself is much greater and likewise not available for the supposed owner to inspect.

RAM and Disks

To chose memory, I started from the qualified vendors list (pdf) of the F2A85M motherboard. I added the Samsung SSD because I also plan to test syncing a Bitcoin node and GBW-node with this set up.

Power Supply, Case, Case Fans

Gold 80 Plus power supply efficiency was good enough for me. Cases with tempered glass windows and shiny lights seem to be marketed heavily. I went all metal for sturdiness. The case has a built-in rear fan. My plan for the other three are to put two stacked from the bottom of the front and one on top for bottom-to-top, front-to-back cooling airflow.

Next Steps

The parts have started arriving. I'll start the build this week and report back. I focused this article on what I ended up choosing. I looked at several more set ups in this process, the notes for which need cleaning up prior to publishing.

Conclusion
While it looks like a fully open desktop with graphics support is out of reach at present, I gained from the process and am looking forward to setting this machine up.

  1. The complete list:
    AMD A10-5700 (AD5700OKA44HJ, rev.A1, 3.4GHz, L2:4M, 65W) ALL 5008GO
    AMD A10-5800B (AD580BWOA44HJ, rev.A1, 3.8GHz, L2:4M, 100W) ALL 5008GO
    AMD A10-5800K (AD580KWOA44HJ, rev.A1, 3.8GHz, L2:4M, 100W) ALL 5008GO
    AMD A10-6700 (FM2, AD6700OKA44HL, rev.A1, 3.7GHz, 4C, L2:4M, HD 8670D, 65W) ALL 6002GO
    AMD A10-6700T (FM2, AD670TYHA44HL, rev.A1, 2.5GHz, 4C, L2:4M, HD 8650D, 45W) ALL 6402GO
    AMD A10-6790B (FM2, AD679BWOA44HL, rev.A1, 4.0GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6501GO
    AMD A10-6790K (FM2, AD679KWOA44HL, rev.A1, 4.0GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6501GO
    AMD A10-6800B (FM2, AD680BWOA44HL, rev.A1, 4.1GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6002GO
    AMD A10-6800K (FM2, AD680KWOA44HL, rev.A1, 4.1GHz, 4C, L2:4M, HD 8670D, 100W) ALL 6002GO
    AMD A4-4000 (FM2, AD40000KA23HL,3.0Ghz, L2: 1M , HD7480, rev.A1, 65W) ALL 6102GO
    AMD A4-4020(FM2, AD4020OKA23HL,3.2Ghz, L2: 1M , HD7480D, rev.A1, 65W) ALL 6502GO
    AMD A4-5300 (AD5300OKA23HJ, rev.A1, 3.4GHz, L2:1M, 65W) ALL 5008GO
    AMD A4-5300B (FM2, AD530BOKA23HJ, rev.A1, 3.4GHz, L2:1M, 65W) ALL 5008GO
    AMD A4-6300 (FM2, AD6300OKA23HL, rev.A1, 3.7GHz, 2C, L2:1M, HD 8370D, 65W) ALL 6002GO
    AMD A4-6300B (FM2, AD630BOKA23HL, rev.A1, 3.7GHz, 2C, L2:1M, HD 8370D, 65W) ALL 6002GO
    AMD A4-6320(FM2, AD6320OKA23HL, rev.A1, 3.8GHz, 2C, L2:1M, HD 8370D, 65W) ALL 6502GO
    AMD A4-7300 (FM2, AD7300OKA23HLA, rev.A1, 3.8GHz, 2C, L2:1M, GCN Radeon R5, 65W) ALL 6506GO
    AMD A4-7300B (FM2, AD730BOKA23HLA, rev.A1, 3.8GHz, 2C, L2:1M, 65W) ALL 6506GO
    AMD A6-5400B (AD540BOKA23HJ, rev.A1, 3.6GHz, L2:1M, 65W) ALL 5008GO
    AMD A6-5400K (AD540KOKA23HJ, rev.A1, 3.6GHz, L2:1M, 65W) ALL 5008GO
    AMD A6-6400B (FM2, AD640BOKA23HL, rev.A1, 2C, 3.9GHz, L2:1M, HD 8470D, 65W) ALL 6002GO
    AMD A6-6400K (FM2, AD640KOKA23HL, rev.A1, 2C, 3.9GHz, L2:1M, HD 8470D, 65W) ALL 6002GO
    AMD A6-6420K (FM2, AD642KOKA23HL, rev.A1, 2C, 4.0GHz, L2:1M, HD 8470D, 65W) ALL 6502GO
    AMD A8-5500 (AD5500OKA44HJ, rev.A1, 3.2GHz, L2:4M, 65W) ALL 5008GO
    AMD A8-5500B (AD550BOKA44HJ, rev.A1, 3.2GHz, L2:4M, 65W) ALL 5008GO
    AMD A8-5600K (AD560KWOA44HJ, rev.A1, 3.6GHz, L2:4M, 100W) ALL 5008GO
    AMD A8-6500 (FM2, AD6500OKA44HL, rev.A1, 4C, 3.5GHz, L2:4M, HD 8570D, 65W) ALL 6002GO
    AMD A8-6500B (FM2, AD650BOKA44HL, rev.A1, 4C, 3.5GHz, L2:4M, HD 8570D, 65W) ALL 6002GO
    AMD A8-6500T (FM2, AD650TYHA44HL, rev.A1, 4C, 2.1GHz, L2:4M, HD 8550D, 45W) ALL 6402GO
    AMD A8-6600K (FM2, AD660KWOA44HL, rev.A1, 4C, 3.9GHz, L2:4M, HD 8570D, 100W) ALL 6002GO
    AMD Athlon X2 340 (FM2, 3.2Ghz, 2C, L2:1M, 65W) ALL 6102GO
    AMD AthlonX2 350 (FM2, AD350XOKA23HL, 2C, rev.A1, 3.5GHz, L2:1M, 65W) ALL 6102GO
    AMD AthlonX2 370K (FM2, AD370KOKA23HL, 2C, rev.A1, 4.0GHz, L2:4M, 65W) ALL 6404GO
    AMD AthlonX4 730 (FM2, AD730XOKA44HJ, rev.A1, 2.8GHz, L2:4M, 65W) ALL 5008GO
    AMD AthlonX4 740 (FM2, AD740XOKA44HJ, rev.A1, 3.2GHz, L2:4M, 65W) ALL 5008GO
    AMD AthlonX4 750 (FM2, AD750XOKA44HL, 4C, rev.A1, 3.4GHz, L2:4M, 65W) ALL 6102GO
    AMD AthlonX4 750K (FM2, AD750KWOA44HJ, rev.A1, 3.4GHz, L2:4M, 100W) ALL 5008GO
    AMD AthlonX4 760K (FM2, AD760KWOA44HL, 4C, rev.A1, 3.8GHz, L2:4M, 100W) ALL 6102GO
    AMD Sempron 250 (FM2, SD250XOKA23HL, 2C, rev.A1, 3.2GHz, L2:1M, 65W) ALL 6102GO []

September 28, 2020

The shadows of an Indian summer.

Filed under: Amor fati — Robinson Dorion @ 18:49

It struck me recently that a major cause of my outrageous behavior these past few months is that I've continued to neglect writing the articles for the fabled outlines I published through the process of applying be a Pageboy of Diana Coman and the Young Hands Club. As she observed, I spent most of my twenties finding my feet, which lead me to live in a foreign land I came to consider my home.

Then, 11 days after TMSR's closure I decided to leave the city with everything apart from my friends that couldn't be replaced to stay with my parents in the hills I grew up in. Not having written the articles in the outlines is evidence I've not thought through and processed fully those trials and tribulations. Instead of writing, publishing and moving on1, I went on a summer vacation as if it was my childhood. I did what was easy, rather than what was correct. I literally walked in scores of loops around golf courses.

shadows-1

Above, from hole 7 tee box of Rutland Country Club Saturday. Below, from behind 7th green.

shadows-2

It has been a sunny, Indian summer stretching into September and I reverted to the shadows, even if I spent more time outside and under the sun this summer than I have in a decade plus. I'm at ground zero of where my weaknesses are rooted, but I have rested rather than working to strengthen them. I have allowed myself to atrophy and incur opportunity costs. I could think of more things to say and as I start to a lot of negatives come up, but ultimately lead me to asking, what now ?

I'm reminded of a point that was quite a surprising relief to read in the moment and to be reminded of now. What now then is to confront myself and my past, remind myself stupidity is penalized exponentially by the wise and the world with good reason, and start chipping away at writing those articles and doing what I know I have to do. By greasing my writing gears, more will be sure to follow, one simple step at a time. Tu nu poti daca nu te chinui suficient.

  1. While at the same time having it available to reference relatively cheaply at any future point. []

July 13, 2020

In defense of honoring Rutland Raider Power.

Filed under: Amor fati — Robinson Dorion @ 23:43

The local newspaper, The Rutland Herald, recently published an op-ed written by a former classmate of mine titled, "RHS Mascot must go", which you can read here. I submitted a sightly shorter version of this, e.g. doesn't have any pictures or footnotes, to said herald this evening, which I've linked. The last piece I submitted to them was about 10 years ago, which they didn't publish for unspecified reasons. To give you an idea, this is a paper that still publishes the long-ago discredited Paul Krugman. I'm not holding my breath for them to publish this, but we'll see.

For new readers of the blog, mind there's a comment box at the end. Leave your thoughts, if you please; both supportive and critical comments will be published. At the end of each footnote there's a link that will return you to your place. Here goes.

Dear Fellow Rutlanders and Ms. Gokee,

To be clear, while I disagree with her methodology and conclusion, I write this in the spirit of debate and with all respect due to Ms. Gokee, of whom I always had a positive experience of in the flesh. I learned of several things from her piece and I hope this article returns the favor.

Nicknames and titles are characteristic of honor-based societies, which have endured millennia because they reflect the self-evident hierarchy that exists in nature and predates land-based organisms. True story: even sea creatures secrete endorphins when they win a turf war and raise their standing in the world. This neurological structure is older than trees.

The Latins used ''cognomen'', which English speakers call nicknames, to distinguish, among other things, heroic battle achievements. Fortunately, the bounty of excess resources the capitalists of generations past graciously bequeathed us has provided sufficient cushion to afford our youths (previously known as ''useless eaters'') the luxury of organized athletics. The rub is, when you name a team in town, you don't have those individual stories that support the individual nicknames. As a consequence, the tenacity competition requires traditionally leads the namers to use names representing something fierce, e.g. lions and tigers and bears, oh my!! American football is the sport most reminiscent of battle and probably that which the Rutland Raiders are most renowned for in this state, so let us dwell for a moment. George Carlin nails it, y'know? ''In football the object is for the quarterback, also known as the field general, to be on target with his aerial assault, riddling the defense by hitting his receivers with deadly accuracy in spite of the blitz, even if he has to use the shotgun. With short bullet passes and long bombs, he marches his troops into enemy territory, balancing this aerial assault with a sustained ground attack that punches holes in the forward wall of the enemy's defensive line. In baseball the object is to go home! And to be safe! I hope I'll be safe at home!''.

''Raid'' is a Scottish word with etymology tracing to describe a ''mounted military expedition''. Football requires bravery, tenacity, physical fitness, power and grace, team coordination and willingness to get dirty and bleed for the team and town to experience the high of achievement and victory. Naming the mascot a Raider honors the spirit and characteristics through a symbol the student-athlete can draw on for inspiration. The arrowhead itself symbolizes and honors a culture that leveraged the tool to feed, clothe and shelter families and evict derelict neighbors and perhaps even against neighbors who were simply boring and dull. It's true that there are undertones of violence, but the wisdom of using them in this context is they are actually beneficial in dangerous, physical competition, where strictly enforced rules allow violence to be pushed to the edge of civility and an advantage is gained for knowing well where the line is.

Sure, racists and bigots employ propaganda to manipulate those less bookish, but do you really want to be a person who imputes the views and behavior of a small minority of individuals on an entire community? Pretty sure there's a word for that. It's certainly not consonant with my experience of being around Rutland athletics for over two decades as a water boy1 , athlete2 and fan, during which I can't recall I witnessed any instances of racism3. There is brotherhood amongst opponents.

I accept as true that racist and bigoted people exist across cultures and geography. I've lived over a quarter of my life as a social and racial minority in foreign lands, this isn't my imagination, but first hand experience. Humans are social creatures with in-group preference. We tend to prefer friends and family to strangers for most activities and tend to feel uncomfortable when surrounded by conversation in a foreign language. Learning hurts.

With that being said, to say honoring a culture's symbols by taking them for inspiration into a gamified battle is appropriation and racist is to look at the situation from not only a very limited, but fragile perspective. Where does this argument go if applied ''equally''? Do you really want to start a culture war where symbolizing and utilizing cultural contributions are restricted to progeny of the originators? Should descendants of Europeans now take offense whenever someone else wears a necktie when they are dressing for success? The ''cravat'' is distinctly European military attire, after all. Are you making fun of my ancestors?!? What about electricity and the Internet Protocol and aeroplanes and automobiles and the number zero? Surely it will tilt the balance of power towards the ''just'' if you lot pass a law that grants license to state clerks to use violence to restrict (suspending all sense, for a moment, to assume it could be done) technologies to those who can prove a bloodline (sarcasm). Taking a step back, it seems such a path leads to more division rather than cooperation. And if all of a sudden you don't want to apply your new rule equally, well... I'll let you fill in this blank and I don't think you'll like the word that fits.

It's true, history involves men fighting and killing and taking from and enslaving each other. Such behavior is cross-cultural and recurs throughout history because nature imposes scarcity and language and cooperation take more effort in the short term. C'est la vie. The fact that Europeans developed and utilized technology such as horses and the wheel and gun powder and the printing press which enabled them to more effectively control the resources of this landmass is not to their shame; anymore than it's the Turks' shame for developing superior cannon technology4 that enabled them to take the city5 that was the center of the world for over a millennia; nor is it Michael Jordan's shame for dominating the NBA during his prime, even if he was mean at times. The lists go on and on to demonstrate hierarchies are self-evident. The other side of 'the Indian problem'' was what the Europeans referred to as their burden to spread the high standard of living they achieved and which we enjoy through the harsh winters. Chimneys for the win, amirite ?!?! Monty Python's ''Life of Brian'' hits the nail on the head, ''All right, but apart from the sanitation, the medicine, education, wine, public order, irrigation, roads, a fresh water system, and public health, what have the Romans ever done for us?" That is, check the toolbox you depend on for survival prior to impugning the deceased and scorning their progeny for whatever you convict their ancestors of posthumously, lest you find yourself lost in the cold. Side note: Lost in the Cold is a great Twiddle song, look it up.

To say in one sentence ''we're Vermonters'' and in another that this here is ''Abenaki land'' is a contradiction I hope others caught. Perhaps some progeny of the Byzantines refer to that grand city on the Golden Horn as Constantinople to this day, but any ticket they buy to go there surely reads Istanbul. Perhaps some Bitcoin Barron will take ownership of this land in the future and rename it. Until that day, it's called Vermont to signify this is an outpost of European civilization. There was war, subjugation and brutality on this continent far before their ships beached and for whatever reasons, after losing many battles fighting with and against the Natives, the Europeans came out on top. If you must hate, please don't hate the player, hate the game. Then try to not hate because bitter roots bear bitter fruit. Try instead to learn why the winners won.

It's probably the case some old white man dressed in a three piece suit sat in his leather chair at his Mahogany desk smoking his pipe some century and a half ago to make the name and came up with the alliteration we've inherited. Maybe he even wore a monocle and kept coins in woven bags with dollar signs painted on strewn about the marble floor of his office which his servants polished daily on their hands and knees with toothbrushes. Given we've uncovered the etymology, do you think it could be possible the man was a silly Scotsman who knew what the word meant and used it to counterbalance the rivalrous ''Mounties'' of Convent Avenue in this here city? Wouldn't that be something?

I don't know what the real source of the name is, but I must ask what the long-term consequences are of trying to whitewash the name and symbols thousands of young Rutlanders have been proud to represent in constructive, competitive activities they cared deeply about? If you thrash the arrowhead, will you then chastise me and my friends for wearing our state championship gear? Should we have a big bonfire and burn all the threads6? Or what if I have a son who grows up and wants to wear his old man's throwbacks, should he expect grief? Should I prepare him to defend himself because he may be attacked if wearing it in public? I'm not trying to put words in anyone's mouth, I'm genuinely curious how far you think the 'removal' will go. Seems like a major distraction from the actual travesty taking place presently through socialist central banks appropriating purchasing power via the inflation tax, y'dig? But hey, driving division using the racist wedge and meanwhile debauching the currency is straight out the Communist playbook. Maybe I'm biased, "the Commish" of the Mounties, a.k.a Mr. William O'Rourke III, J.D., did nickname me ''Raider Rob'' for my fidelity to the tradition, after all. My point is there are more sides to the story than the scapegoat of evil white men making fun of people they conquered.

If you manage to succeed, perhaps you pick a name more benign, but likewise virtuous, activity that Rutland is actually famous for. Probably should be something about marble since that's what the world actually knows this area for. The mythology would be similar to a Slater who quarries for sacred material deep in mother earth and erects enduring structures for art and his family's refuge. For all I know though, you'll claim Mr. Proctor was a ''thief''/''Robber Barron''/omgwhatever for ''stripping the land''. Regardless, I reckon the Raider spirit will remain adamant in Rutland independent of whether the current tensions are opportunistically exploited to further the agenda of cultural Marxists7.

My neighbor gave me the nickname out of admiration despite wanting to see me lose and even cry my eyes out whenever his team was on the other side of the ball and I love him for that because competition brings out the best within us. Personally, I'd rather see arrowheads on the backs of teenagers' cars who loved playing as Raiders so much they parade the symbol around town in perpetuity. The reason is, the meaning to me isn't some racist symbol; the arrowhead represents hard work, dedication, deferral of gratification, courage, physical and mental mastery, making enduring memories with lifelong friends, teamwork, excitement, community support, giving your jersey to a cute chica on gameday, sportsmanship, sight and sound, intensity with integrity, living such that you have no regrets and on that score I know I'm not alone. Whether you like it or not, that's what you're attacking and that's probably the primary reason there's resistance. Surely there would be more resistance if the risk and consequences of being slandered a racists weren't so high. I'll take that risk, and say what I believe to be correct, and leave to faith that the logos still remains in the thousands of people who've known and supported me in this community throughout my life.

Ms. Gokee writes, ''The problem is that putting Native Americans in the past erases our existence in the world today.'' Likewise, saying present day Rutlanders use the arrowhead as a racist symbol such that their history should be torn down rather than a symbol of admiration is unmitigated prejudice. I, for one, will keep my nickname with honor as long as I live because the roots of the words are simply too profound not too --you're not digging them up.

For the record, the time is always now, that's why it's called the present. Look it up if you don't believe me. The phrase for the time when you tear down the proud symbols of a society is post mortem.

In Liberty and Sincerely Yours,
Robinson, a.k.a ''Raider Rob'', a.k.a ''Digger'', Dorion.

  1. Here's a pic from 1998 following a Raider victory over Hartford in the semi-finals :

    raider-power-1

    From left to right: yours truly, Jake Eaton, T.J. Bowse.

    The Saturday prior, the Raiders beat the Mounties on Alumni in the Rutland-MSJ game. The following Saturday, MSJ beat Rutland in the State Championship game on Alumni and Rutland was the away team. They were also both contenders for the basketball title that year, which MSJ won. During the 1996-2006 period, Rutland won 7 of 11 titles while MSJ won 3. Ten out of eleven's not too bad for one town.

    For foreigners, the MSJ herein referred stands for Mount St. Joseph Academy, the Catholic School cross-town rival. []

  2. For the pics or it didn't happen crew, here you go.

    raider-power-2

    I had one of my better games that day and Coach Norman awarded me the game ball. Mr. Hadley, the father of Josh Hadley, one of our Senior Captains, and his Sophomore brother Ethan had passed away the week of the game. The ball is buried with Mr. Hadley. []

  3. That's not to say it never happened, maybe it did. It's simply that if it did it was so rare that I don't recall. That is, there are always bad apples, but it was never part of the athletics culture. []
  4. Who else misses the cannon at Raider football games ? 'Bring Back the Cannon 2020 !' ? For those unaware, from about 2000-2002, after every touchdown and other special occasions, a powder filled cannon was touched off at every home game. If I recall correctly, some residents of Gleason Road whined loud enough to get it mothballed. []
  5. Constantinople. []
  6. Here's a small sample:

    raider-power-3

    If memory serves, the story behind that 2000 lid is Josh Finley made a leaping, back shoulder catch on a deep post (the play-call was probably 26 iso pass) thrown by Sean Hurley late in the 4th quarter of a low scoring game to really take the stinger out of the Hornets of Essex and ultimately lead to the Raiders squashing them.

    raider-power-4

    Above: Sam Reynolds, Zak Acquistapace, Ryan Corey, Matt Littler, Josh Hadley.

    Below: Andrew Baker, Justin Stewart, Jon Bassett, Chris Kiernan.

    raider-power-5

    []

  7. Whether you're aware of it or not, that's what's going on. When Communism failed economically, as it always must, they pivoted. []

July 1, 2020

GBW-NODE : Gales Bitcoin Wallet Node verified acquisition, build, install and run in 21ish short, simple steps.

Filed under: JWRD — Robinson Dorion @ 17:32

This article documents the steps I took to verify I obtained the correct code to install and start using gbw-node, the online component of Gales Bitcoin Wallet, authored by Jacob F. Welsh (WoT : jfw) which he documented on Fixpoint through his work with JWRD Computing in a 1 2 3 4 5 6, count'em, 6 article series.

For maximal key security, the software is structured in two components : the node gbw-node and the signer gbw-signer. gbw-node is written in Python 2 and gbw-signer is written in Jacob's anti-Thompsonistic, almost-R5RS-plus-extensions Scheme implementation, Gales Scheme. This design facilitates use over an airgapped system. Such a system would be composed of at least one online computer where gbw-node collects information from the Bitcoin network and broadcasts transactions and an offline computers where gbw-signer is used to generate Bitcoin keys and sign transactions. Usage instructions for gbw-signer will come in an article to follow.

Before we dive in head first here, if you find yourself glossing over the instructions below as if written in hieroglyphics, take heart that it's only ASCII and the command line is not too hard to learn with some dedication to consistent practice and a good guide to walk you through the process. The other side of acquiring the skill is you're equipped with a new set of eyes that allows you to, among other things, enforce ownership over your money. Jacob and I have created training curriculum and hardware packages along with software like Gales Bitcoin Wallet to help our clients do just that and which you may read more about here. Alright, dive at will.

The pre-requisites to verify sources, compile, install and run are :

  1. The machine I used has 2 cores, 4 GB RAM and 500 GB SSD.
  2. V. I used Jacob's V in Perl with keksum starter kit.
  3. a Unix-like OS. I used a fresh, minimalist install of Gales Linux, which comes with the Gnu C Compiler (GCC) 4.7.4 ; musl C Library ; Busybox userland ; and Linux Kernel. Gales also comes with "gport" build scripts for Perl, Python 2 and SQLite. Perl is required for my V selection and and Python 2 and SQLite are required for gbw-node.
  4. GnuPG (GPG). I used the gport build in Gales Linux.
  5. The Real Bitcoin (TRB). I pressed my install here to Jacob's bitcoin_system_compiler.vpatch.

2020/07/01 Update : As Diana Coman kindly pointed out in the comments, if you already have a TRB node in operation, you may skip directly to step 18 for all gbw-node functionality apart from the push command. For push to work, you need Jabob's bitcoin_rawtx_get_send.vpatch.

Commands issued1 to download and install complete orchestra from Gales Linux base install :

Add the following IPs to /etc/hosts :
198.199.70.97 fixpoint.welshcomputing.com
96.43.130.234 deedbot.org

1. Build and install GnuPG.
cd /var/build/gales/gports/gnupg ; gbuild ; gpkg-install -f gnupg-0.0-1.4.21.sh.gz ; mv gnupg-0.0-1.4.21.sh.gz /gales/dist/pkg/

2. Build and install Perl.
cd ../perl ; gbuild ; gpkg-install -f perl-10.1-5.24.2.sh.gz ; mv perl-10.1-5.24.2.sh.gz /gales/dist/pkg/

3. Build and install Python.
cd ../python ; gbuild ; gpkg-install -f python-0.3-2.7.13.sh.gz ; mv python-0.3-2.7.13.sh.gz /gales/dist/pkg/

4. Build and install SQLite and its docs.
cd ../sqlite ; gbuild ; gpkg-install -f sqlite-3.0-3.21.0.sh.gz ; mv sqlite-3.0-3.21.0.sh.gz /gales/dist/pkg ; cd ../sqlite-doc ; gbuild ; gpkg-install -f sqlite-doc-3.0-3.21.0.sh.gz ; mv sqlite-doc-3.0-3.21.0.sh.gz /gales/dist/pkg

5. Acquire the keys for the seals you intend to verify. In this case, jfw, diana_coman, spyked and mod6.
mkdir /root/keys ; cd /root/keys ; wget wot.deedbot.org/{0CBC05941D03FD95C3A47654AE0DF306025594B3,E72DCCB73A5E06694C5CD781D5196EE6390F999E,0x541A976BB5FC4B455D7FBC61BDAE9D051A3D3B95,027A8D7C0FB8A16643720F40721705A8B71EADAF}.asc

6. Prepare the V build tree.
mkdir -p /var/build/v/{v,trb,gbw-node}/{.seals,.wot,patches} ; cd /var/build/v/v/.wot ; ln -s ~/keys/0CBC05941D03FD95C3A47654AE0DF306025594B3.asc jfw.asc ; ln -s ~/keys/E72DCCB73A5E06694C5CD781D5196EE6390F999E.asc diana_coman.asc ; ln -s ~/keys/0x541A976BB5FC4B455D7FBC61BDAE9D051A3D3B95.asc spyked.asc

7. Acquire jfw's V.pl Keksum starter kit.
cd .. ; wget http://fixpoint.welshcomputing.com/code/v/v-pl-keksum-starter-v2.tar.gz ; wget http://fixpoint.welshcomputing.com/code/v/v-pl-keksum-starter-v2.tar.gz.asc

8. Import his key on your gnupg key ring and verify the tarball with his signature.
gpg --import .wot/jfw.asc ; gpg --verify v-pl-keksum-starter-v2.tar.gz.asc

9. Extract the tarball, poke around to your content2 and run the install script.
tar xzf v-pl-keksum-starter-v2.tar.gz ; cd v-pl-keksum-starter-v2 ; sh install.sh

10. Acquire the vpatches and seals to press your V tree with the installed starter.
cd .. ; wget -P patches http://fixpoint.welshcomputing.com/v/v/{v_strict_headers,v_keksum_busybox_r2,v_fixes_vpatch_sync,v_keccak_vtools,v_mod6_99993,v_mod6_genesis,v_fix_exptimes_paths_etc}.vpatch ; wget -P .seals http://fixpoint.welshcomputing.com/v/v/{v_strict_headers.vpatch.{diana_coman,jfw},v_keksum_busybox_r2.vpatch.jfw,v_fixes_vpatch_sync.vpatch.{diana_coman,jfw,spyked},v_keccak_vtools.vpatch.{diana_coman,jfw,spyked},v_mod6_99993.vpatch.{diana_coman,jfw,spyked},v_mod6_genesis.vpatch.{diana_coman,spyked},v_fix_exptimes_paths_etc.vpatch.jfw}.sig

11a. Issue a flow.
v.pl f
v_mod6_genesis.vpatch (diana_coman, spyked)
v_mod6_99993.vpatch (diana_coman, jfw, spyked)
v_keccak_vtools.vpatch (diana_coman, jfw, spyked)
v_fixes_vpatch_sync.vpatch (diana_coman, jfw, spyked)
v_strict_headers.vpatch (diana_coman, jfw)
v_fix_exptimes_paths_etc.vpatch (jfw)
v_keksum_busybox_r2.vpatch (jfw)

11b. Press your V tree, install the binary on your path and give it execute permission.
v.pl p v_keksum_busybox_r2 v_keksum_busybox_r2.vpatch ; cd /local/bin/ ; ln -s /var/build/v/v/v_keksum_busybox/v/v.pl v.pl ; chmod +x /local/bin/v.pl

12a. Acquire the vpatches for your press of The Real Bitcoin Vtree.
cd /var/build/v/trb/ ; wget -P patches http://fixpoint.welshcomputing.com/v/bitcoin/{asciilifeform-kills-integer-retardation,asciilifeform_add_verifyall_option,asciilifeform_aggressive_pushgetblocks,asciilifeform_tx-orphanage_amputation,asciilifeform_and_now_we_have_eatblock,asciilifeform_dnsseed_snipsnip,asciilifeform_lets_lose_testnet,asciilifeform_maxint_locks_corrected,asciilifeform_orphanage_thermonuke,asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip,asciilifeform_zap_hardcoded_seeds,bitcoin-asciilifeform.1,mod6_phexdigit_fix,mod6_der_high_low_s,asciilifeform_and_now_we_have_block_dumper_corrected,asciilifeform_dns_thermonyukyoolar_kleansing,asciilifeform_zap_showmyip_crud,bitcoin-asciilifeform.2-https_snipsnip,bitcoin-asciilifeform.3-turdmeister-alert-snip,bitcoin-asciilifeform.4-goodbye-win32,bitcoin-v0_5_3-db_config.6,bitcoin-v0_5_3_1-rev_bump.7,bitcoin-v0_5_3_1-static_makefile_v002.8,bitcoin_rawtx_get_send,bitcoin_system_compiler,genesis,makefiles,mod6_excise_hash_truncation,mod6_fix_dumpblock_params,mod6_manifest,mod6_privkey_tools,mod6_whogaveblox,programmable-versionstring,rm_rf_upnp,malleus_mikehearnificarum,bitcoin-asciilifeform.3-turdmeister-alert-snip}.vpatch

12b. Acquire the seals of your choice.
wget -P .seals http://fixpoint.welshcomputing.com/v/bitcoin/{mod6_manifest.vpatch.{mod6,jfw},asciilifeform-kills-integer-retardation.vpatch.mod6,asciilifeform_add_verifyall_option.vpatch.{jfw,mod6},asciilifeform_aggressive_pushgetblocks.vpatch.mod6,asciilifeform_and_now_we_have_block_dumper_corrected.vpatch.mod6,asciilifeform_and_now_we_have_eatblock.vpatch.mod6,asciilifeform_dns_thermonyukyoolar_kleansing.vpatch.jfw,asciilifeform_dns_thermonyukyoolar_kleansing.vpatch.mod6,asciilifeform_dnsseed_snipsnip.vpatch.jfw,asciilifeform_dnsseed_snipsnip.vpatch.mod6,asciilifeform_lets_lose_testnet.vpatch.jfw_unchecked,asciilifeform_lets_lose_testnet.vpatch.mod6,asciilifeform_maxint_locks_corrected.vpatch.mod6,asciilifeform_orphanage_thermonuke.vpatch.mod6,asciilifeform_tx-orphanage_amputation.vpatch.mod6,asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch.mod6,asciilifeform_zap_hardcoded_seeds.vpatch.{jfw,mod6},asciilifeform_zap_showmyip_crud.vpatch.mod6,bitcoin-asciilifeform.1.vpatch.{jfw,mod6},bitcoin-asciilifeform.2-https_snipsnip.vpatch.{jfw,mod6},bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch.mod6,bitcoin-asciilifeform.4-goodbye-win32.vpatch.{jfw,mod6},bitcoin-v0_5_3-db_config.6.vpatch.mod6,bitcoin-v0_5_3_1-rev_bump.7.vpatch.{jfw,mod6},bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch.{jfw,mod6},bitcoin_rawtx_get_send.vpatch.jfw,bitcoin_system_compiler.vpatch.jfw,genesis.vpatch.mod6,makefiles.vpatch.{jfw,mod6},malleus_mikehearnificarum.vpatch.{jfw,mod6},mod6_der_high_low_s.vpatch.mod6,mod6_excise_hash_truncation.vpatch.{jfw,mod6},mod6_fix_dumpblock_params.vpatch.mod6,mod6_phexdigit_fix.vpatch.{jfw,mod6},mod6_privkey_tools.vpatch.mod6,mod6_whogaveblox.vpatch.mod6,programmable-versionstring.vpatch.mod6,rm_rf_upnp.vpatch.mod6}.sig

12c. Populate your .wot directory.
cd .wot ; ln -s ~/keys/027A8D7C0FB8A16643720F40721705A8B71EADAF.asc mod6.asc ; ln -s ~/keys/0CBC05941D03FD95C3A47654AE0DF306025594B3.asc jfw.asc ; cd ..

13a. View your flow.
v.pl flow
genesis.vpatch (mod6)
bitcoin-asciilifeform.1.vpatch (jfw, mod6)
rm_rf_upnp.vpatch (mod6)
bitcoin-asciilifeform.3-turdmeister-alert-snip.vpatch (mod6)
bitcoin-asciilifeform.2-https_snipsnip.vpatch (jfw, mod6)
bitcoin-asciilifeform.4-goodbye-win32.vpatch (jfw, mod6)
asciilifeform_dnsseed_snipsnip.vpatch (jfw, mod6)
asciilifeform_zap_hardcoded_seeds.vpatch (jfw, mod6)
asciilifeform-kills-integer-retardation.vpatch (mod6)
asciilifeform_zap_showmyip_crud.vpatch (mod6)
asciilifeform_dns_thermonyukyoolar_kleansing.vpatch (jfw, mod6)
asciilifeform_and_now_we_have_block_dumper_corrected.vpatch (mod6)
mod6_fix_dumpblock_params.vpatch (mod6)
bitcoin-v0_5_3_1-static_makefile_v002.8.vpatch (jfw, mod6)
bitcoin-v0_5_3_1-rev_bump.7.vpatch (jfw, mod6)
asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.vpatch (mod6)
asciilifeform_orphanage_thermonuke.vpatch (mod6)
asciilifeform_and_now_we_have_eatblock.vpatch (mod6)
bitcoin-v0_5_3-db_config.6.vpatch (mod6)
asciilifeform_tx-orphanage_amputation.vpatch (mod6)
asciilifeform_maxint_locks_corrected.vpatch (mod6)
asciilifeform_lets_lose_testnet.vpatch (mod6)
asciilifeform_add_verifyall_option.vpatch (jfw, mod6)
programmable-versionstring.vpatch (mod6)
mod6_der_high_low_s.vpatch (mod6)
malleus_mikehearnificarum.vpatch (jfw, mod6)
makefiles.vpatch (jfw, mod6)
asciilifeform_aggressive_pushgetblocks.vpatch (mod6)
mod6_privkey_tools.vpatch (mod6)
mod6_manifest.vpatch (jfw, mod6)
mod6_phexdigit_fix.vpatch (jfw, mod6)
mod6_excise_hash_truncation.vpatch (jfw, mod6)
mod6_whogaveblox.vpatch (mod6)
bitcoin_rawtx_get_send.vpatch (jfw)
bitcoin_system_compiler.vpatch (jfw)

13b. Press when ready.
v.pl p bitcoin_system_compiler bitcoin_system_compiler.vpatch

14. Acquire Bitcoin's dependencies. The deps/Makefile invokes curl, which isn't present out of the box on Gales Linux. Instead I ran wget by hand.
cd bitcoin_system_compiler/bitcoin/deps/ ; wget -O boost_1_52_0.tar.bz2.asc http://deedbot.org/deed-422651-1.txt ; wget -O db-4.8.30.tar.gz.asc http://deedbot.org/deed-422651-3.txt ; wget -O openssl-1.0.1g.tar.gz.asc http://deedbot.org/deed-422651-4.txt ; cd ..

15. Ensure mod6's key is in your gpg key ring3 and compile the code with the make script :
gpg --import ../../.wot/mod6.asc ; make

16. Install the bitcoind binary to the preferred location on your preferred user's path, e.g. :
cp -a build/bitcoind /path/to/user/path/

17a. Configure bitcoind. Some select flags from ~/.bitcoin/bitcoin.conf. You'll also want to set the addnode flag a few times to the IP of trusted nodes.
logtimestamps=1
verifyall
lows=1
caneat=1

17b. Run bitcoind and sync your local copy of the Bitcoin block chain.
bitcoind & tail -f ~/.bitcoin/debug.log | grep SetBestChain

18. Acquire the vpatch and seal for gbw-node.
cd /var/build/v/gbw-node/.wot ; ln -s ~/keys/0CBC05941D03FD95C3A47654AE0DF306025594B3.asc jfw.asc ; cd .. ; wget -p patches http://fixpoint.welshcomputing.com/v/gbw-node/gbw-node_genesis.vpatch ; wget -p .seals http://fixpoint.welshcomputing.com/v/gbw-node/gbw-node_genesis.vpatch.jfw.sig

19. Press and install Gales Bitcoin Wallet Node.
v.pl p gbw-node gbw-node.vpatch ; cd /package ; ln -s /var/build/v/gbw/gbw-node/gbw-node-1/ gbw-node-1 ; cd gbw-node-1 ; sh package/install

20. Configure gbw-node by making the hidden directory and redirecting the gbw-node's SQL schema into the database file.
mkdir ~/.gbw ; sqlite3 ~/.gbw/db </package/gbw-node/library/schema-node.sql

21a. Game time. Ask for help.
gbw-node help
Usage: gbw-node COMMAND [ARGS]

Available commands (can be abbreviated when unambiguous):

help
scan
reset
tags
addresses
unspent-outs
watch
push
balance
register
unlock-wallet

21b. Watch a list of addresses, identified by a tag. In this case, one of the more historic financial transactions to be recorded which marked the end of an era and the start of a new era. Enter your list of addresses separated by enter, press control d to send python the end of file signal and exit gracefully.
gbw-node watch mps-bitcoin-berkshire-bet
16u2LKbGwAARwsWEXKTjBu8XMghnVMcFEi

21c. Print your tags and addresses.
gbw-node tags
mps-bitcoin-berkshire-bet

gbw-node addresses
16u2LKbGwAARwsWEXKTjBu8XMghnVMcFEi

21d. Scan the Bitcoin block chain for transactions sent and received by your watched addresses. (This took approximately 24 hrs to scan from the genesis block to approximately block height 634,000.
gbw-node scan
...
block 290841 new-outs 0 spent-outs 0
block 290842 new-outs 1 spent-outs 0
block 290843 new-outs 0 spent-outs 0
...

21e. Print the history of your transactions and the change in your balance. Can add an optional tag parameter to filter if you have multiple tags.
gbw-node register
290842 2 1000.00000000 0.00000000 1000.00000000

21f. Print your balance. Can add an optional tag parameter to filter if your have multiple tags.
gbw-node balance
1000.00000000

21g. Print the list of spendable transactions, a.k.a. unspent transactions outputs (utxo), available to your watched addresses. The output of this command is formatted how gbw-signer expects its wallet/transactions file to be formatted. It's best practice to run multiple independent trb + gbw-node instances to ensure the transactions you're being fed from the online machine are the ones you actually you want to sign.
gbw-node unspent-outs
16u2LKbGwAARwsWEXKTjBu8XMghnVMcFEi 1000.00000000 227d88033f4a26f60285462254f23c521bff96975f58ff60eadbeb62dca68578 1 #blk 290842 tx 2

And there you have it. Enjoy ! And the next time a central bank doubles their digital money supply or restricts transactions cause one of their friends has their panties in a bunch, recall that while time waits for no man, Bitcoin will be there, hardening.

  1. I've presented the command flow as root user throughout for simplicity. In practice, only the install commands require root privilege. []
  2. I modified the BINDIR variable to /local/bin/ since that's an element in the default execution $PATH on Gales Linux. []
  3. His signature is on the deeded dependencies. []
« Newer PostsOlder Posts »

Powered by WordPress