DEV Community

Cover image for Bringing up an AmpereOne system
Luca Barbato
Luca Barbato

Posted on

Bringing up an AmpereOne system

I decided to buy something quite large since my workstations are aging and I wanted to build stuff quickly.

I decided to buy a AMPONED8-2T/BCM with a nice 128-cores CPU and a bit of RAM.

It took a bit for the people at https://www.mifcom.de/ to source all the components, but eventually I got it.

Initial Setup

The board comes with a very pretty BMC so all you need is to connect the management one (or any since they are bonded by default) and let the dhcp get an ip and then feed it to your browser.

BMC

Since I'm using Gentoo the boot media just worked, you may feed it directly from the Remote KVM

And just boot it from the browser

Then the process is the usual one

Partition and untar

Partition Mount point Filesystem Recommended size label
p1 /boot/efi vfat 1 GiB EF00
p2 / btrfs 500+ GiB 8300
p3 /home btrfs 500+ GiB 8302
mkfs.vfat -n EFI /dev/nvme0n1p1
mkdir /mnt/btrfs
mkfs.btrfs -L root --checksum xxhash /dev/nvme0n1p2
mount /dev/nvme0n1p2 /mnt/btrfs
btrfs subvolume create /mnt/btrfs/@
btrfs subvolume create /mnt/btrfs/@repos
btrfs subvolume create /mnt/btrfs/@snapshots
btrfs subvolume create /mnt/btrfs/@var_log
btrfs subvolume create /mnt/btrfs/@containers
umount /mnt/btrfs

mount -o subvol=@ /dev/nvme0n1p2 /mnt/gentoo
mkdir -p /mnt/gentoo/{.snapshots,var/{db/repos,log},var/lib/containers}
mount -o subvol=@snapshots /dev/nvme0n1p2 /mnt/gentoo/.snapshots
mount -o subvol=@repos     /dev/nvme0n1p2 /mnt/gentoo/var/db/repos
mount -o subvol=@var_logs  /dev/nvme0n1p2 /mnt/gentoo/var/log
mount -o subvol=@containers /dev/nvme0n1p2 /mnt/gentoo/var/lib/containers

cd /mnt/gentoo
wget {stage3}
tar -xpf {stage3}
Enter fullscreen mode Exit fullscreen mode

Enter the stage

Usual chroot

# Mount special filesystems
mount --types 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/dev
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run

# copy the nameservers already present
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

# Enter the chroot
env -i \
    HOME=/root \
    TERM="$TERM" \
    PS1="(chroot) $PS1" \
    chroot /mnt/gentoo /bin/bash --login

# Inside chroot now:
source /etc/profile
export PS1="(chroot) ${PS1}"
Enter fullscreen mode Exit fullscreen mode

Initial bits to set up

emerge --sync
getuto
# Install your favourite editor, even from the binhost
emerge -G vim
# do your changes
vim /etc/portage/make.conf
# minimal and simple setup to to boot
emerge gentoo-sources grub dracut
eselect kernel set 1
cd /usr/src/linux
# the default config works well enough
zcat /proc/config.gz > .config
make olddefconfig
# add what you need for e.g. docker or lxd
make menuconfig
make -j 128 && make -j128 modules && make modules_install && make install
# set up your user
emerge supeadduser
superadduser
# set up ssh
emerge openssh metalog
rc-update add sshd
rc-update add metalog
Enter fullscreen mode Exit fullscreen mode

All considered the whole process was quite uneventful and took literally minutes to then build additional toolchains and start doing some tests.

qlop -c | egrep 'llvm|rust'
app-eselect/eselect-rust: 2′38″ average for 1 merge
dev-lang/rust: 15′19″ average for 1 merge
dev-lang/rust-bin: 13′21″ average for 2 merges
dev-lang/rust-common: 42s average for 1 merge
dev-util/rustup: 1′42″ average for 1 merge
llvm-core/clang: 4′21″ average for 2 merges
llvm-core/clang-common: 12s average for 2 merges
llvm-core/clang-linker-config: 5′53″ average for 2 merges
llvm-core/clang-toolchain-symlinks: 5s average for 2 merges
llvm-core/llvm: 9′05″ average for 2 merges
llvm-core/llvm-common: 2′41″ average for 1 merge
llvm-core/llvm-toolchain-symlinks: 11s average for 2 merges
llvm-core/llvmgold: 7s average for 2 merges
llvm-runtimes/clang-rtlib-config: 5′54″ average for 2 merges
llvm-runtimes/clang-runtime: 6s average for 2 merges
llvm-runtimes/clang-stdlib-config: 5′56″ average for 2 merges
llvm-runtimes/clang-unwindlib-config: 5′58″ average for 2 merges
llvm-runtimes/compiler-rt: 26s average for 2 merges
llvm-runtimes/compiler-rt-sanitizers: 37s average for 2 merges
llvm-runtimes/openmp: 6′10″ average for 2 merges
Enter fullscreen mode Exit fullscreen mode

Top comments (0)