This is an old revision of the document!


WIP install guide

First we must build a Hyperbola installation device, it can be on a [USB][usb-boot]{:target='_blank' rel='noopener noreferrer'} memory or [CD][cd-boot]{:target='_blank' rel='noopener noreferrer'}.

There is also an [installation video][video-guide]{:target='_blank' rel='noopener noreferrer'} that will be updated.

### First steps

We check if there is an Internet connection

    # ping -c 3 gnu.org
 

Partitio

    # cfdisk
 
- In case of the partition chosen as **swap** go to "Type" option and select **82 (Linux swap)** from list.
- In case of the partition chosen as **/boot**, select **"bootable"**
 
example:
 
    :::bash
    sda1=/boot
    sda2=/
    sda3=/home
    sda4=swap
 
    Recommendations:
    /boot   = 300MB
    /       = 40GB
    /home   = customized
    swap    = equivalent to RAM
 
#### Wi-fi connection
 
`wifi` detect
 
    :::console
    # iw dev
 
Enable device of network
 
    :::console
    # ip link set <device-name> up
 
Enable Internet with `wpa_supplicant`
 
    :::console
    # wpa_supplicant -B -i <device-name> -c <(wpa_passphrase "ssid" "psk")
 
Renew IPv4 with `dhcpcd`
 
    :::console
    # dhcpcd <device-name>
 
### Partition Formatting
 
- `/boot`, **ext4** will be used
 
        :::console
        # mkfs -t ext4 /dev/sda1
 
- `/`, **ext4** will be used
 
        :::console
        # mkfs -t ext4 /dev/sda2
 
- `/home`, **ext4** will be used
 
        :::console
        # mkfs -t ext4 /dev/sda3
 
- `swap`, **mkswap** will be used
 
        :::console
        # mkswap /dev/sda4
 
- Enable swap partition
 
        :::console
        # swapon /dev/sda4
 
### Organization of Partitions
 
- Mount root in /mnt
 
        :::console
        # mount /dev/sda2 /mnt
 
- Make directories of other partitions
 
    - boot
 
            :::console
            # mkdir /mnt/boot
 
    - home
 
            :::console
            # mkdir /mnt/home
 
- Mount other partitions
 
    - Mount boot
 
            :::console
            # mount /dev/sda1 /mnt/boot
 
    - Mount home
 
            :::console
            # mount /dev/sda3 /mnt/home
 
### Base System Installation
 
Update keys of hyperiso:
 
    :::console
    # pacman -Sy hyperbola-keyring
 
Install base packages:
 
    :::console
    # pacstrap /mnt base base-devel grub-bios wpa_supplicant iw kernel-firmware ldns xenocara-input-synaptics
 
> Install `xenocara-input-synaptics` only on laptops
 
### Main Configuration
 
- Generate fstab file
 
        :::console
        # genfstab -U -p /mnt >> /mnt/etc/fstab
 
- Inside chroot and configure base system
 
        :::console
        # arch-chroot /mnt
 
- Set hostname, to edit `/etc/hostname` file:
 
    Example:
 
        :::console
        # echo hyperpc > /etc/hostname
 
- Set localtime
 
        :::console
        # ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
 
- Update system time to UTC (Optional)
 
        :::console
        # hwclock --systohc --utc
 
- Enable our location, uncomment
 
        :::console
        # sed -e 's|^#en_US.UTF-8 UTF-8|en_US.UTF-8 UTF-8|g' -i /etc/locale.gen
 
- Set location preferences
 
        :::console
        # echo LANG=en_US.UTF-8 > /etc/locale.conf
 
- Generate location
 
        :::console
        # locale-gen
 
- If you need to change keymap, configure in `/etc/conf.d/keymaps` file
 
        :::console
        # sed -e 's/^keymap="us"/keymap="uk"/g' -i /etc/conf.d/keymaps
 
- Install Grub
 
        :::console
        # grub-install --target=i386-pc --recheck /dev/sda
 
- Create grub.cfg file
 
        :::console
        # grub-mkconfig -o /boot/grub/grub.cfg
 
- Edit ramdisk
 
        :::console
        # nano -w /etc/mkinitcpio.conf
        -----------------------------
        HOOKS="base udev autodetect modconf block filesystems keyboard fsck"
 
- Generate ramdisk
 
        :::console
        # mkinitcpio -p linux-libre-lts
 
- Set root user password
 
        :::console
        # passwd
 
- Configure [wpa_supplicant][wpa_link]{:target='_blank' rel='noopener noreferrer'}
 
        :::console
        # nano -w /etc/wpa_supplicant/wpa_supplicant.conf
 
    and inside:
 
        :::bash
        ctrl_interface=/var/run/wpa_supplicant
        ctrl_interface_group=wheel
        update_config=1
 
        network = {
            ssid="lynx"
	        psk="your-pass"
        }
 
    Add to service by default
 
        :::console
        # rc-update add wpa_supplicant default
 
- [DHCPCD][dhcpcd_link]{:target='_blank' rel='noopener noreferrer'}
 
    Add to service by default
 
        :::console
        # rc-update add dhcpcd default
 
- Close chroot
 
        :::console
        # exit
 
- Unmount partitions
 
        :::console
        # umount '/mnt/{boot,home,}'
 
- Reboot
 
        :::console
        # reboot
 
### Adding a user
 
- Create user group, for example: `libre`
 
        :::console
        # groupadd libre
 
- Create user `freedom` and add it to basic groups
 
        :::console
        # useradd -m -G audio,disk,games,http,input,lp,network,optical,power,scanner,storage,sys,video,wheel -g libre -s /bin/bash freedom
 
- Assign password
 
        :::console
        # passwd freedom
 
- Edit `/etc/sudoers` file
 
        :::console
        # sed -i /etc/sudoers -e 's|^# %wheel ALL=(ALL) ALL|%wheel ALL=(ALL) ALL|g'
 
- Reboot pc
 
        :::console
        # reboot
 
- Upgrade system
 
        :::console
        $ sudo pacman -Syu
 
### BASE graphical interface
 
#### Install video package (depending trademark of your video card)
 
Check video trademark:
 
    :::console
    # lspci | grep -e VGA
 
Install one, depending of trademark:
 
AMD:
 
    :::console
    # pacman -S xorg-video-amdgpu
 
Ati:
 
    :::console
    # pacman -S xenocara-video-ati
 
Intel:
 
    :::console
    # pacman -S xorg-video-intel
 
Nvidia:
 
    :::console
    # pacman -S xorg-video-nouveau
 
Vesa (generic):
 
    :::console
    # pacman -S xenocara-video-vesa
 
#### Xenocara components
 
    :::console
    # pacman -S xenocara-server xenocara-xinit xenocara
 
#### Mesa demos
 
    :::console
    # pacman -S mesa mesa-demos
 
#### Setting in keyboard language for Xenocara
 
Syntax of X configuration files is explained in
[Xenocara#Configuration][xe-conf]{:target='_blank' rel='noopener noreferrer'}.
Method creates configuration for entire system, which is
maintained after reboot.
 
Here's an example:
 
    :::console
    # nano -w /etc/X11/xorg.conf.d/00-keyboard.conf
 
and inside write:
 
    :::bash
    Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout"  "us,uk"
        Option "XkbModel"   "pc105"
        Option "XkbVariant" "deadtilde,dvorak"
        Option "XkbOptions" "grp:alt_shift_toggle"
    EndSection
 
XkbOptions can receive various parameters for example:
 
`"grp:alt_shift_toggle,compose:rwin,lv3:ralt_switch,numpad:pc"`
 
We have 2 keyboard layouts: English US (us) and English UK (uk),
and to go from one to the other just use the `ALT+SHIFT`
key combination.
 
- Check keyboard settings:
 
        :::console
        # setxkbmap -print -verbose 10
 
- Typefaces
 
        :::console
        # pacman -S ttf-liberation ttf-bitstream-vera ttf-dejavu ttf-droid
 
Next, we will proceed to create the personal folders.
In case you have planned to install **GNOME** or **PLASMA KDE**
as a desktop environment, skip this step, since the
**GNOME** or **PLASMA KDE** installation automatically
generates this directories.
 
- Directory generator installation:
 
        :::console
        # pacman -S xdg-user-dirs
 
- Automatic directory creation:
 
        :::console
        # xdg-user-dirs-update
 
#### Audio support
 
Install `pulseadio`
 
    :::console
    # pacman -S pulseaudio pulseaudio-alsa alsa-utils pavucontrol
 
Add audio service to default
 
    :::console
    # rc-update add alsasound default
 
#### Configure pulseaudio
 
    :::console
    # sed -e 's/^; autospawn = yes/autospawn = yes/g' -i /etc/pulse/client.conf
 
### Officially supported desktop environments
 
#### Install MATE
 
MATE desktop environment is the continuation of GNOME 2 (Based on Gnome 2).
It provides an intuitive and attractive environment. MATE is actively being
developed to add support for new technologies, while preserving the
traditional desktop experience.
 
- Installation
 
        :::console
        # pacman -S mate mate-extra
 
Where:
 
+ mate: contains basic desktop environment and applications necessary for the standard MATE experience.
+ mate-extra: contains a set of packages and optional tools, like a screensaver, a calculator,
an editor and other non-problematic applications that go well with the MATE desktop.
 
#### Install XFCE
 
Xfce is a lightweight desktop environment for UNIX-like systems.
Its goal is to be fast and use few system resources, while
remaining visually attractive and easy to use.
 
- Installation
 
        :::console
        # pacman -S xfce4 xfce4-goodies
 
Where:
 
+ xfce4: is basic group of xfce4 packages.
+ xfce4-goodies: is a group of additional packages, such as panel plugins,
notifications and other system tools.
 
#### Install LXDE
 
LXDE is a free desktop environment. Abbreviation means
«Lightweight X11 Desktop Environment»
 
- Installation
 
        :::console
        # pacman -S lxde
 
#### Install KDE Plasma
 
KDE is a software project that currently comprises a
desktop environment known as Plasma, a collection of
libraries and frameworks (KDE Frameworks) and also a
large number of applications (KDE Applications).
 
The desktop environment created by KDE primarily for GNU/Linux systems,
KDE Plasma 5, is successor to KDE Plasma Workspaces and is primarily
released on July 15, 2014.
 
- Installation
 
        :::console
        # pacman -S plasma kde-applications plasma-wayland-session
 
Where:
 
+ plasma: contains group of packages to install desktop. with some basic applications and tools.
+ kde-applications: installs all KDE applications contained in group (kcal, amarok, etc).
+ plasma-wayland-session: enable support for Wayland in Plasma.
 
#### How to start Xenocara?
 
- Write a `~/.xinitrc` file (option 1)
 
    Uncomment your desktop installed, example file `~/.xinitrc`:
 
        :::bash
        #!/bin/sh
        #
        # ~/.xinitrc
        #
        # Executed by startx (run your window manager from here)
        #
        # exec enlightenment_start
        # exec i3
        # exec mate-session
        # exec xmonad
        # exec startlxqt
        # exec startlxde
        # exec awesome
        # exec bspwm
        # exec gnome-session
        # exec gnome-session --session=gnome-classic
        # exec startkde
        exec startxfce4
        # exec startfluxbox
        # exec openbox-session
        # exec cinnamon-session
        # exec pekwm
        # exec catwm
        # exec dwm
        # exec startede
        # exec icewm-session
        # exec jwm
        # exec monsterwm
        # exec notion
        # exec startdde #deepin-session
 
    Then from a tty, you can run `startx` and your desktop will start.
 
- Install login manager (option 2)
 
    Example: `lightdm`
 
        :::console
        # pacman -S lightdm lightdm-gtk-greeter
 
    Add to service by default
 
        :::console
        # rc-update add lightdm default
 
- Reboot
 
        :::console
        # reboot
 
### Tools
 
#### Disks
 
- gvfs to mount disks
 
        :::console
        # pacman -S gamin gvfs
 
#### Net
 
- dhcpcd-ui for IP management
 
        :::console
        # pacman -S dhcpcd-ui
 
#### Key manager
 
- gnome-kering
 
        :::console
        # pacman -S gnome-keyring
 
#### Volume applet
 
- Volume icon
 
        :::console
        # pacman -S volumeicon
 
#### Synchronize Local Time
 
Install NTP
 
    :::console
    # pacman -S ntp
 
Synchronize Time
 
    :::console
    # ntpdate -u hora.roa.es
 
#### File compressors
 
Normally we come across files compressed in ZIP, RAR and/or another
format that are usually exchanged on the Internet. In many desktop
environments, usually include theirs (File Roller in GNOME, Engrampa
in MATE, Ark in KDE, and XArchiver in XFCE/LXDE). To improve functionality
of these file compressors, we will add support for 7Z, RAR, ZIP and others.
 
- GZip (known with extension ".tar.gz"):
 
        :::console
        # pacman -S zlib haskell-zlib
 
- BZip2:
 
        :::console
        # pacman -S bzip2
 
- RAR:
 
        :::console
        # pacman -S unar
 
- 7Zip:
 
        :::console
        # pacman -S p7zip lrzip
 
- ZIP:
 
        :::console
        # pacman -S zip libzip unzip
 
#### Partition detector
 
- Udisk utility:
 
        :::console
        # pacman -S udevil autofs
 
- Reading and writing NTFS file systems:
 
        :::console
        # pacman -S ntfs-3g
 
- FAT32 file system read and write:
 
        :::console
        # pacman -S fatsort exfat-utils dosfstools
 
- Reading and writing XFS file systems:
 
        :::console
        # pacman -S xfsprogs
 
#### Multimedia support
To play multimedia files, you need to be able to have the codecs and player.
To do this, we will proceed to install ffmpeg and gstreamer codecs, in addition
to players.
Here I suggest some players that you may find useful.
 
- Codecs:
 
        :::console
        # pacman -S ffmpeg gstreamer gst-libav gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-plugins-base gstreamer-vaapi gst-transcoder ffms2 x264 libvorbis libvpx libtheora opus vorbis-tools
 
- Audacious player:
 
        :::console
        # pacman -S audacious
 
- SMPlayer:
 
        :::console
        # pacman -S smplayer smplayer-themes smplayer-skins
 
- VLC player:
 
        :::console
        # pacman -S vlc
 
- MPV player:
 
        :::console
        # pacman -S mpv
 
- Lightweight image viewer
 
        :::console
        # pacman -S viewnior
 
- PDF viewer
 
        :::console
        # pacman -S epdfview
 
#### Aplicaciones UXP
There are browsers included by desktop environments like GNOME with Epiphany
or KDE with Konqueror. However, thanks to the developers, in Hyperbola
we have **[Iceweasel-UXP][iceweasel-uxp]{:target='_blank' rel='noopener noreferrer'}**
a web browser, **[Iceape-UXP][iceape-uxp]{:target='_blank' rel='noopener noreferrer'}**
internet suite and a email-manager called
**[Icedove-UXP][icedove-uxp]{:target='_blank' rel='noopener noreferrer'}**.
 
- Iceweasel-UXP:
 
        :::console
        # pacman -S iceweasel-uxp
 
- Iceape-UXP:
 
        :::console
        # pacman -S iceape-uxp
 
- Icedove-UXP:
 
        :::console
        # pacman -S icedove-uxp
 
#### LibreOffice
In general, when using an Operating System, at least you have an office suite.
In GNU/Linux, it's customary to have one. Fortunately in Hyperbola, Libreoffice
is presented in its stable version. For install, run:
 
    :::console
    # pacman -S libreoffice-still
 
##### Spell check
To check spelling you will need hunspell and a hunspell dictionary (such as hunspell-en_US, hunspell-es, etc)
 
    :::console
    # pacman -S hunspell hunspell-en_US
 
##### Hyphenation and justification
To have provide rules you also need `hyphen` + a set of rules (hyphen-en, hyphen-de, etc)
 
    :::console
    # pacman -S hyphen hyphen-en
 
##### Synonyms
For Synonyms option you will need `mythes` + a mythes synonym library (`mythes-en` `mythes-es`)
 
    :::console
    # pacman -S mythes mythes-en
 
#### Security
Security is important when browsing the Internet, that's why Hyperbola provides
a tool called **[firejail][firejail]{:target='_blank' rel='noopener noreferrer'}**
in combination with a graphical interface
**[firetools][firetools]{:target='_blank' rel='noopener noreferrer'}**.
 
    :::console
    # pacman -S firejail firetools
 
#### Social
Hyperbola have programs for communication:
 
- Gajim
 
        :::console
        # pacman -S gajim python2-axolotl
 
- Tox
    - qtox:
 
            :::console
            # pacman -S qtox
 
    - toxic:
 
            :::console
            # pacman -S toxic
 
#### Identifying keycodes
 
Showkey utility reports key codes for the virtual console. showkey waits
for a key to be pressed and, if there is none for 10 seconds, closes.
To run showkey you need to be in a virtual console, not in a graphical
environment:
 
    :::console
    # showkey --keycodes
 
[video-guide]: https://lablibre.tuxfamily.org/hyperbola-gnu-linux-libre-base/
[firejail]: https://github.com/netblue30/firejail
[firetools]: https://l3net.wordpress.com/projects/firejail/#firetools
[usb-boot]: https://wiki.hyperbola.info/doku.php?id=en:guide:beginners#write_the_image_to_your_usb
[cd-boot]: https://wiki.hyperbola.info/doku.php?id=en:guide:beginners#burn_the_image_to_your_optical_disk
[wpa_link]: https://wiki.archlinux.org/index.php/WPA_supplicant
[dhcpcd_link]: https://wiki.archlinux.org/index.php/Dhcpcd
[iceweasel-uxp]: https://wiki.hyperbola.info/iceweasel-uxp
[iceape-uxp]: https://wiki.hyperbola.info/iceape-uxp
[icedove-uxp]: https://wiki.hyperbola.info/icedove-uxp
[xe-conf]: https://fedoraproject.org/wiki/Input_device_configuration#xorg.conf.d
 
 
 
 
====== The Installation Guide ======
The intention of this reference Guide is to assist users in the process of installing **Hyperbola GNU/Linux-libre** from the live system booted with the official installation image. This page assumes you have some **level of experience** with GNU/Linux systems and utilities, especially with the command line. If you'd like a assited, step-by-step guide through the installation process, see the [[en:manual:beginner_installation|Beginners guide]]. Before beginning, we recommend you also check our [[en:project:faq|Frequently Asked Questions]], the [[https://wiki.archlinux.org/index.php/Frequently_asked_questions|Arch FAQ]], and employ the <color #620BB9/#EEDDFF>man ''command''</color> to read the man page of any command they are not familiar with. The Hyperbola wiki (known as **HyperWiki**), as well as the **ArchWiki**, should be the primary source of information and your first resource during trouble-shooting. 
 
===== Braille Support =====
There is a ISO called [[en:project:downloads#HyperTalking]] that is a derivative install image based on **TalkingArch** and a respin of the Hyperbola ISO modified to include speech and braille output.
==== Blind and visually impaired users ====
[[en:project:downloads#HyperTalking]] includes **brltty**, for those who own braille displays.  The [[https://www.hyperbola.info/packages/?q=brltty|brltty]] package available on the [[en:project:downloads#HyperTalking]] CD was compiled with as few dependencies as possible. If you wish to use braille, you will need to supply the brltty parameter at the boot prompt.  Alternatively, you can start <color #620BB9/#EEDDFF>brltty</color> from the shell, after the system has booted.
 
The brltty boot-time parameter consists of three comma-separated fields: **driver**, **device**, and **table**.  The first is the driver for your display, the second is the name of the device file, and the third is a relative path to a translation table.  You can use "<color #620BB9/#EEDDFF>auto</color>" to specify that the driver should be automatically detected.  I encourage you to read the <color #620BB9/#EEDDFF>brltty</color> documentation for a fuller explanation of the program.
 
For example, suppose that you have a device connected to <color #0B71B9/#DDF1FF>/dev/ttyS0</color>, the first serial port.  You wish to use the US English text table, and the driver should be **automatically detected**.  Here is what you should type at the boot prompt:
 
<code bash>
arch32 brltty=auto,ttyS0,en_US

Once brltty is running, you may wish to disable speech. You can do so via the “print screen” key, also known as sysrq. On my qwerty keyboard, that key is located directly above the insert key, between F12 and scroll lock.

Create bootable image

Download live image

Make sure to change your BIOS settings so that your computer will boot from your optical disk or USB stick.

Download the new Hyperbola ISO from the download page.

  • Instead of six different images we only provide a single one which can be booted into an i686 and x86_64 live system to install Hyperbola GNU/Linux-libre over the network.

Verify the live image

Once you have downloaded the Live image as described you should verify it following:

This page explains how to verify their integrity and authenticity.
Preparation
  1. Create a directory called live_image in your home directory.
  2. Move the live image you downloaded in this directory.
  3. Download the following files and move them into the live_image directory.
Hyperbola live image

File Description
hyperbola-milky-way-v0.4.4-dual.iso.sha512 Contains the SHA512 sums to check the integrity of the Hyperbola live image.
hyperbola-milky-way-v0.4.4-dual.iso.sha512.sig Signed by the Hyperbola team to check the authenticity of the sha512sum file of the Hyperbola live image.

Your live_image directory should now contain 3 files: Your live image and the sha512 file and the signed one, like this:

  • hyperbola-milky-way-v0.4.4-dual.iso
  • hyperbola-milky-way-v0.4.4-dual.iso.sha512
  • hyperbola-milky-way-v0.4.4-dual.iso.sha512.sig
Integrity check

To verify the integrity of your live image, generate its SHA512 sum and compare it to the one found in the sha512sum file.

In most GNU/Linux distributions the SHA512 sum can be generated by opening a terminal and running the following commands:

cd
cd live_image
sha512sum -b *.iso

The last command should show you the SHA512 sum of your live file. Compare it to the sha512sum file. If it match, you've successfully verified the integrity of your live image.

If you have coreutils version 8.25 or newer, another way of checking the sum is to ask the sha512sum command to check the file against the sha512sum file, like this:
sha512sum -c hyperbola-milky-way-v0.4.4-dual.iso.sha512
Authenticity check

To verify the authenticity of the sha512sum file, we need to check the signature on the signed file.

Import the Hyperbola signing key:

gpg --keyserver keyserver.ubuntu.com --recv-key "C92B AA71 3B8D 53D3 CAE6 3FC9 E697 4752 F970 4456"
If gpg complains about the key ID, try the following commands instead:
gpg --keyserver keyserver.ubuntu.com --recv-key F9704456
gpg --list-key --with-fingerprint F9704456

Check the output of the last command, to make sure the fingerprint is C92B AA71 3B8D 53D3 CAE6 3FC9 E697 4752 F970 4456.

Verify the authenticity of the sha512sum file, like this:

cd
cd live_image
gpg --verify hyperbola-milky-way-v0.4.4-dual.iso.sha512.sig

The output of the last command should tell you that the file signature is 'good' and that it was signed with the following key: F9704456.

Acknowledgement

This wiki article is based on Mint's download page. We may have removed non-FSDG bits from it.

2017/09/27 01:49

.

  • Install images are signed and it is highly recommend to verify their signature before use. On Hyperbola, this can be done by using pacman-key -v <iso-file>.sig
  • The image can be burned to a CD, mounted as an ISO file, or directly written to a USB stick using a utility like dd. It is intended for new installations only; an existing Hyperbola GNU/Linux-libre system can always be updated with pacman -Syu.

Writing a Hyperbola ISO image to an USB drive

Burn the image to your optical disk

To create a disk to use as your install medium, insert a blank or re-writable disk, CD or DVD, into your disk drive. Next, you will need to mount the disk.

# mount sr0

Provided your computer has a disk drive. Sr0 should the first or only, if you only have one disk drive, mount point of disk drives. You will need to address the correct destination for the command to work.

# dd if=~/hyperbola-milky-way-v0.2.1-dual.iso of=/dev/sr0 bs=2048 conv=noerror && sync

Write the image to your USB

If you don’t have an ISO writer, go (change directory) to the folder where you saved the downloaded Live image (probably the Downloads folder) and type the following into your terminal:

# dd if=hyperbola-milky-way-v0.2.1-dual.iso of=/dev/sdb bs=2048 && sync
Usually works fine, even though I’ve seen other commands; feel free to modify it.

To find out what’s the name of the USB device, type fdisk -l

You’ll probably see something like this:

Device             Boot    Start                  End              Sectors               Size        Id    Type
/dev/sda1                    2048                   8390655       8388608              4G           82    Linux swap /Solaris
/dev/sda2       *          8390656             976773167  968382512          461,8G   83    Linux
Device             Boot    Start                 End              Sectors                Size        Id    Type
/dev/sdb1       *           0                         1255423      1255424               613M      0     Empty
/dev/sdb2                     172                    63659           63488                   31M        ef    EFI (FAT-12/16/32)

From the above, sda is your HDD, and the sdb is your USB device where you’re going to write your Live image.

Also take a note of your partitions, you will come to need it when you’re creating the file system and mounting the root partition during the installation.

Once you’ve downloaded, verified and written the Live image to your USB device, you can move on to boot your computer from your USB.

# dd if=''[iso file]'' of=''[usb device file]'' bs=1M && sync
[iso file] is the path to the ISO image file.
[usb device file] is the path to the USB device file. dmesg or lsblk –fs can be used to learn this path. It is often similar to device filenames of storage devices like hard drives and SSDs, e.g. /dev/sdb 'It is very important to use the correct value' to avoid overwriting other storage devices.

Internet Connection

Connect to the Internet

As of v197, udev no longer assigns network interface names according to the wlanX and ethX naming scheme. If you are coming from a different distribution or are reinstalling Hyperbola and not aware of the new interface naming style, please do not assume that your wireless interface is named wlan0, or that your wired interface is named eth0. You can use the command ip link to discover the names of your interfaces.

A DHCP service is already enabled for all available devices. If you need to setup a static IP or use management tools, you should stop this service first:

# rc-service dhcpcd stop

For more information read Configuring Network.

The dhcpcd network daemon starts automatically during boot and it will attempt to start a wired connection. Try to ping a server to see if a connection was established. For example, gnu.org:

# ping -c 3 gnu.org
 
PING gnu.org (208.118.235.148) 56(84) bytes of data.
64 bytes from wildebeest.gnu.org (208.118.235.148): icmp_seq=1 ttl=47 time=183 ms
64 bytes from wildebeest.gnu.org (208.118.235.148): icmp_seq=2 ttl=47 time=168 ms
64 bytes from wildebeest.gnu.org (208.118.235.148): icmp_seq=3 ttl=47 time=183 ms
 
--- gnu.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 168.131/178.357/183.914/7.248 ms

If you get a ping: unknown host error, first check if there is an issue with your cable or wireless signal strength. If not, you will need to set up the network manually, as explained below.

Wired

Follow this procedure if you need to set up a wired connection via a static IP address.

First, disable the dhcpcd service which was started automatically at boot:

# rc-service dhcpcd stop

Identify the name of your Ethernet interface.

# ip link
 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000
    link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff

In this example, the Ethernet interface is enp2s0f0. If you are unsure, your Ethernet interface is likely to start with the letter “e”, and unlikely to be “lo” or start with the letter “w”. You can also use iwconfig and see which interfaces are not wireless:

# iwconfig
 
enp2s0f0  no wireless extensions.
wlp3s0    IEEE 802.11bgn  ESSID:"NETGEAR97"
          Mode:Managed  Frequency:2.427 GHz  Access Point: 2C:B0:5D:9C:72:BF
          Bit Rate=65 Mb/s   Tx-Power=16 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=61/70  Signal level=-49 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:430   Missed beacon:0
lo        no wireless extensions.

In this example, neither enp2s0f0 nor the loopback device have wireless extensions, meaning enp2s0f0 is our Ethernet interface.

You also need to know these settings:

  • Static IP address.
  • Subnet mask.
  • Gateway's IP address.
  • Name servers' (DNS) IP addresses.
  • Domain name (unless you are on a local LAN, in which case you can make it up).

Activate the connected Ethernet interface (e.g. enp2s0f0):

# ip link set enp2s0f0 up

Add the address:

# ip addr add ip_address/subnetmask dev interface_name

For example:

# ip addr add 192.168.1.2/24 dev enp2s0f0

For more options, run man ip.

Add your gateway like this, substituting your own gateway's IP address:

# ip route add default via ip_address

For example:

# ip route add default via 192.168.1.1

Edit resolv.conf, substituting your name servers' IP addresses and your local domain name:

# nano /etc/resolv.conf
 
nameserver 61.23.173.5
nameserver 61.95.849.8
search example.com
Currently, you may include a maximum of three nameserver lines. In order to overcome this limitation, you can use a locally caching nameserver like Dnsmasq.

You should now have a working network connection. If you do not, check the detailed Network Configuration page.

Wireless

Follow this procedure if you need wireless connectivity (Wi-Fi) during the installation process.

First, identify the name of your wireless interface.

# iw dev
 
phy#0
        Interface wlp3s0
                ifindex 3
                wdev 0x1
                addr 00:21:6a:5e:52:bc
                type managed

In this example, wlp3s0 is the available wireless interface. If you are unsure, your wireless interface is likely to start with the letter “w”, and unlikely to be “lo” or start with the letter “e”.

If you do not see output similar to this, then your wireless driver has not been loaded. Please see Wireless Setup for more detailed information.

Bring the interface up with:

# ip link set wlp3s0 up
If you get this error message:
SIOCSIFFLAGS: No such file or directory

Then, your wireless chipset could need a non-free firmware to function. This is not supported on Hyperbola. Please see Wireless Setup if you are unsure if this is the true for your particular chipset.

Next, use iw dev wlp3s0 scan | grep SSID to scan for available networks, then connect to a network with:

# wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "ssid" "psk")

You need to replace ssid with the name of your network (e.g. “Linksys etc…”) and psk with your wireless password, leaving the quotes around the network name and password.

Finally, you have to give your interface an IP address. This can be set manually or using the dhcp:

# dhcpcd wlp3s0

If that does not work, issue the following commands:

# echo 'ctrl_interface=DIR=/run/wpa_supplicant' > /etc/wpa_supplicant.conf
# wpa_passphrase <ssid> <passphrase> >> /etc/wpa_supplicant.conf
# ip link set <interface> up # May not be needed as dhcpcd should bring it up but may be needed for wpa_supplicant.
# wpa_supplicant -B -D nl80211 -c /foobar.conf -i <interface name>
# dhcpcd -A <interface name>

ADSL with PPPoE/PPPoA

Follow this procedure if you need ADSL with PPPoE/PPPoA during the installation process.

First, identify the name of your Ethernet interface.

# ip link
 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
    link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000
    link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff

In this example, the Ethernet interface is enp2s0f0.

Second, create the PPP net script and the net script for the Ethernet interface to be used by PPP:

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.enp2s0f0
Be sure to set rc_depend_strict to YES in /etc/rc.conf.

Now we need to configure /etc/conf.d/net.

# nano /etc/conf.d/net

config_eth0=null (Specify the ethernet interface)
config_ppp0="ppp"
link_ppp0="enp2s0f0" (Specify the ethernet interface)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"
  
rc_net_ppp0_need="net.enp2s0f0"
It is also possible to set the password in /etc/ppp/pap-secrets.
Please carefully read the section on ADSL and PPP in /usr/share/doc/netifrc-*/net.example.bz2. It contains many more detailed explanations of all the settings any particular PPP setup will likely need.

Now that the interface is configured, we can start it using the following commands:

rc-service net.ppp0 start

Behind a proxy server

If you are behind a proxy server, you will need to export the http_proxy and ftp_proxy environment variables. See Proxy settings for more information.

Installation

Partition disks

Once your computer has successfully booted into the Live USB device, type the following into you terminal:

# cfdisk /dev/sda

This will bring up a graphical partitioning table, and will look somewhat like fig. 1 (see above). Use the Tab and arrow keys to navigate. This is assuming that you want Hyperbola installed on your HDD.

Delete all the partitions so that you only see Free Space.

Then make a new partition by choosing New and then make it Primary. Make this first partition a Swap. 1/4 of you computer’s memory should be enough. So with 8 GB of memory, your Swap would then be 2 GB. Then choose the End flag.

The rest of the space should be made Primary, then choose the Boot flag to make this partition bootable. Then choose Write and type ’yes’ to save your changes to disk. Then Quit.

You will then have something like this:

sda2 Boot  Primary  Linux
sda1             Primary  Linux  Swap / Solaris

Take note of the fact that the root partition that you soon will mount, is the bootable one (in this example the sda2) that you made from the rest of the space after creating the Swap partition.

See partitioning for details.

Remember to create any stacked block devices like LVM, LUKS, or RAID.

System Configuration

Activate swap

# mkswap /dev/sda1
# swapon /dev/sda1

Mount the root partition

# mount /dev/sda2 /mnt

Keyboard layout

For many countries and keyboard types appropriate keymaps are available already, and a command like loadkeys uk might do what you want. More available keymap files can be found in /usr/share/kbd/keymaps/ (you can omit the keymap path and file extension when using loadkeys).

If you’re not using an English keyboard, you can set your language by typing loadkeys followed by you language. Available keymap files can be found in /usr/share/kbd/keymaps/ (you can omit the keymap path and file extension when using loadkeys). For British users, type:

# loadkeys uk.

Format the partitions

See File Systems for details.

If you are using (U)EFI you will most probably need another partition to host the UEFI System partition. Read Create an UEFI System Partition in GNU/Linux.

Create a file system

To create the ext4 file system, type:

# mkfs.ext4 /dev/sda2

Mount the partitions

We now must mount the root partition on /mnt. You should also create directories for and mount any other partitions (/mnt/boot, /mnt/home, …) and mount your swap partition if you want them to be detected by genfstab.

Verification of package signatures

New packager keys are necessary by default to install Hyperbola from current ISOs. Because changes in existing keys might happen since rthe ISO release, it is recommended, if not mandatory, to update the keys before attempting an install.

Keep in mind these steps will fail if your system is not set to the correct time, or if you are not connected to the internet. See above for internet setup instructions.

To check that your computer has the correct time, enter date in the terminal.

# date

If the date is incorrect, you will need to manually set the correct time.

# date MMDDhhmm[[CC]YY][.ss]

where MM is the month, DD the day, hh the hour, mm the minutes, CC the century, YY the year and .SS the seconds of current time, the seconds can be omitted (and then also the dot before them should be omitted), the year can also be submitted or just the century. for instance if the current time is 32 seconds and 44 minutes past 18 (6 pm) on the 13th November 2013. Then the command would be:

# date 111318442013.32

Once the date is correct, we need to initialize the gnupg directory and update pacman's keys.

# pacman-key --init
# mount -o remount,size=100M,noatime /etc/pacman.d/gnupg
# pacman-key --populate hyperbola
# pacman-key --refresh-keys

If you get GPG errors updating those packages, you can try running these commands to start over:

# rm -r /etc/pacman.d/gnupg/*
# pacman-key --init
# pacman-key --populate hyperbola
# pacman-key --refresh-keys

If you get an error related to dirmngr, you can get rid of it with:

# mkdir /root/.gnupg && chmod go-rx /root/.gnupg && touch /root/.gnupg/dirmngr_ldapservers.conf

For the time being, running the previous command might also be needed in the newly installed system.

Base system installation

Before installing, you may want to edit /etc/pacman.d/mirrorlist such that your preferred mirror is first. This copy of the mirrorlist will be installed on your new system by pacstrap as well, so it's worth getting it right.

Install the base system using pacstrap:

# pacstrap /mnt base

You can install additional packages passing base and the names of these packages as arguments after the root directory of the new installation (all packages from the base group are installed if no package is specified).

You can also use package group base-devel to include developement and contribution tools
If you have a btrfs root, you probably want to install also btrfs-progs.
If you face GPG errors when running, you can try to fix them with:
# rm -r /etc/pacman.d/gnupg/*
# pacman-key --init
# pacman-key --populate hyperbola
# pacman-key --refresh-keys

Wireless tools installation

If your wireless network is WPA protected, you'll need wpa_supplicant to connect to it:

# pacstrap /mnt wpa_supplicant

System configuration

Generate an fstab

# genfstab -U -p /mnt >> /mnt/etc/fstab

Generate a fstab with the following command (if you prefer to use UUIDs or labels, add the -U or -L option, respectively):

# genfstab -p /mnt >> /mnt/etc/fstab

Chroot and configure the base system

Next we chroot into our newly installed system:

# arch-chroot /mnt
  • Write your hostname to /etc/hostname

Hostname

Usually it’s sufficient to set your hostname to localhost.

# echo localhost > /etc/hostname

Add the same hostname, i.e. localhost, to /etc/hosts.

Type:

# nano /etc/hosts
# <ip-address> <hostname.domain.org> <hostname>
127.0.0.1                localhost.localdomain     localhost localhost
::1                             localhost.localdomain     localhost localhost
# echo myhostname > /etc/hostname
  • Symlink /etc/localtime to /usr/share/zoneinfo/Zone/SubZone. Replace Zone and Subzone to your liking. For example:
# ln -s /usr/share/zoneinfo/Europe/Athens /etc/localtime
  • Set locale preferences in /etc/locale.conf

Locale

Type:

# nano /etc/locale.gen

Now choose your locale from what language you’re using. All locales are commented out (preceded by #) by default. Uncomment (remove the #) for your choice of locale. For US English, it should look like this:

# nano /etc/locale.gen
...
#en_SG ISO-8859-1
en_US.UTF-8 UTF-8
#en_US ISO-8859-1
...

After you’ve uncommented your language, run the command:

# locale-gen

Then create the /etc/locale.conf

# echo LANG=en_US.UTF-8 > /etc/locale.conf 

Then export your chosen locale

# export LANG=en_US.UTF-8
  • Add console keymap and font preferences in /etc/conf.d/keymaps

Keymap

As the locale, you need to setup the keymap in the file /etc/conf.d/keymaps:

keymap="us"

If you have an advanced usage of your keymap, you can watch the other functionalities, documented in the comments. You can find all the available keymaps in /usr/share/kbd/keymaps. Then run:

# rc-update add keymaps default
This only applies for CLI, is you are using X11, this won't affect your graphical environment.
  • Uncomment the selected locale in /etc/locale.gen and generate it with locale-gen

Time zone

Create a symbolic link /etc/localtime to your subzone file /usr/share/zoneinfo/Zone/SubZone:

# ln -s /usr/share/zoneinfo/Zone/SubZone /etc/localtime

Example:

# ln -s /usr/share/zoneinfo/Europe/Oslo /etc/localtime

If you get ln: failed to create symbolic link ’/etc/localtime’: File exists, then run:

# ln -s -f /usr/share/zoneinfo/Zone/SubZone /etc/localtime

Hardware clock

Set the hardware clock to UTC

# hwclock --systohc --utc

Root password

Remember when you’re typing in your root password (as any password) into the terminal, it won’t show. Just carefully type in your chosen root password and repeat it when asked to.

# passwd

* Set a root password with passwd

  • Add your user to the relevant group such as:
# gpasswd -a <username> video

Bootloader installation and configuration

GRUB

Finally follow these steps:

# pacman -S grub
# grub-install --target=i386-pc --recheck /dev/sdX
Here do NOT append a partition number, i.e. /dev/sdaX)
# grub-mkconfig -o /boot/grub/grub.cfg
  • To configure the bootloader, you have to install it and generate the file grub.cfg:
If you want to install GRUB on a Libreboot system, keep in mind your system does not use UEFI or Legacy BIOS, but instead loads GRUB as its only payload. So you we will run this command instead:
grub-install --no-bootsector /dev/sdX
# grub-mkconfig -o /boot/grub/grub.cfg
  • For BIOS and EFI:
# pacstrap /mnt grub

See GRUB for further details.

Syslinux

# pacstrap /mnt syslinux

See Syslinux for further details.

  • Configure /etc/mkinitcpio.conf as needed (see mkinitcpio) and create an initial RAM disk with:
# mkinitcpio -p linux-libre-lts
linux-libre-lts is our default kernel since we are a long-term support distro.
  • If you want to install GRUB for the (U)EFI mode, you will need to make sure that:
    • The computer booted in (U)EFI mode (if /sys/firmware/efi exist, then it booted in (U)EFI mode)
    • The efivars module is loaded. (modprobe efivars will load it)

Bootloader on external drive

If you are following the libreboot encrypted installation instructions, be sure to save a copy of grub.cfg on a thumbdrive in case the one flashed to libreboot is incorrect. You can use the grub shell to boot from the extra copy.

Configure speech support (for blind and visually impaired users)

If you are using HyperTalking and need start speech support when you boot the system, you will need to do:

# rc-update add espeakup default
  • Save the state of the sound card, so that it will be retrieved on reboot:
# alsactl store

Unmount and reboot

If you are still in the chroot environment type exit or press Ctrl+D in order to exit.

# exit

Earlier we mounted the partitions under /mnt. In this step we will unmount them:

# umount -R /mnt
If you have made separate partitions on your system, do this instead:
# umount /mnt/{boot,home,}

Now reboot and then login into the new system.

# reboot

Remember to remove your installation medium (your USB stick) before you reboot into your system. To log in, you type root and your password.

Congratulations! You have now installed Hyperbola GNU/Linux-libre onto you computer.

Post-installation

You will now have to create a user and get user privileges like doas. And of course, you will have to install your favourite Desktop Environment (DE).

Configure pacman

Edit /etc/pacman.conf and configure pacman's options, also enabling the repositories you need.

See Pacman and repositories for details.

Update the system

At this point you should update your system.

See Upgrading packages for instructions.

Add an user

Finally, add a normal user as described in User management.

Service management

Since Hyperbola removed entire systemd support, we suggest you read about OpenRC which is our main default init system.

Conclusion

Your new Hyperbola GNU/Linux-libre base system is now a functional GNU/Linux environment.

Acknowledgement

This wiki article is based on ArchWiki, GentooWiki and ParabolaWiki. We may have removed non-FSDG bits from it.