Arch Linux Infrastructure - Automation Server - Part 6 - Everybody Get's Sensored!
Index
Part 01 - Network Switch VLANs
Part 02 - Hypervisor OS Install
Part 06 - Automation Server - You Are Here!
Part 08 - NFTables Transparent TOR Proxy / SSH / IRC
Automation Server Setup
Start i3-WM
startx
Open Terminal (urxvt)
Alt + Enter
Change Directory To Hypervisor Media Installs
cd /var/lib/libvirt/images/iso
Download Install Media
Find the latest version
Arch Linux
Note: We’re doing a UEFI install lastest versions of Arch install media support this.
Grab whatever the latest ISO is: https://archlinux.org/download/
sudo wget http://mirror.rackspace.com/archlinux/iso/2017.07.01/archlinux-2017.07.01-x86_64.iso
Verify Interfaces Have Been Created
Check that we have the interfaces brv300 and eno1.300 from the previous step setup (Automation VLAN).
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
3: brv500: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 9a:de:fd:00:4c:9c brd ff:ff:ff:ff:ff:ff
4: brv450: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether b2:40:b2:19:5d:b2 brd ff:ff:ff:ff:ff:ff
5: brv400: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 82:f9:79:52:52:f5 brd ff:ff:ff:ff:ff:ff
6: brv300: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether ce:0c:c4:f6:9b:41 brd ff:ff:ff:ff:ff:ff
7: brv200: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 56:9c:3a:04:c4:f8 brd ff:ff:ff:ff:ff:ff
8: brv100: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether ae:df:f9:a5:92:e9 brd ff:ff:ff:ff:ff:ff
9: eno1.200@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brv200 state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
10: eno1.300@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brv300 state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
11: eno1.400@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brv400 state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
12: eno1.500@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brv500 state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
13: eno1.450@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brv450 state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
14: eno1.100@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brv100 state UP mode DEFAULT group default qlen 1000
link/ether f0:1f:af:32:66:4f brd ff:ff:ff:ff:ff:ff
Start virt-manager
sudo virt-manager
virt-manager should now be on screen…
You should be connected to your hypervisor.
Click File => New Virtual Machine.
New VM
Create a new virtual machine
Step 1 of 5
Connection: QEMU/KVM
Choose how you would like to install the operating system
* Local install media (ISO image or CDROM)
* Network Install (HTTP,FTP, or NFS)
* Network Boot (PXE)
* Import existing disk image
Choose local install media and click Forward.
New VM
Create a new virtual machine
Step 2 of 5
Locate your install media
* Use CDROM or DVD
No device present
* Use ISO image:
ComboBox V Browse...
Automatically detect operating system based on install media
OS type: -
Version: -
Click Browse.
You should see the iso storage pool on the left, click it.
Then click your Arch Linux ISO.
Then click “Choose Volume”.
Leave Automatically detect checked and click Forward.
New VM
Create a new virtual machine
Step 3 of 5
Choose Memory and CPU settings
Memory (RAM): 1024 - + MiB
CPUs: 1 - +
Up to 4 available
Click Forward.
New VM
Create a new virtual machine
Step 4 of 5
Enable storage for this virtual machine
* Create a disk image for the virtual machine
40.0 - + GiB
1000 GiB available in the default location
* Select or create custom storage
Manage...
Click Forward.
New VM
Create a new virtual machine
Step 5 of 5
Ready to begin the installation
Name: AutomationServer
OS: Generic
Install: Local CDROM/ISO
Memory: 1024 MiB
CPUs: 1
Storage: 40.0 GiB /var/lib/libvirt/images/AutomationServer.qcow2
X Customize configuration before install
Network selection
* Specify shared device name
Bridge name: brv300
Click the checkmark on “Customize configuration before install”.
Click the “Network selection” drop down arrow.
Click the Dropdown Box and select “Specify shared device name”.
Bridge name: brv300
Click Finish.
Now you should see the full virtual machine settings window.
AutomationServer on QEMU/KVM
Begin Installation Cancel Installaion
Overview
CPUs
Memory
Boot Options
IDE Disk 1
IDE CDROM 1
NIC :fe:ed:30
Mouse
Display Spice
Sound: ich6
Console
Channel spice
Video QXL
Controller USB
USB Redirector 1
USB Redirector 2
Add Hardware
Basic Details
Name: AutomationServer
UUID: xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Status: Shutoff (Shut Down)
Title:
Description:
Hypervisor Details
Hypervisor: KVM
Achitecture: x86_64
Emulator: /usr/sbin/qemu-system-x86_64
Firmware: UEFI x86_64: /usr/share/ovmf/ovmf_code_x64.bin
Chipset: i440FX
Cancel Apply
Click Firmware change BIOS to UEFI x86_64: /usr/share/ovmf/ovmf_code_x64.bin.
Note: You only get one chance to change this Firmware field, it will go readonly after you Begin the Installaion.
Click on CPUs at the left.
CPUs
Logical host CPUs: 4
Current allocation: 1 - +
Maximum allocation: 1 - +
Configuration
X Copy host CPU configuration
v Topology
Manually set CPU topology
Sockets: 1 - +
Cores: 1 - +
Threads: 1 - +
Click the Copy host CPU configuration check box.
Click on Boot Options.
Autostart
X Start virtual machine on host boot up
Boot device order
X Enable boot menu
X IDE CDROM 1
X IDE Disk 1
NIC :fe:ed:50
...
V Direct kernel boot
Enable direct kernel boot
Kernel path:
Initrd path:
Kernel args:
Click on IDE CDROM 1.
Virual Disk
Sorce path: - Connect
Device type: IDE CDROM 1
Storage size: -
Readonly: X
Shareable:
V Advanced options
Disk bus: IDE
Serial number:
Storage format: raw
V Performance options
Cache mode: Hypervisor default
IO mode: Hypervisor default
Click on Connect.
Choose Media
Choose Source Device or File
X ISO Image Location
Location: Browse
CD-ROM or DVD
Device Media: No device present
Click on Browse.
Choose Storage Volume
default
Filesystem Directory
iso
Filesystem Directory
Size: 145.24 GiB Free / 140.32 GiB in Use
Location: /var/lib/libvirt/images/iso
Volumes + @ X
Volumes Size Format
archlinux-2017.07.01-x86_64.iso 510.00 MiB iso
IncrediblePBX13.2.iso 849.00 MiB iso
OPNsense-17.1.4-OpenSSL-cdrom-amd64.iso 858.43 MiB iso
pfSense-CE-2.3.4-RELEASE-amd64.iso 626.79 MiB iso
Click on Arch Linux iso then click Choose Volume.
Click OK.
Virual Disk
Sorce path: /var/lib/libvirt/images/iso/archlinux-2017.07.01-x86_64.iso Disconnect
Device type: IDE CDROM 1
Storage size: 510.00 MiB
Readonly: X
Shareable:
Click Boot Options.
Autostart
X Start virtual machine on host boot up
Boot device order
X Enable boot menu
X IDE CDROM 1
X IDE DISK 1
NIC :fe:ed:30
Make sure the IDE CDROM 1 is at the top of the Boot device order like above.
Click Apply.
Click on NIC :xx:xx:50.
Virtual Network Interface
Network source: Specify shared device name
Bridge name: brv300
Device model: virtio
MAC address: X 42:de:ad:fe:ed:30
Click Apply.
We just setup this virtual machine interface so that is uses the Automation VLAN bridge setup prior.
Click on Display Spice.
Spice Server
Type: Spice server
Listen type: Address
Address: Hypervisor default
Port: X Auto
Password:
Keymap:
Change to VNC server.
VNC Server
Type: VNC server
Listen type: Address
Address: All interfaces
Port: X Auto
Password:
Keymap:
Click Apply.
Finally click “Begin Installation” at the top left.
After the VM boots …
Push Enter on Arch Linux archiso x86_64 UEFI CD.
We’re going to use UEFI make sure your hardware bios is setup for UEFI (Ideally you wouldn’t see the entry above if you didn’t boot with UEFI).
After boot double check UEFI.
root@archiso ~ # mount | egrep efi
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
Find your network port name.
root@archiso ~ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 42:de:ad:fe:ed:30 brd ff:ff:ff:ff:ff:ff
On this hardware it is called ens3.
root@archiso ~ # ip addr show ens3
We should see something like inet 10.0.3.50/24 if you setup the virtual router properly it should be dishing out DHCP addresses.
Testing connection
root@archiso ~ # ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=38 time=73.9 ms
...
root@archiso ~ # ping google.ca
64 bytes from ord38s04-in-f14.1e100.net (172.217.0.14): icmp_seq=1 ttl=47 time=71.0 ms
...
Working!
If it doesn’t work you possible forgot to add the routes to your virtual router.
Refresh pacman
root@archiso ~ # pacman -Syy
Optional: For remote installing
Install Openssh
root@archiso ~ # pacman -S openssh
root@archiso ~ # systemctl start sshd
root@archiso ~ # passwd
New password: 1337pleb
Retype new password: 1337pleb
passwd: password updated successfully
root@archiso ~ # ip addr show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 42:de:ad:fe:ed:30 brd ff:ff:ff:ff:ff:ff
inet 10.0.3.50/24 brd 10.13.37.255 scope global ens3
valid_lft forever preferred_lft forever
Now you should be able to remote ssh root@10.0.3.50
from another machine on the network with whatever password you set example 1337pleb to finish config.
Destroy Contents Of Drive & Create Partitions
root@archiso ~ # sgdisk --zap-all /dev/sda
root@archiso ~ # sgdisk --clear \
--new=1:0:+550MiB --typecode=1:ef00 --change-name=1:EFI \
--new=2:0:+4GiB --typecode=2:8200 --change-name=2:SWAP \
--new=3:0:0 --typecode=3:8300 --change-name=3:ROOT \
/dev/sda
Creating new GPT entries.
Setting name!
partNum is 0
REALLY setting name!
Setting name!
partNum is 1
REALLY setting name!
Setting name!
partNum is 2
REALLY setting name!
The operation has completed successfully.
Show Partitions & Lables
root@archiso ~ # lsblk -o +PARTLABEL
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT PARTLABEL
loop0 7:0 0 398.3M 1 loop /run/archiso/sfs/airootfs
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 550M 0 part EFI
├─sda2 8:2 0 4G 0 part SWAP
└─sda3 8:3 0 35.5G 0 part ROOT
sr0 11:0 1 510M 0 rom /run/archiso/bootmnt
Format EFI Partition
root@archiso ~ # mkfs.vfat -F 32 -n EFI /dev/sda1
mkfs.fat 4.1 (2017-01-24)
Format ROOT Partition
root@archiso ~ # mkfs.btrfs -f -L ROOT /dev/sda3
btrfs-progs v4.11
See http://btrfs.wiki.kernel.org for more information.
Performing full device TRIM /dev/sda3 (35.46GiB) ...
Label: ROOT
UUID: 117c3f13-d9a0-41ab-889e-6c4208e43489
Node size: 16384
Sector size: 4096
Filesystem size: 35.46GiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 1.00GiB
System: DUP 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Number of devices: 1
Devices:
ID SIZE PATH
1 35.46GiB /dev/sda3
Format SWAP Partition & Turn It On
root@archiso ~ # mkswap -L SWAP /dev/sda2 :(
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
LABEL=SWAP, UUID=542a0b22-3757-45bd-83e4-eb9977d4bef4
root@archiso ~ # swapon /dev/sda2
root@archiso ~ # free -h
total used free shared buff/cache available
Mem: 996M 59M 621M 120M 315M 681M
Swap: 4.0G 0B 4.0G
Create BTRFS Mountpoints
root@archiso ~ # mount /dev/sda3 /mnt
root@archiso ~ # cd /mnt
root@archiso /mnt # btrfs sub create @
Create subvolume './@'
root@archiso /mnt # btrfs sub create @home
Create subvolume './@home'
root@archiso /mnt # btrfs sub create @snapshots
Create subvolume './@snapshots'
root@archiso /mnt # ls
@ @home @snapshots
Mount BTRFS Filesystem
root@archiso /mnt # cd
root@archiso ~ # umount /mnt
root@archiso ~ # mount -o noatime,compress=lzo,space_cache,subvol=@ /dev/sda3 /mnt
root@archiso ~ # mkdir -p /mnt/boot
root@archiso ~ # mkdir -p /mnt/home
root@archiso ~ # mkdir -p /mnt/.snapshots
root@archiso ~ # mount -o noatime,compress=lzo,space_cache,subvol=@home /dev/sda3 /mnt/home
root@archiso ~ # mount -o noatime,compress=lzo,space_cache,subvol=@snapshots /dev/sda3 /mnt/.snapshots
root@archiso ~ # mount /dev/sda1 /mnt/boot/
root@archiso ~ # df -Th
Filesystem Type Size Used Avail Use% Mounted on
dev devtmpfs 478M 0 478M 0% /dev
run tmpfs 499M 108M 391M 22% /run
/dev/sr0 iso9660 510M 510M 0 100% /run/archiso/bootmnt
cowspace tmpfs 256M 12M 245M 5% /run/archiso/cowspace
/dev/loop0 squashfs 399M 399M 0 100% /run/archiso/sfs/airootfs
airootfs overlay 256M 12M 245M 5% /
tmpfs tmpfs 499M 0 499M 0% /dev/shm X Start virtual machine on host boot up
tmpfs tmpfs 499M 0 499M 0% /sys/fs/cgroup
tmpfs tmpfs 499M 0 499M 0% /tmp
tmpfs tmpfs 499M 1.5M 497M 1% /etc/pacman.d/gnupg
tmpfs tmpfs 100M 0 100M 0% /run/user/0
/dev/sda3 btrfs 36G 17M 34G 1% /mnt
/dev/sda3 btrfs 36G 17M 34G 1% /mnt/home
/dev/sda3 btrfs 36G 17M 34G 1% /mnt/.snapshots
/dev/sda1 vfat 549M 4.0K 549M 1% /mnt/boot
Pacstrap All The Things To /mnt
Installing: base base-devel btrfs-progs dosfstools bash-completion efibootmgr
root@archiso ~ # pacstrap /mnt base base-devel btrfs-progs dosfstools bash-completion efibootmgr
==> Creating install root at /mnt
==> Installing packages to /mnt
:: Synchronizing package databases...
core is up to date
extra is up to date
community 3.9 MiB 2.36M/s 00:02 [############################] 100%
:: There are 50 members in group base:
:: Repository core
1) bash 2) bzip2 3) coreutils 4) cryptsetup 5) device-mapper 6) dhcpcd
7) diffutils 8) e2fsprogs 9) file 10) filesystem 11) findutils 12) gawk
13) gcc-libs 14) gettext 15) glibc 16) grep 17) gzip 18) inetutils 19) iproute2
20) iputils 21) jfsutils 22) less 23) licenses 24) linux 25) logrotate 26) lvm2
27) man-db 28) man-pages 29) mdadm 30) nano 31) netctl 32) pacman 33) pciutils
34) pcmciautils 35) perl 36) procps-ng 37) psmisc 38) reiserfsprogs 39) s-nail
40) sed 41) shadow 42) sysfsutils 43) systemd-sysvcompat 44) tar 45) texinfo
46) usbutils 47) util-linux 48) vi 49) which 50) xfsprogs X Start virtual machine on host boot up
Enter a selection (default=all):
:: There are 25 members in group base-devel:
:: Repository core
1) autoconf 2) automake 3) binutils 4) bison 5) fakeroot 6) file 7) findutils
8) flex 9) gawk 10) gcc 11) gettext 12) grep 13) groff 14) gzip 15) libtool
16) m4 17) make 18) pacman 19) patch 20) pkg-config 21) sed 22) sudo
23) texinfo 24) util-linux 25) which
Enter a selection (default=all):
warning: skipping target: file
warning: skipping target: findutils
warning: skipping target: gawk
warning: skipping target: gettext
warning: skipping target: grep
warning: skipping target: gzip
warning: skipping target: pacman
warning: skipping target: sed
warning: skipping target: texinfo
warning: skipping target: util-linux
warning: skipping target: which
resolving dependencies...
looking for conflicting packages...
Packages (153) acl-2.2.52-3 archlinux-keyring-20170611-1 attr-2.4.47-2
ca-certificates-20170307-1 ca-certificates-cacert-20140824-4
ca-certificates-mozilla-3.31-3 ca-certificates-utils-20170307-1
cracklib-2.9.6-1 curl-7.54.1-1 db-5.3.28-3 dbus-1.10.18-1 efivar-31-1
expat-2.2.1-1 gc-7.6.0-1 gdbm-1.13-1 glib2-2.52.3-1 gmp-6.1.2-1
gnupg-2.1.21-3 gnutls-3.5.14-1 gpgme-1.9.0-3 guile-2.2.2-1
hwids-20170328-1 iana-etc-20170512-1 icu-59.1-1 iptables-1.6.1-1
kbd-2.0.4-1 keyutils-1.5.10-1 kmod-24-1 krb5-1.15.1-1 libaio-0.3.110-1
libarchive-3.3.1-5 libassuan-2.4.3-1 libatomic_ops-7.4.6-1
libcap-2.25-1 libelf-0.169-1 libffi-3.2.1-2 libgcrypt-1.7.8-1
libgpg-error-1.27-1 libidn-1.33-1 libksba-1.3.4-2 libldap-2.4.44-5
libmnl-1.0.4-1 libmpc-1.0.3-2 libnftnl-1.0.7-1 libnghttp2-1.23.1-1
libnl-3.3.0-1 libpcap-1.8.1-2 libpipeline-1.4.1-1 libpsl-0.17.0-2
libsasl-2.1.26-11 libseccomp-2.3.2-1 libsecret-0.18.5+14+g9980655-1
libssh2-1.8.0-2 libsystemd-233.75-2 libtasn1-4.12-1 libtirpc-1.0.1-3
libunistring-0.9.7-1 libusb-1.0.21-2 libutil-linux-2.29.2-2
linux-api-headers-4.10.1-1 linux-firmware-20170422.ade8332-1
lz4-1:1.7.5-1 lzo-2.10-1 mkinitcpio-23-1 mkinitcpio-busybox-1.26.1-1
mpfr-3.1.5.p2-1 ncurses-6.0+20170527-1 nettle-3.3-1 npth-1.5-1
openresolv-3.9.0-1 openssl-1.1.0.f-1 p11-kit-0.23.7-1
pacman-mirrorlist-20170628-1 pam-1.3.0-1 pambase-20130928-1 pcre-8.40-1
pinentry-1.0.0-1 popt-1.16-8 readline-7.0.003-1 sqlite-3.19.3-1
systemd-233.75-2 thin-provisioning-tools-0.7.0-1 tzdata-2017b-1
xz-5.2.3-1 zlib-1:1.2.11-1 autoconf-2.69-4 automake-1.15.1-1
bash-4.4.012-2 bash-completion-2.5-1 binutils-2.28.0-3 bison-3.0.4-2
btrfs-progs-4.11.1-1 bzip2-1.0.6-6 coreutils-8.27-1 cryptsetup-1.7.5-1
device-mapper-2.02.172-2 dhcpcd-6.11.5-1 diffutils-3.6-1
dosfstools-4.1-1 e2fsprogs-1.43.4-1 efibootmgr-15-1 fakeroot-1.21-2
file-5.31-1 filesystem-2017.03-2 findutils-4.6.0-2 flex-2.6.4-1
gawk-4.1.4-2 gcc-7.1.1-3 gcc-libs-7.1.1-3 gettext-0.19.8.1-2
glibc-2.25-5 grep-3.1-1 groff-1.22.3-7 gzip-1.8-2 inetutils-1.9.4-5
iproute2-4.12.0-1 iputils-20161105.1f2bb12-2 jfsutils-1.1.15-4
less-487-1 libtool-2.4.6-8 licenses-20140629-2 linux-4.11.9-1
logrotate-3.12.2-1 lvm2-2.02.172-2 m4-1.4.18-1 make-4.2.1-2
man-db-2.7.6.1-2 man-pages-4.11-1 mdadm-4.0-1 nano-2.8.5-1
netctl-1.12-2 pacman-5.0.2-1 patch-2.7.5-1 pciutils-3.5.4-1
pcmciautils-018-7 perl-5.26.0-1 pkg-config-0.29.2-1 procps-ng-3.3.12-1
psmisc-23.1-1 reiserfsprogs-3.6.25-1 s-nail-14.8.16-2 sed-4.4-1
shadow-4.4-3 sudo-1.8.20.p2-1 sysfsutils-2.1.0-9
systemd-sysvcompat-233.75-2 tar-1.29-2 texinfo-6.4-1 usbutils-008-1
util-linux-2.29.2-2 vi-1:070224-2 which-2.21-2 xfsprogs-4.11.0-1
Total Download Size: 257.73 MiB
Total Installed Size: 947.09 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
linux-api-headers-4.10.... 852.4 KiB 2.52M/s 00:00 [############################] 100%
tzdata-2017b-1-any 235.8 KiB 9.59M/s 00:00 [############################] 100%
iana-etc-20170512-1-any 360.9 KiB 11.7M/s 00:00 [############################] 100%
filesystem-2017.03-2-x86_64 10.2 KiB 0.00B/s 00:00 [############################] 100%
glibc-2.25-5-x86_64 8.4 MiB 2.33M/s 00:04 [############################] 100%
gcc-libs-7.1.1-3-x86_64 17.7 MiB 2.52M/s 00:07 [############################] 100%
ncurses-6.0+20170527-1-... 1053.3 KiB 3.12M/s 00:00 [############################] 100%
readline-7.0.003-1-x86_64 294.7 KiB 10.7M/s 00:00 [############################] 100%
bash-4.4.012-2-x86_64 1417.7 KiB 2.77M/s 00:01 [############################] 100%
bzip2-1.0.6-6-x86_64 52.8 KiB 7.37M/s 00:00 [############################] 100%
attr-2.4.47-2-x86_64 70.0 KiB 11.4M/s 00:00 [############################] 100%
acl-2.2.52-3-x86_64 132.0 KiB 12.9M/s 00:00 [############################] 100%
gmp-6.1.2-1-x86_64 408.5 KiB 2.43M/s 00:00 [############################] 100%
libcap-2.25-1-x86_64 37.9 KiB 12.3M/s 00:00 [############################] 100%
gdbm-1.13-1-x86_64 150.4 KiB 10.5M/s 00:00 [############################] 100%
db-5.3.28-3-x86_64 1097.6 KiB 3.00M/s 00:00 [############################] 100%
perl-5.26.0-1-x86_64 13.6 MiB 2.78M/s 00:05 [############################] 100%
openssl-1.1.0.f-1-x86_64 2.9 MiB 2.78M/s 00:01 [############################] 100%
coreutils-8.27-1-x86_64 2.2 MiB 3.06M/s 00:01 [############################] 100%
libgpg-error-1.27-1-x86_64 150.4 KiB 11.3M/s 00:00 [############################] 100%
libgcrypt-1.7.8-1-x86_64 466.0 KiB 2.63M/s 00:00 [############################] 100%
lz4-1:1.7.5-1-x86_64 82.7 KiB 8.07M/s 00:00 [############################] 100%
xz-5.2.3-1-x86_64 229.1 KiB 11.2M/s 00:00 [############################] 100%
libsystemd-233.75-2-x86_64 350.6 KiB 11.4M/s 00:00 [############################] 100%
device-mapper-2.02.172-... 265.8 KiB 11.3M/s 00:00 [############################] 100%
popt-1.16-8-x86_64 65.5 KiB 21.3M/s 00:00 [############################] 100%
libutil-linux-2.29.2-2-... 317.5 KiB 11.5M/s 00:00 [############################] 100%
cryptsetup-1.7.5-1-x86_64 240.8 KiB 9.80M/s 00:00 [############################] 100%
expat-2.2.1-1-x86_64 83.3 KiB 11.6M/s 00:00 [############################] 100%
dbus-1.10.18-1-x86_64 273.7 KiB 11.6M/s 00:00 [############################] 100%
libmnl-1.0.4-1-x86_64 10.5 KiB 2.56M/s 00:00 [############################] 100%
libnftnl-1.0.7-1-x86_64 59.9 KiB 19.5M/s 00:00 [############################] 100%
libnl-3.3.0-1-x86_64 354.9 KiB 11.6M/s 00:00 [############################] 100%
libusb-1.0.21-2-x86_64 54.1 KiB 17.6M/s 00:00 [############################] 100%
libpcap-1.8.1-2-x86_64 216.9 KiB 10.6M/s 00:00 [############################] 100%
iptables-1.6.1-1-x86_64 327.4 KiB 11.8M/s 00:00 [############################] 100%
zlib-1:1.2.11-1-x86_64 86.4 KiB 14.1M/s 00:00 [############################] 100%
cracklib-2.9.6-1-x86_64 249.9 KiB 12.2M/s 00:00 [############################] 100%
e2fsprogs-1.43.4-1-x86_64 959.5 KiB 2.84M/s 00:00 [############################] 100%
libsasl-2.1.26-11-x86_64 137.3 KiB 9.58M/s 00:00 [############################] 100%
libldap-2.4.44-5-x86_64 284.9 KiB 12.1M/s 00:00 [############################] 100%
keyutils-1.5.10-1-x86_64 67.5 KiB 11.0M/s 00:00 [############################] 100%
krb5-1.15.1-1-x86_64 1120.1 KiB 2.19M/s 00:01 [############################] 100%
libtirpc-1.0.1-3-x86_64 174.0 KiB 7.39M/s 00:00 [############################] 100%
pambase-20130928-1-any 1708.0 B 0.00B/s 00:00 [############################] 100%
pam-1.3.0-1-x86_64 609.7 KiB 2.98M/s 00:00 [############################] 100%
kbd-2.0.4-1-x86_64 1119.9 KiB 3.06M/s 00:00 [############################] 100%
kmod-24-1-x86_64 109.8 KiB 10.7M/s 00:00 [############################] 100%
hwids-20170328-1-any 340.2 KiB 11.1M/s 00:00 [############################] 100%
libidn-1.33-1-x86_64 206.9 KiB 10.1M/s 00:00 [############################] 100%
libelf-0.169-1-x86_64 368.8 KiB 12.0M/s 00:00 [############################] 100%
libseccomp-2.3.2-1-x86_64 66.3 KiB 10.8M/s 00:00 [############################] 100%
shadow-4.4-3-x86_64 1060.6 KiB 2.96M/s 00:00 [############################] 100%
util-linux-2.29.2-2-x86_64 1828.5 KiB 2.73M/s 00:01 [############################] 100%
systemd-233.75-2-x86_64 3.9 MiB 2.82M/s 00:01 [############################] 100%
dhcpcd-6.11.5-1-x86_64 156.8 KiB 10.9M/s 00:00 [############################] 100%
diffutils-3.6-1-x86_64 282.8 KiB 11.5M/s 00:00 [############################] 100%
file-5.31-1-x86_64 259.0 KiB 10.5M/s 00:00 [############################] 100%
findutils-4.6.0-2-x86_64 420.7 KiB 11.1M/s 00:00 [############################] 100%
mpfr-3.1.5.p2-1-x86_64 254.5 KiB 12.4M/s 00:00 [############################] 100%
gawk-4.1.4-2-x86_64 987.1 KiB 2.89M/s 00:00 [############################] 100%
pcre-8.40-1-x86_64 922.5 KiB 2.57M/s 00:00 [############################] 100%
libffi-3.2.1-2-x86_64 31.5 KiB 10.3M/s 00:00 [############################] 100%
glib2-2.52.3-1-x86_64 2.3 MiB 2.32M/s 00:01 [############################] 100%
libunistring-0.9.7-1-x86_64 491.1 KiB 2.82M/s 00:00 [############################] 100%
gettext-0.19.8.1-2-x86_64 2026.9 KiB 2.91M/s 00:01 [############################] 100%
grep-3.1-1-x86_64 188.4 KiB 10.8M/s 00:00 [############################] 100%
less-487-1-x86_64 93.6 KiB 15.2M/s 00:00 [############################] 100%
gzip-1.8-2-x86_64 75.8 KiB 12.3M/s 00:00 [############################] 100%
inetutils-1.9.4-5-x86_64 285.8 KiB 10.3M/s 00:00 [############################] 100%
iproute2-4.12.0-1-x86_64 655.1 KiB 1961K/s 00:00 [############################] 100%
sysfsutils-2.1.0-9-x86_64 30.2 KiB 9.83M/s 00:00 [############################] 100%
iputils-20161105.1f2bb1... 71.2 KiB 9.93M/s 00:00 [############################] 100%
jfsutils-1.1.15-4-x86_64 167.5 KiB 12.6M/s 00:00 [############################] 100%
licenses-20140629-2-any 63.0 KiB 10.3M/s 00:00 [############################] 100%
linux-firmware-20170422... 41.9 MiB 2.66M/s 00:16 [############################] 100%
mkinitcpio-busybox-1.26... 157.0 KiB 11.0M/s 00:00 [############################] 100%
libarchive-3.3.1-5-x86_64 449.0 KiB 11.0M/s 00:00 [############################] 100%
mkinitcpio-23-1-any 38.8 KiB 12.6M/s 00:00 [############################] 100%
linux-4.11.9-1-x86_64 61.3 MiB 3.29M/s 00:19 [############################] 100%
logrotate-3.12.2-1-x86_64 37.1 KiB 9.07M/s 00:00 [############################] 100%
libaio-0.3.110-1-x86_64 4.4 KiB 0.00B/s 00:00 [############################] 100%
thin-provisioning-tools... 370.9 KiB 10.1M/s 00:00 [############################] 100%
lvm2-2.02.172-2-x86_64 1288.9 KiB 3.10M/s 00:00 [############################] 100%
groff-1.22.3-7-x86_64 1824.6 KiB 2.73M/s 00:01 [############################] 100%
libpipeline-1.4.1-1-x86_64 36.2 KiB 11.8M/s 00:00 [############################] 100%
man-db-2.7.6.1-2-x86_64 756.1 KiB 3.69M/s 00:00 [############################] 100%
man-pages-4.11-1-any 5.7 MiB 2.46M/s 00:02 [############################] 100%
mdadm-4.0-1-x86_64 394.4 KiB 10.4M/s 00:00 [############################] 100%
nano-2.8.5-1-x86_64 418.5 KiB 11.0M/s 00:00 [############################] 100%
openresolv-3.9.0-1-any 21.1 KiB 0.00B/s 00:00 [############################] 100%
netctl-1.12-2-any 36.8 KiB 8.99M/s 00:00 [############################] 100%
libtasn1-4.12-1-x86_64 117.4 KiB 11.5M/s 00:00 [############################] 100%
p11-kit-0.23.7-1-x86_64 445.7 KiB 2.65M/s 00:00 [############################] 100%
ca-certificates-utils-2... 7.5 KiB 0.00B/s 00:00 [############################] 100%
ca-certificates-mozilla... 402.0 KiB 11.9M/s 00:00 [############################] 100%
ca-certificates-cacert-... 7.1 KiB 0.00B/s 00:00 [############################] 100%
ca-certificates-2017030... 1904.0 B 0.00B/s 00:00 [############################] 100%
libssh2-1.8.0-2-x86_64 180.2 KiB 365K/s 00:00 [############################] 100%
icu-59.1-1-x86_64 8.1 MiB 3.25M/s 00:03 [############################] 100%
libpsl-0.17.0-2-x86_64 49.4 KiB 8.04M/s 00:00 [############################] 100%
libnghttp2-1.23.1-1-x86_64 84.2 KiB 11.7M/s 00:00 [############################] 100%
curl-7.54.1-1-x86_64 904.2 KiB 2.65M/s 00:00 [############################] 100%
npth-1.5-1-x86_64 12.8 KiB 4.15M/s 00:00 [############################] 100%
libksba-1.3.4-2-x86_64 114.6 KiB 11.2M/s 00:00 [############################] 100%
libassuan-2.4.3-1-x86_64 84.6 KiB 13.8M/s 00:00 [############################] 100%
libsecret-0.18.5+14+g99... 193.3 KiB 11.8M/s 00:00 [############################] 100%
pinentry-1.0.0-1-x86_64 98.1 KiB 13.7M/s 00:00 [############################] 100%
nettle-3.3-1-x86_64 321.7 KiB 11.6M/s 00:00 [############################] 100%
gnutls-3.5.14-1-x86_64 2.3 MiB 3.24M/s 00:01 [############################] 100%
sqlite-3.19.3-1-x86_64 1259.3 KiB 3.42M/s 00:00 [############################] 100%
gnupg-2.1.21-3-x86_64 2020.5 KiB 2.33M/s 00:01 [############################] 100%
gpgme-1.9.0-3-x86_64 361.9 KiB 2.21M/s 00:00 [############################] 100%
pacman-mirrorlist-20170... 5.5 KiB 0.00B/s 00:00 [############################] 100%
archlinux-keyring-20170... 661.6 KiB 3.40M/s 00:00 [############################] 100%
pacman-5.0.2-1-x86_64 735.7 KiB 3.65M/s 00:00 [############################] 100%
pciutils-3.5.4-1-x86_64 82.4 KiB 11.5M/s 00:00 [############################] 100%
pcmciautils-018-7-x86_64 19.7 KiB 0.00B/s 00:00 [############################] 100%
procps-ng-3.3.12-1-x86_64 299.5 KiB 10.8M/s 00:00 [############################] 100%
psmisc-23.1-1-x86_64 94.4 KiB 13.2M/s 00:00 [############################] 100%
reiserfsprogs-3.6.25-1-... 201.0 KiB 11.5M/s 00:00 [############################] 100%
s-nail-14.8.16-2-x86_64 310.7 KiB 11.2M/s 00:00 [############################] 100%
sed-4.4-1-x86_64 174.0 KiB 9.99M/s 00:00 [############################] 100%
systemd-sysvcompat-233.... 7.6 KiB 0.00B/s 00:00 [############################] 100%
tar-1.29-2-x86_64 673.9 KiB 3.39M/s 00:00 [############################] 100%
texinfo-6.4-1-x86_64 1188.4 KiB 3.20M/s 00:00 [############################] 100%
usbutils-008-1-x86_64 61.3 KiB 19.9M/s 00:00 [############################] 100%
vi-1:070224-2-x86_64 148.0 KiB 10.3M/s 00:00 [############################] 100%
which-2.21-2-x86_64 15.5 KiB 0.00B/s 00:00 [############################] 100%
xfsprogs-4.11.0-1-x86_64 813.5 KiB 2.43M/s 00:00 [############################] 100%
m4-1.4.18-1-x86_64 166.1 KiB 12.5M/s 00:00 [############################] 100%
autoconf-2.69-4-any 583.5 KiB 3.22M/s 00:00 [############################] 100%
automake-1.15.1-1-any 594.7 KiB 3.01M/s 00:00 [############################] 100%
binutils-2.28.0-3-x86_64 4.7 MiB 2.47M/s 00:02 [############################] 100%
bison-3.0.4-2-x86_64 555.3 KiB 3.06M/s 00:00 [############################] 100%
fakeroot-1.21-2-x86_64 67.1 KiB 21.8M/s 00:00 [############################] 100%
flex-2.6.4-1-x86_64 282.8 KiB 12.0M/s 00:00 [############################] 100%
libmpc-1.0.3-2-x86_64 63.3 KiB 8.83M/s 00:00 [############################] 100%
gcc-7.1.1-3-x86_64 28.8 MiB 3.32M/s 00:09 [############################] 100%
libtool-2.4.6-8-x86_64 396.1 KiB 11.4M/s 00:00 [############################] 100%
make-4.2.1-2-x86_64 407.7 KiB 12.1M/s 00:00 [############################] 100%
patch-2.7.5-1-x86_64 79.2 KiB 12.9M/s 00:00 [############################] 100%
pkg-config-0.29.2-1-x86_64 34.7 KiB 11.3M/s 00:00 [############################] 100%
sudo-1.8.20.p2-1-x86_64 958.0 KiB 2.84M/s 00:00 [############################] 100%
lzo-2.10-1-x86_64 82.1 KiB 11.5M/s 00:00 [############################] 100%
btrfs-progs-4.11.1-1-x86_64 598.8 KiB 1831K/s 00:00 [############################] 100%
dosfstools-4.1-1-x86_64 56.0 KiB 13.7M/s 00:00 [############################] 100%
efivar-31-1-x86_64 75.4 KiB 10.5M/s 00:00 [############################] 100%
efibootmgr-15-1-x86_64 20.2 KiB 0.00B/s 00:00 [############################] 100%
libatomic_ops-7.4.6-1-x... 58.7 KiB 8.19M/s 00:00 [############################] 100%
gc-7.6.0-1-x86_64 217.6 KiB 12.5M/s 00:00 [############################] 100%
guile-2.2.2-1-x86_64 5.6 MiB 2.24M/s 00:03 [############################] 100%
bash-completion-2.5-1-any 171.9 KiB 9.88M/s 00:00 [############################] 100%
(153/153) checking keys in keyring [############################] 100%
(153/153) checking package integrity [############################] 100%
(153/153) loading package files [############################] 100%
(153/153) checking for file conflicts [############################] 100%
(153/153) checking available disk space [############################] 100%
:: Processing package changes...
( 1/153) installing linux-api-headers [############################] 100%
( 2/153) installing tzdata [############################] 100%
( 3/153) installing iana-etc [############################] 100%
( 4/153) installing filesystem [############################] 100%
( 5/153) installing glibc [############################] 100%
Optional dependencies for glibc
gd: for memusagestat
( 6/153) installing gcc-libs [############################] 100%
( 7/153) installing ncurses [############################] 100%
( 8/153) installing readline [############################] 100%
( 9/153) installing bash [############################] 100%
Optional dependencies for bash
bash-completion: for tab completion [pending]
( 10/153) installing bzip2 [############################] 100%
( 11/153) installing attr [############################] 100%
( 12/153) installing acl [############################] 100%
( 13/153) installing gmp [############################] 100%
( 14/153) installing libcap [############################] 100%
( 15/153) installing gdbm [############################] 100%
( 16/153) installing db [############################] 100%
( 17/153) installing perl [############################] 100%
( 18/153) installing openssl [############################] 100%
Optional dependencies for openssl
ca-certificates [pending]
( 19/153) installing coreutils [############################] 100%
( 20/153) installing libgpg-error [############################] 100%
( 21/153) installing libgcrypt [############################] 100%
( 22/153) installing lz4 [############################] 100%
( 23/153) installing xz [############################] 100%
( 24/153) installing libsystemd [############################] 100%
( 25/153) installing device-mapper [############################] 100%
( 26/153) installing popt [############################] 100%
( 27/153) installing libutil-linux [############################] 100%
( 28/153) installing cryptsetup [############################] 100%
( 29/153) installing expat [############################] 100%
( 30/153) installing dbus [############################] 100%
( 31/153) installing libmnl [############################] 100%
( 32/153) installing libnftnl [############################] 100%
( 33/153) installing libnl [############################] 100%
( 34/153) installing libusb [############################] 100%
( 35/153) installing libpcap [############################] 100%
( 36/153) installing iptables [############################] 100%
( 37/153) installing zlib [############################] 100%
( 38/153) installing cracklib [############################] 100%
( 39/153) installing e2fsprogs [############################] 100%
( 40/153) installing libsasl [############################] 100%
( 41/153) installing libldap [############################] 100%
( 42/153) installing keyutils [############################] 100%
( 43/153) installing krb5 [############################] 100%
( 44/153) installing libtirpc [############################] 100%
( 45/153) installing pambase [############################] 100%
( 46/153) installing pam [############################] 100%
( 47/153) installing kbd [############################] 100%
( 48/153) installing kmod [############################] 100%
( 49/153) installing hwids [############################] 100%
( 50/153) installing libidn [############################] 100%
( 51/153) installing libelf [############################] 100%
( 52/153) installing libseccomp [############################] 100%
( 53/153) installing shadow [############################] 100%
( 54/153) installing util-linux [############################] 100%
Optional dependencies for util-linux
python: python bindings to libmount
( 55/153) installing systemd [############################] 100%
Initializing machine ID from KVM UUID.
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
Created symlink /etc/systemd/system/multi-user.target.wants/remote-fs.target → /usr/lib/systemd/system/remote-fs.target.
:: Append 'init=/usr/lib/systemd/systemd' to your kernel command line in your
bootloader to replace sysvinit with systemd, or install systemd-sysvcompat
Optional dependencies for systemd
libmicrohttpd: remote journald capabilities
quota-tools: kernel-level quota management
systemd-sysvcompat: symlink package to provide sysvinit binaries [pending]
polkit: allow administration as unprivileged user
( 56/153) installing dhcpcd [############################] 100%
Optional dependencies for dhcpcd
openresolv: resolvconf support [pending]
( 57/153) installing diffutils [############################] 100%
( 58/153) installing file [############################] 100%
( 59/153) installing findutils [############################] 100%
( 60/153) installing mpfr [############################] 100%
( 61/153) installing gawk [############################] 100%
( 62/153) installing pcre [############################] 100%
( 63/153) installing libffi [############################] 100%
( 64/153) installing glib2 [############################] 100%
Optional dependencies for glib2
python: for gdbus-codegen and gtester-report
libelf: gresource inspection tool [installed]
( 65/153) installing libunistring [############################] 100%
( 66/153) installing gettext [############################] 100%
Optional dependencies for gettext
git: for autopoint infrastructure updates
( 67/153) installing grep [############################] 100%
( 68/153) installing less [############################] 100%
( 69/153) installing gzip [############################] 100%
( 70/153) installing inetutils [############################] 100%
( 71/153) installing iproute2 [############################] 100%
Optional dependencies for iproute2
linux-atm: ATM support
( 72/153) installing sysfsutils [############################] 100%
( 73/153) installing iputils [############################] 100%
Optional dependencies for iputils
xinetd: for tftpd
( 74/153) installing jfsutils [############################] 100%
( 75/153) installing licenses [############################] 100%
( 76/153) installing linux-firmware [############################] 100%
( 77/153) installing mkinitcpio-busybox [############################] 100%
( 78/153) installing libarchive [############################] 100%
( 79/153) installing mkinitcpio [############################] 100%
Optional dependencies for mkinitcpio
xz: Use lzma or xz compression for the initramfs image [installed]
bzip2: Use bzip2 compression for the initramfs image [installed]
lzop: Use lzo compression for the initramfs image
lz4: Use lz4 compression for the initramfs image [installed]
mkinitcpio-nfs-utils: Support for root filesystem on NFS
( 80/153) installing linux [############################] 100%
>>> Updating module dependencies. Please wait ...
Optional dependencies for linux
crda: to set the correct wireless channels of your country
( 81/153) installing logrotate [############################] 100%
( 82/153) installing libaio [############################] 100%
( 83/153) installing thin-provisioning-tools [############################] 100%
( 84/153) installing lvm2 [############################] 100%
( 85/153) installing groff [############################] 100%
Optional dependencies for groff
netpbm: for use together with man -H command interaction in browsers
psutils: for use together with man -H command interaction in browsers
libxaw: for gxditview
( 86/153) installing libpipeline [############################] 100%
( 87/153) installing man-db [############################] 100%
Optional dependencies for man-db
gzip [installed]
( 88/153) installing man-pages [############################] 100%
( 89/153) installing mdadm [############################] 100%
( 90/153) installing nano [############################] 100%
( 91/153) installing openresolv [############################] 100%
( 92/153) installing netctl [############################] 100%
Optional dependencies for netctl
dialog: for the menu based wifi assistant
dhclient: for DHCP support (or dhcpcd)
dhcpcd: for DHCP support (or dhclient) [installed]
wpa_supplicant: for wireless networking support
ifplugd: for automatic wired connections through netctl-ifplugd
wpa_actiond: for automatic wireless connections through netctl-auto
ppp: for PPP connections
openvswitch: for Open vSwitch connections
( 93/153) installing libtasn1 [############################] 100%
( 94/153) installing p11-kit [############################] 100%
( 95/153) installing ca-certificates-utils [############################] 100%
( 96/153) installing ca-certificates-mozilla [############################] 100%
( 97/153) installing ca-certificates-cacert [############################] 100%
( 98/153) installing ca-certificates [############################] 100%
( 99/153) installing libssh2 [############################] 100%
(100/153) installing icu [############################] 100%
(101/153) installing libpsl [############################] 100%
(102/153) installing libnghttp2 [############################] 100%
(103/153) installing curl [############################] 100%
(104/153) installing npth [############################] 100%
(105/153) installing libksba [############################] 100%
(106/153) installing libassuan [############################] 100%
(107/153) installing libsecret [############################] 100%
Optional dependencies for libsecret
gnome-keyring: key storage service (or use any other service implementing
org.freedesktop.secrets)
(108/153) installing pinentry [############################] 100%
Optional dependencies for pinentry
gtk2: gtk2 backend
qt5-base: qt backend
gcr: gnome3 backend
(109/153) installing nettle [############################] 100%
(110/153) installing gnutls [############################] 100%
Optional dependencies for gnutls
guile: for use with Guile bindings [pending]
(111/153) installing sqlite [############################] 100%
(112/153) installing gnupg [############################] 100%
Optional dependencies for gnupg
libldap: gpg2keys_ldap [installed]
libusb-compat: scdaemon
(113/153) installing gpgme [############################] 100%
(114/153) installing pacman-mirrorlist [############################] 100%
(115/153) installing archlinux-keyring [############################] 100%
(116/153) installing pacman [############################] 100%
(117/153) installing pciutils [############################] 100%
(118/153) installing pcmciautils [############################] 100%
(119/153) installing procps-ng [############################] 100%
(120/153) installing psmisc [############################] 100%
(121/153) installing reiserfsprogs [############################] 100%
(122/153) installing s-nail [############################] 100%
Optional dependencies for s-nail
smtp-forwarder: for sending mail
(123/153) installing sed [############################] 100%
(124/153) installing systemd-sysvcompat [############################] 100%
(125/153) installing tar [############################] 100%
(126/153) installing texinfo [############################] 100%
(127/153) installing usbutils [############################] 100%
Optional dependencies for usbutils
python2: for lsusb.py usage
coreutils: for lsusb.py usage [installed]
(128/153) installing vi [############################] 100%
Optional dependencies for vi
s-nail: used by the preserve command for notification [installed]
(129/153) installing which [############################] 100%
(130/153) installing xfsprogs [############################] 100%
(131/153) installing m4 [############################] 100%
(132/153) installing autoconf [############################] 100%
(133/153) installing automake [############################] 100%
(134/153) installing binutils [############################] 100%
(135/153) installing bison [############################] 100%
(136/153) installing fakeroot [############################] 100%
(137/153) installing flex [############################] 100%
(138/153) installing libmpc [############################] 100%
(139/153) installing gcc [############################] 100%
(140/153) installing libtool [############################] 100%
(141/153) installing libatomic_ops [############################] 100%
(142/153) installing gc [############################] 100%
(143/153) installing guile [############################] 100%
(144/153) installing make [############################] 100%
(145/153) installing patch [############################] 100%
Optional dependencies for patch
ed: for patch -e functionality
(146/153) installing pkg-config [############################] 100%
(147/153) installing sudo [############################] 100%
(148/153) installing lzo [############################] 100%
(149/153) installing btrfs-progs [############################] 100%
(150/153) installing dosfstools [############################] 100%
(151/153) installing bash-completion [############################] 100%
(152/153) installing efivar [############################] 100%
(153/153) installing efibootmgr [############################] 100%
:: Running post-transaction hooks...
(1/7) Updating linux initcpios
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 4.11.9-1-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 4.11.9-1-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [modconf]
-> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: aic94xx
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful
(2/7) Updating udev hardware database...
(3/7) Updating system user accounts...
(4/7) Creating temporary files...
(5/7) Arming ConditionNeedsUpdate...
(6/7) Updating the info directory file...
(7/7) Rebuilding certificate stores...
pacstrap /mnt base base-devel btrfs-progs dosfstools bash-completion 27.63s user 4.29s system 18% cpu 2:48.68 total
Generate FSTAB
root@archiso ~ # genfstab -Lp /mnt >> /mnt/etc/fstab
Verify FSTAB
root@archiso ~ # cat /mnt/etc/fstab
#
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3 UUID=117c3f13-d9a0-41ab-889e-6c4208e43489
LABEL=ROOT / btrfs rw,noatime,compress=lzo,space_cache,subvolid=257,subvol=/@,subvol=@ 0 0
# /dev/sda3 UUID=117c3f13-d9a0-41ab-889e-6c4208e43489
LABEL=ROOT /home btrfs rw,noatime,compress=lzo,space_cache,subvolid=258,subvol=/@home,subvol=@home 0 0
# /dev/sda3 UUID=117c3f13-d9a0-41ab-889e-6c4208e43489
LABEL=ROOT /.snapshots btrfs rw,noatime,compress=lzo,space_cache,subvolid=259,subvol=/@snapshots,subvol=@snapshots 0 0
# /dev/sda1 UUID=6D43-2B62
LABEL=EFI /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2
# /dev/sda2 UUID=542a0b22-3757-45bd-83e4-eb9977d4bef4
LABEL=SWAP none swap defaults 0 0
Chroot Into The Filesystem and Configure Some Basics
root@archiso ~ # arch-chroot /mnt/
[root@archiso /]# echo iot /etc/hostname
[root@archiso /]# echo LANG=en_US.UTF-8 > /etc/locale.conf
[root@archiso /]# echo LANGUAGE=en_US >> /etc/locale.conf
[root@archiso /]# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
[root@archiso /]# locale-gen
Generating locales...
en_US.UTF-8... done
Generation complete.
pacman.conf
[root@archiso /]# nano -w /etc/pacman.conf
Fun
Add to [options] and you will see Yellow Pacman eating dots instead of # for the progressbar.
[options]
Color
ILoveCandy
Uncomment multilibs (If you require 32 bit libraries)
#[multilib]
#Include = /etc/pacman.d/mirrorlist
to
[multilib]
Include = /etc/pacman.d/mirrorlist
Add the AUR
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
Final look.
SigLevel = Required DatabaseOptional
LocalFileSigLevel = Optional
#RemoteFileSigLevel = Required
# NOTE: You must run `pacman-key --init` before first using pacman; the local
# keyring can then be populated with the keys of all official Arch Linux
# packagers with `pacman-key --populate archlinux`.
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.
#[multilib-testing]
#Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
Update Pacman
[root@archiso /]# pacman -Sy
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
multilib 172.7 KiB 373K/s 00:00 [----------------------------] 100%
archlinuxfr 15.3 KiB 112K/s 00:00 [----------------------------] 100%
Edit Mkinitcpio For BTRFS Changes
[root@archiso /]# nano -w /etc/mkinitcpio.conf
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES="piix ide_disk reiserfs"
MODULES=""
# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=""
# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=""
# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No raid, lvm2, or encrypted root is needed.
# HOOKS="base"
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS="base udev autodetect block filesystems"
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS="base udev block filesystems"
#
## This setup assembles a pata mdadm array with an encrypted root FS.
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
# HOOKS="base udev block mdadm encrypt filesystems"
#
## This setup loads an lvm2 volume group on a usb device.
# HOOKS="base udev block lvm2 filesystems"
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr, fsck and shutdown hooks.
HOOKS="base udev autodetect modconf block btrfs filesystems keyboard"
# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"
# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=""
Regenerate initramfs
[root@archiso /]# mkinitcpio -p linux
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 4.11.9-1-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [btrfs]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 4.11.9-1-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [modconf]
-> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: aic94xx
-> Running build hook: [btrfs]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful
Set root password
[root@archiso /]# passwd
New password: Plebmast0r
Retype new password: Plebmast0r
passwd: password updated successfully
Install systemd-boot (Used to be Gummiboot)
Install to mounted EFI /boot folder.
[root@archiso /]# bootctl --path=/boot install
Created "/boot/EFI".
Created "/boot/EFI/systemd".
Created "/boot/EFI/BOOT".
Created "/boot/loader".
Created "/boot/loader/entries".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/EFI/BOOT/BOOTX64.EFI".
Created EFI boot entry "Linux Boot Manager".
Modify boot loader and entries
Verify bootloader files exist.
[root@archiso /]# cd /boot/loader
[root@archiso loader]# ls
entries loader.conf
Edit loader.conf
[root@archiso loader]# nano loader.conf
default arch
timeout 4
editor 0
Edit arch.conf
btrfs subvolume root installations
If booting a btrfs subvolume as root, amend the options line with rootflags=subvol=<root subvolume>
.
In the example below, root has been mounted as a btrfs subvolume called ‘ROOT’ (e.g. mount -o subvol=ROOT /dev/sdxY /mnt
):
[root@archiso loader]# cd entries/
[root@archiso entries]# nano -w arch.conf
title Arch Linux BTRFS
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTLABEL=ROOT rw rootflags=subvol=@
Check out the EFI boot menu
Check to see if we can see the “Linux Boot Manager” now in the EFI boot menu.
[root@archiso entries]# efibootmgr -v
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0001,0003,0004,0000,0006
Boot0000* UiApp FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
Boot0001* Linux Boot Manager HD(1,GPT,7948c78d-ca8c-4224-9e62-e3614b64987e,0x800,0x113000)/File(\EFI\systemd\systemd-bootx64.efi)
Boot0003* UEFI QEMU DVD-ROM QM00002 PciRoot(0x0)/Pci(0x1,0x1)/Ata(0,1,0)N.....YM....R,Y.
Boot0004* UEFI QEMU HARDDISK QM00003 PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)N.....YM....R,Y.
Boot0006* EFI Internal Shell FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Exit arch-chroot and unmount everything
[root@archiso entries]# exit
exit
arch-chroot /mnt/ 6.43s user 0.72s system 1% cpu 10:45.29 total
root@archiso ~ # umount -R /mnt/
Remove install media, Reboot & hope for the best
root@archiso ~ # reboot
In the Show virtual hardware details:
Click Boot Options.
Autostart
X Start virtual machine on host boot up
Boot device order
X Enable boot menu
X IDE DISK 1
X IDE CDROM 1
NIC :fe:ed:30
Make sure the IDE DISK 1 is at the top of the Boot device order like above.
Click Apply.
Click Power on the virtual machine.
Click Show graphical console.
If everything goes well you should now be at a linux console waiting for you to login with your root user account and password we set before with passwd.
Arch Linux 4.11.9-1-ARCH (tty1)
iot login: root
password: Plebmast0r
[root@iot ~]#
Let’s setup a DHCP Static Address for this server.
On the Virtual Router WebGUI.
Services => DHCP => Server.
Click IOT Tab.
Scroll down to the bottom to DHCP Static Mappings for this interface.
Click +.
Static DHCP Mapping
MAC address: 42:de:ad:fe:ed:30 Copy my MAC address
Client identifier:
IP address:10.0.3.42
Hostname:
Description: IoT Server
ARP Table Static Entry:
WINS servers:
DNS servers:
Gateway:
Domain name:
Domain search list:
Default lease time (seconds):
Maximum lease time (seconds):
Dynamic DNS Advanced - Show Dynamic DNS
NTP servers Advanced - Show NTP configuration
TFTP server Advanced - Show TFTP configuration
Save Cancel
The only 3 entries we need for this:
MAC address: 42:de:ad:fe:ed:30
IP address:10.0.3.42
Description: IoT Server
Click Save.
Click Apply changes.
Back to the IoT VM.
Enable dhcpcd.
systemctl enable dhcpcd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpcd.service -> /usr/lib/systemd/system/dhcpcd.service.
systemctl start dhcpcd
restart
Log back in and check IP address.
ip addr show ens3
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 42:de:ad:fe:ed:30 brd ff:ff:ff:ff:ff:ff
inet 10.0.3.42/24 brd 10.0.3.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 fe80::e7b4:e7ba:906b:1f21/64 scope link
valid_lft forever preferred_lft forever
Add a basic user with sudo privileges.
useradd -m -G wheel -s /bin/bash plebuser
passwd plebuser
password: PlebMast0r
export EDITOR=nano && sudo -E visudo
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
Save and exit.
Setup remote login with SSH.
pacman -S openssh
systemctl enable sshd
systemctl start sshd
Login from another system on the network.
ssh plebuser@10.0.3.42
plebuser@10.0.3.42's password: PlebMast0r
Install yaourt.
sudo pacman -S yaourt
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for plebuser: PlebMast0r
resolving dependencies...
looking for conflicting packages...
Packages (3) package-query-1.8-1 yajl-2.1.0-1
yaourt-1.8.1-1
Total Download Size: 0.18 MiB
Total Installed Size: 1.02 MiB
:: Proceed with installation? [Y/n] y
:: Retrieving packages...
yajl-2.1.0-1-x86_64 31.2 KiB 203K/s 00:00 100%
package-query-1.8-1... 36.7 KiB 262K/s 00:00 100%
yaourt-1.8.1-1-any 116.1 KiB 806K/s 00:00 100%
(3/3) checking keys in keyring 100%
(3/3) checking package integrity 100%
(3/3) loading package files 100%
(3/3) checking for file conflicts 100%
(3/3) checking available disk space 100%
:: Processing package changes...
(1/3) installing yajl 100%
(2/3) installing package-query 100%
(3/3) installing yaourt 100%
Optional dependencies for yaourt
aurvote: vote for favorite packages from AUR
customizepkg: automatically modify PKGBUILD during
install/upgrade
rsync: retrieve PKGBUILD from official repositories
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
Install openhab.
yaourt openhab
1 aur/openhab-addons 1.8.3-1 (Out of Date) (4) (0.49)
openHAB automation addons
2 aur/openhab-beta 2.2.0_20170706-1 (2) (0.03)
openHAB2 open source home automation software
3 aur/openhab-runtime 1.8.3-2 (Out of Date) (9) (0.15)
openHAB automation runtime
4 aur/openhab2 2.1.0-1 (1) (0.60)
openHAB2 open source home automation software
==> Enter n° of packages to be installed (ex: 1 2 3 or 1-3)
==> -------------------------------------------------------
==> 2
Type 2 to install the beta.
openhab-beta 2.2.0_20170706-1 (2017-07-06 18:50)
( Unsupported package: Potentially dangerous ! )
==> Edit PKGBUILD ? [Y/n] ("A" to abort)
==> ------------------------------------
==> n
Type n
==> openhab-beta dependencies:
- java-runtime-headless>=8 (building from AUR)
- unzip (package found) [makedepend]
==> Continue building openhab-beta ? [Y/n]
==> --------------------------------------
==>y
Type y
==> Building and installing package
==> Install or build missing dependencies for openhab-beta:
[sudo] password for plebuser: PlebMast0r
Type your password.
resolving dependencies...
looking for conflicting packages...
Packages (5) java-runtime-common-2-2 nspr-4.15-1
nss-3.31-3 jre8-openjdk-headless-8.u131-1
unzip-6.0-12
Total Download Size: 27.54 MiB
Total Installed Size: 101.60 MiB
:: Proceed with installation? [Y/n] y
Type y
==> Starting pkgver()...
==> Updated version: openhab-beta 2.2.0_20170706-1
==> Entering fakeroot environment...
==> Starting package()...
==> Tidying install...
-> Removing libtool files...
-> Purging unwanted files...
-> Removing static library files...
-> Stripping unneeded symbols from binaries and libraries...
-> Compressing man and info pages...
==> Checking for packaging issue...
==> Creating package "openhab-beta"...
-> Generating .PKGINFO file...
-> Generating .BUILDINFO file...
-> Generating .MTREE file...
-> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: openhab-beta 2.2.0_20170706-1 (Thu Jul 6 16:34:41 UTC 2017)
==> Cleaning up...
==> Continue installing openhab-beta ? [Y/n]
==> [v]iew package contents [c]heck package with namcap
==> ---------------------------------------------------
==> y
Type y
[sudo] password for plebuser:
loading packages...
resolving dependencies...
looking for conflicting packages...
Packages (1) openhab-beta-2.2.0_20170706-1
Total Installed Size: 57.52 MiB
:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring 100%
(1/1) checking package integrity 100%
(1/1) loading package files 100%
(1/1) checking for file conflicts 100%
(1/1) checking available disk space 100%
:: Processing package changes...
(1/1) installing openhab-beta 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
==> Packages no longer required by any installed package:
unzip
OpenHAB should now be installed in /opt/openhab/ enable and start it.
sudo systemctl enable openhab
[sudo] password for plebuser:
Created symlink /etc/systemd/system/multi-user.target.wants/openhab.service → /usr/lib/systemd/system/openhab.service.
sudo systemctl start openhab
In a webbrowser on the same network, hit http://10.0.3.42:8080 you should now be at the OpenHAB WebGUI.
https://www.openhab.org/docs/configuration/
You get 4 Options, click Expert Package to install everything.
MQTT
nano /opt/openhab/conf/services/mqtt.cfg
################################# MQTT Transport ######################################
#
# Define your MQTT broker connections here for use in the MQTT Binding or MQTT
# Persistence bundles. Replace <broker> with a id you choose.
#
# URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883
broker.url=tcp://localhost:1883
# Optional. Client id (max 23 chars) to use when connecting to the broker.
# If not provided a default one is generated.
broker.clientId=OpenHAB2
# Optional. User id to authenticate with the broker.
broker.user=USER
# Optional. Password to authenticate with the broker.
broker.pwd=PASS
# Optional. Set the quality of service level for sending messages to this broker.
# Possible values are 0 (Deliver at most once),1 (Deliver at least once) or 2
# (Deliver exactly once). Defaults to 0.
#broker.qos=<qos>
# Optional. True or false. Defines if the broker should retain the messages sent to
# it. Defaults to false.
#broker.retain=<retain>
# Optional. True or false. Defines if messages are published asynchronously or
# synchronously. Defaults to true.
#broker.async=<async>
# Optional. Defines the last will and testament that is sent when this client goes offline
# Format: topic:message:qos:retained <br/>
#broker.lwt=<last will definition>
Sitemap
demo.sitemap
sitemap demo label="Main Menu"
{
Frame {
Group item=gFF label="First Floor" icon="firstfloor"
Group item=gGF label="Ground Floor" icon="groundfloor"
Group item=gC label="Cellar" icon="cellar"
Text item=gG label="Garage" icon="garage" {
Text item=Weather_Temps
Text item=Weather_Humis
Text item=Weather_Baros
Text item=Switch2
Switch item=GarageDoorRelay1
Text item=Switch1
Switch item=Relay1 mappings=[ON="Go!"]
Text item=Available
}
Group item=Garden icon="garden"
Group item=HCSR icon="temperature"
}
Frame label="ESP-Radio Control" {
Switch item=PlayerCTRL mappings=[1='<<',2=Mute,3=Resume,4=Stop,5=Unmute,6='>>']
Selection item=ESPRadio_Station mappings=[0=Lounge, 1=Chill, 2=Boost, 3=Indie]
Slider item=ESPVolume
Text item=icyname
Text item=icystreamtitle
Text item=icygenre
Text item=icyurl
Text item=icybitrate
Text item=icysr
}
}
transform
switchb.map
nano /opt/openhab/conf/switchb.map
0=Idle
1=Pushed!
UNDEFINED=Unknown
-=Unknown
switchoo.map
nano /opt/openhab/conf/switchoo.map
0=Offline
1=Online
UNDEFINED=Unknown
-=Unknown
switchs.map
nano /opt/openhab/conf/switchs.map
0=Closed
1=Open
2=Closing
3=Opening
4=Ajar
UNDEFINED=Unknown
-=Unknown
Garage Door System
demo.items
nano /opt/openhab/conf/items/demo.items
Number Weather_Temps "Temperature [%.1f °C]" <temperature> (gG) {mqtt="<[broker:hq/garage/temperature:state:default]"}
Number Weather_Humis "Humidity [%.1f %%]" <water> (gG) {mqtt="<[broker:hq/garage/humidity:state:default]"}
Number Weather_Baros "Barometer [%.1f hPa]" <barometer> (gG) {mqtt="<[broker:hq/garage/barometer:state:default]"}
Number Switch2 "Door State [MAP(switchs.map):%s]" <garagedoor> (gG) {mqtt="<[broker:hq/garage/switch1:state:default]"}
Rollershutter GarageDoorRelay1 "Door Status [%d %%]" <garagedoor> (gG) {mqtt=">[broker:hq/garage/cmd:command:*:default],<[broker:hq/garage/position:state:default]",autoupdate="false"}
Number Switch1 "Door Action State [MAP(switchb.map):%s]" <garagedoor> (gG) {mqtt="<[broker:hq/garage/relay1:state:default]"}
Switch Relay1 "Door Action" <garagedoor> (gG) {mqtt=">[broker:hq/garage/relay1:command:ON:1],>[broker:hq/garage/relay1:command:OFF:0]"}
Number Available "I2C Module [MAP(switchoo.map):%s]" <network> (gG) {mqtt="<[broker:hq/garage/available:state:default]"}
demo.rules
var Number counter = 1
var Timer timer = null
//variables to store current state of shutter
var Number shutterOldState = 50
var Number shutterLastUp = 0
var Number shutterLastDown = 0
//URL to be called as HTPP GET. Up and Down start moving shutting either until completely moved or until Stop called.
var String shutterDownActionUrl = "http://localhost:8080/?shutter=down"
var String shutterUpActionUrl = "http://localhost:8080/?shutter=up"
var String shutterStopActionUrl = "http://localhost:8080/?shutter=halt"
// Port used to be set to 90?
//time in ms needed to completely open and close shutter, respectively
var Number SHUTTER_FULL_UP_TIME = 20000
var Number SHUTTER_FULL_DOWN_TIME = 20000
rule "Shutter Save Old State Rule"
when
Item GarageDoorRelay1 changed
then
shutterOldState = previousState as DecimalType
end
rule "TTS GDS Action"
when
Item Switch2 changed
then
var doorState = Switch2.state
var doorStateLast = 5
if ( doorState != doorStateLast ){
doorStateLast = doorState
if (Switch2.state.toString.matches("0")){
executeCommandLine("/opt/openhab/conf/scripts/webradioclitts.sh Hello-Family-Your-garage-door-is-closed.")
}
if (Switch2.state.toString.matches("1")){
executeCommandLine("/opt/openhab/conf/scripts/webradioclitts.sh Hello-Family-Your-garage-door-is-open.")
}
if (Switch2.state.toString.matches("2")){
executeCommandLine("/opt/openhab/conf/scripts/webradioclitts.sh Hello-Family-Your-garage-door-is-closing.")
}
if (Switch2.state.toString.matches("3")){
executeCommandLine("/opt/openhab/conf/scripts/webradioclitts.sh Hello-Family-Your-garage-door-is-opening.")
}
if (Switch2.state.toString.matches("4")){
executeCommandLine("/opt/openhab/conf/scripts/webradioclitts.sh Hello-Family-Your-garage-door-is-ajar.")
}
}
end
rule "Shutter Control Rule"
when
Item GarageDoorRelay1 received command
then
if(receivedCommand != null){
var Number upTime = now.millis - shutterLastUp
var Number downTime = now.millis - shutterLastDown
switch(receivedCommand.toString.upperCase) {
case "STOP" :{
var Number newState = -1
if(upTime < downTime && upTime < SHUTTER_FULL_UP_TIME) {
//last action was up and still going UP.
//0% is open!
var Number percentMoved = ((upTime) * 100 / SHUTTER_FULL_UP_TIME).intValue
newState = shutterOldState - percentMoved
println("shutterOldState: " + shutterOldState + " UP: " + percentMoved + "% in " + upTime/1000 + "sec. Now: " + newState+ "%" )
} else if(upTime > downTime && downTime < SHUTTER_FULL_DOWN_TIME) {
//last action was down and still going DOWN.
//100% is closed!
var Number percentMoved = ((downTime) * 100 / SHUTTER_FULL_DOWN_TIME).intValue
newState = shutterOldState + percentMoved
println("shutterOldState: " + shutterOldState + "% DOWN: " + percentMoved + "% in " + downTime/1000 + "sec. Now: " + newState+ "%" )
}
if(newState > 0 && newState < 100) {
//postUpdate(GarageDoorRelay1, newState)
if(shutterStopActionUrl != null){
//publish(String brokerName, String topic, String message)
//sendHttpGetRequest(shutterStopActionUrl)
publish("broker", "hq/garage/relay1", "1")
}
}
}
case "UP" : {
if(upTime < SHUTTER_FULL_UP_TIME) {
//still going up. ignore.
} else {
shutterLastUp = now.millis
if(shutterUpActionUrl != null){
//publish(String brokerName, String topic, String message)
//sendHttpGetRequest(shutterUpActionUrl)
publish("broker", "hq/garage/relay1", "1")
}
}
}
case "DOWN":{
if(downTime < SHUTTER_FULL_DOWN_TIME) {
//still going up. ignore.
} else {
shutterLastDown = now.millis
if(shutterDownActionUrl != null){
publish("broker", "hq/garage/relay1/", "1")
//sendHttpGetRequest(shutterDownActionUrl)
}
}
}
}
}
end
Scripts
nano /opt/openhab/conf/scripts/webradioclitts.sh
#!/bin/bash
# Script: webradioclitts.sh
# Contact: nonasuomy.github.io
# Description: ESP-Radio + online google tts + offline pico2wave
# Date: 20170426
# Dependancies: cURL (_POST url to ESP-Radio) https://www.archlinux.org/packages/community/x86_64/curl/
# svox-pico-bin [pico2wave] (popt sox (sox-dsd-git)) https://aur.archlinux.org/packages/svox-pico-bin/
# (Optional alternative tts engine) espeak (libpulse portaudio) https://www.archlinux.org/packages/community/x86_64/espeak/
# [mpg123] (alsa-lib libltdl (libtool) libpulse https://www.archlinux.org/packages/extra/x86_64/mpg123/
# vorbis-tools [ogg123] (curl flac libao libvorbis) https://www.archlinux.org/packages/extra/x86_64/vorbis-tools/
# sox [play] (file gsm lame libltdl (libtool) libpng libsndfile opencore-amr wavpack)
# (Optional if you don't want to use sox:play above.) alsa-utils [aplay]
# iputils [ping] (libcap openssl sysfsutils) https://www.archlinux.org/packages/core/x86_64/iputils/
#Testing sudo ./webradioclitts.sh hello-there-how-are-you (dashes required by web tts api)
# Settings:
webradio="10.0.3.33"
openhab="10.0.3.52:8080"
# Checks to see if we have a WAN connection.
online=false
if [[ $(ping -q -c1 8.8.8.8 > /dev/null 2>&1; echo $?) -eq 0 ]]; then
online=true
else
online=false
fi
# Play a pre-notification sound (Some systems don't have the default sound files.)
# WebRadio send notification sound.
onlinewebradio=false
if [[ $(ping -q -c1 $webradio > /dev/null 2>&1; echo $?) -eq 0 ]]; then
# Add one of the sound files below to openhab's static web folder /opt/openhab/conf/html/glass.mp3 etc.
/usr/bin/curl --data "station="$openhab"/static/barking.mp3" $webradio > /dev/null 2>&1
onlinewebradio=true
else
# Sound files: https://cgit.freedesktop.org/sound-theme-freedesktop/tree/stereo
#/usr/bin/ogg123 -q /usr/share/sounds/freedesktop/stereo/dialog-information.oga
# Sound files: https://github.com/GNOME/gnome-control-center/tree/master/panels/sound/data/sounds
/usr/bin/ogg123 -q /usr/share/sounds/gnome/default/alert/glass.ogg
# Sound files: http://packages.ubuntu.com/source/trusty/all/ubuntu-touch-sounds
#/usr/bin/ogg123 -q /usr/share/sounds/ubuntu/notifications/Mallet.ogg
onlinewebradio=false
fi
# Delay allow time for notification to play on WebRadio.
sleep 2
# Send text to speech to WebRadio.
vartts=$1
log_file="ttslog.txt"
# Check for text to send to TTS engines.
if [[ -n "$vartts" ]]; then
# Write to log file for debugging.
echo "$( date +%s ) $vartts" >> ${log_file}
# If we are online then use online TTS services, if not use local resources.
if [ $online == true ]; then
if [ $onlinewebradio == true ]; then
/usr/bin/curl --data "station=api.voicerss.org/?f=32khz_16bit_stereo%26key=<KEY>%26hl=en-us%26src="$vartts $webradio > /dev/null 2>&1
#http://$webradio/?station='http://translate.google.com/translate_tts?client=tw-ob&ie=UTF-8&tl=en&q='$vartts > /dev/null 2>&1
echo "/usr/bin/curl --data station=api.voicerss.org/?f=32khz_16bit_stereo%26key=<KEY>%26hl=en-us%26src="$vartts $webradio >> ${log_file} #> /dev/null 2>&1
#echo "/usr/bin/curl http://$webradio/?station='http://translate.google.com/translate_tts?client=tw-ob&ie=UTF-8&tl=en&q=$vartts'" >> ${log_file} #> /dev/null 2>&1
else
/usr/bin/mpg123 "http://translate.google.com/translate_tts?client=tw-ob&ie=UTF-8&tl=en&q=$vartts" > /dev/null 2>&1
fi
else
pico2wave -w /opt/openhab/conf/html/tts.wav "$vartts"
if [ $onlinewebradio == true ]; then
/usr/bin/curl --data "station="$openhab"/static/tts.wav" $webradio > /dev/null 2>&1
else
play tts.wav > /dev/null 2>&1
fi
# Alternative wav player.
#aplay tts.wav > /dev/null 2>&1
# Alternative TTS
#echo "$reminder" | /usr/bin/espeak
fi
else
echo "Argument error, require some text!"
fi
ESPRadio
Web radio and Text To Speech Notifications.
demo.items
/* String PlayerCTRL "<table border='0' cellspacing='0' cellpadding='0'><tr>[%s]</tr></table>" */
/* Switch item=PlayerCTRL mappings=[1=" Play ", 2=Pause, 3=Stop, 4=Prev, 5=Next] */
Number PlayerCTRL "" <player>
Number ESPRadio_Station "Preset" <network> { mqtt=">[broker:espradio:command:*:preset=${command}]" }
Dimmer ESPVolume "Volume [%s %%]" <soundvolume> { mqtt=">[broker:espradio:command:*:volume=${command}],<[broker:espradio/volume:state:default]", autoupdate="false" }
/* String Nowplaying "Now playing: [%s]" <keyring> { mqtt="<[broker:espradio/nowplaying:state:default]" } */
String icyname "Station: [%s]" <keyring> { mqtt="<[broker:espradio/icy/name:state:default]" }
String icystreamtitle "Track: [%s]" <keyring> { mqtt="<[broker:espradio/icy/streamtitle:state:default]" }
String icygenre "Genre: [%s]" <keyring> { mqtt="<[broker:espradio/icy/genre:state:default]" }
String icyurl "URL: [%s]" <keyring> { mqtt="<[broker:espradio/icy/url:state:default]" }
String icycontenttype "Content-Type: [%s]" <keyring> { mqtt="<[broker:espradio/icy/contenttype:state:default]" }
String icybitrate "Bitrate: [%s]" <keyring> { mqtt="<[broker:espradio/icy/bitrate:state:default]" }
String icysr "SR: [%s]" <keyring> { mqtt="<[broker:espradio/icy/sr:state:default]" }
demo.rules
rule "Player Controls"
when
Item PlayerCTRL received command
then
if(PlayerCTRL.state == 1)
{
publish("broker","espradio","downpreset=1")
}
if(PlayerCTRL.state == 2)
{
publish("broker","espradio","mute")
}
if(PlayerCTRL.state == 3)
{
publish("broker","espradio","resume")
}
if(PlayerCTRL.state == 4)
{
publish("broker","espradio","stop")
}
if(PlayerCTRL.state == 5)
{
publish("broker","espradio","unmute")
}
if(PlayerCTRL.state == 6)
{
publish("broker","espradio","uppreset=1")
}
PlayerCTRL.postUpdate(NULL)
end
Extras
Next Part
Continue to Part 07 - NASferatu