This is an old revision of the document!
… (WIP)
The Installation Guide
The Installation Guide for Hyperbola live-CD image (launchable from USB thumb-drive, too) is intended to assist experienced GNU/Linux users in installing Hyperbola from the live system booted with the official installation image. This page assumes a high-level of experience with GNU/Linux systems and utilities, especially the command line. If you'd like a more detailed, step-by-step guide through the installation process, see the Beginners guide. Before beginning, we recommend you view our faq, the Arch FAQ , and employ the man command
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.
Download
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.
- 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.
Blind and visually impaired users
There is a ISO called HyperTalking that is a derivative install CD based on TalkingArch and a respin of the Hyperbola ISO modified to include speech and braille output.
Writing a Hyperbola ISO image to an USB drive
# 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.
Installation
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).
Braille Support
HyperTalking includes brltty, for those who own braille displays. The brltty package available on the 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 brltty 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 “auto” to specify that the driver should be automatically detected. I encourage you to read the brltty documentation for a fuller explanation of the program.
For example, suppose that you have a device connected to /dev/ttyS0, 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:
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.
Partition disks
See partitioning for details.
Remember to create any stacked block devices like LVM, LUKS, or RAID.
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.
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.
Connect to the Internet
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
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”.
Bring the interface up with:
# ip link set wlp3s0 up
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
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"
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.
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 the ISO release, it is recommended, if not mandatory, to update the keys before attempting an install.
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 arch
# 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 arch
# 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.
Install the base system
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
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).
If you have a btrfs root, you probably want to install also btrfs-progs.
# pacstrap /mnt
Then, you can try to fix them with:
# rm -r /etc/pacman.d/gnupg/*
# pacman-key --init
# pacman-key --populate hyperbola arch
# pacman-key --refresh-keys
Install and configure a bootloader
GRUB
- For BIOS and EFI:
# pacstrap /mnt grub
- Install GRUB after chrooting (refer to the Configure the system section).
See GRUB for further details.
Syslinux
# pacstrap /mnt syslinux
See Syslinux for further details.
Install wireless tools
If your wireless network is WPA protected, you'll need wpa_supplicant to connect to it:
# pacstrap /mnt wpa_supplicant
Configure the system
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
Next we chroot into our newly installed system:
# arch-chroot /mnt
- Write your hostname to /etc/hostname
# 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
- Add console keymap and font preferences in /etc/conf.d/keymaps
- Uncomment the selected locale in /etc/locale.gen and generate it with locale-gen
- Set a root password with passwd
- Add your user to the relevant group such as:
# gpasswd -a YourActualUserName video
- Configure /etc/mkinitcpio.conf as needed (see mkinitcpio) and create an initial RAM disk with:
# mkinitcpio -p linux-libre-lts
- 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)
- To configure the bootloader, you have to install it and generate the file grub.cfg:
# grub-install /dev/sdX
grub-install --no-bootsector /dev/sdX
# grub-mkconfig -o /boot/grub/grub.cfg
- Configure the network again for newly installed environment. See Network Configuration and Wireless Setup.
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:
- Install espeakup and alsa-utils.
- Enable the espeakup service by executing:
# 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. Earlier we mounted the partitions under /mnt. In this step we will unmount them:
# umount /mnt/{boot,home,}
Now reboot and then login into the new system with the root account.
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.