Raspberry Spi


# Insert an SD card into a Linux PC and;
sudo fdisk -l
#
# Disk /dev/sdb: 3965 MB, 3965190144 bytes
# 49 heads, 48 sectors/track, 3292 cylinders, total 7744512 sectors
# Units = sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disk identifier: 0x00000000
#
# Device Boot Start End Blocks Id System
# /dev/sdb1 8192 7744511 3868160 b W95 FAT32

sudo umount /dev/sdb1

sudo dd if=archlinux-hf-2013-07-22.img of=/dev/sdb
# 1870+0 records in
# 1870+0 records out
# 1960837120 bytes (2.0 GB) copied, 203.495 s, 9.6 MB/s

sudo fdisk -l
#
# Disk /dev/sdb: 3965 MB, 3965190144 bytes
# 64 heads, 32 sectors/track, 3781 cylinders, total 7744512 sectors
# Units = sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disk identifier: 0x00057540
#
# Device Boot Start End Blocks Id System
# /dev/sdb1 2048 186367 92160 c W95 FAT32 (LBA)
# /dev/sdb2 186368 3667967 1740800 5 Extended
# /dev/sdb5 188416 3667967 1739776 83 Linux

sudo gparted /dev/sdb
# Expand the sdb2 and sdb5 filesystems to use the whole SD card.

# Move the SD card to the 'pi and connect to a router that has internet access
# and another computer with ssh. The original passwd is 'root'

ssh root@192.168.2.22
# The authenticity of host '192.168.2.22 (192.168.2.22)' can't be established.
# ECDSA key fingerprint is 07:e6:10:f7:75:54:9a:58:af:98:97:e1:a8:f6:17:fb.
# Are you sure you want to continue connecting (yes/no)? yes
# Warning: Permanently added '192.168.2.22' (ECDSA) to the list of known hosts.
# root@192.168.2.22's password:
# X11 forwarding request failed on channel 0
# Last login: Fri Aug 2 00:16:57 2013 from 192.168.2.17
# [root@alarmpi ~]#

passwd
# Zaq12wsX
# Enter new UNIX password:
# Retype new UNIX password:
# passwd: password updated successfully

ping www.google.com
# PING www.google.com (74.125.225.177) 56(84) bytes of data.
# 64 bytes from den03s05-in-f17.1e100.net (74.125.225.177): icmp_seq=1 ttl=49 time=60.6 ms
# 64 bytes from den03s05-in-f17.1e100.net (74.125.225.177): icmp_seq=2 ttl=49 time=59.5 ms
# ^C
# --- www.google.com ping statistics ---
# 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
# rtt min/avg/max/mdev = 59.554/60.077/60.601/0.578 ms

pacman -Syu
# :: Synchronizing package databases...
# core 42.5 KiB 299K/s 00:00 [#################################] 100%
# extra 536.2 KiB 632K/s 00:01 [#################################] 100%
# community 546.9 KiB 753K/s 00:01 [#################################] 100%
# alarm 7.1 KiB 77.2K/s 00:00 [#################################] 100%
# aur 19.1 KiB 407K/s 00:00 [#################################] 100%
# :: Starting full system upgrade...
# resolving dependencies...
# looking for inter-conflicts...
#
# Packages (8): cracklib-2.9.0-1 dhcpcd-6.0.4-1 glib2-2.36.3-3
# libgcrypt-1.5.3-1 libusbx-1.0.16-1 linux-firmware-20130728-1
# netctl-1.2-1 pacman-mirrorlist-20130725-1
#
# Total Download Size: 21.26 MiB
# Total Installed Size: 67.06 MiB
# Net Upgrade Size: 1.43 MiB
#
# :: Proceed with installation? [Y/n] y
# :: Retrieving packages ...
# cracklib-2.9.0-1-armv6h 240.8 KiB 350K/s 00:01 [######################] 100%
# dhcpcd-6.0.4-1-armv6h 88.5 KiB 226K/s 00:00 [######################] 100%
#
# --------- 8< ---------------------------- 8< -------------- # # (7/8) upgrading netctl [#####################################] 100% # (8/8) upgrading pacman-mirrorlist [#####################################] 100% pacman-key --init # gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created # gpg: no ultimately trusted keys found # gpg: Generating pacman keyring master key... # gpg: key 69F70C96 marked as ultimately trusted # gpg: Done # ==> Updating trust database...
# gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
# gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u

reboot

pacman -S netctl
# warning: netctl-1.2-1 is up to date -- reinstalling
# resolving dependencies...
# looking for inter-conflicts...
#
# Packages (1): netctl-1.2-1
#
# Total Installed Size: 0.16 MiB
# Net Upgrade Size: 0.00 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 conflict [###############################] 100%
# (1/1) checking available space [###############################] 100%
# (1/1) reinstalling netctl

cd /etc/netctl/
# This is the directory for setting up networking in Arch

install -m640 examples/wireless-wpa wireless-home
# Install does the same thing as cp, but can alter the mode in the transfer.

vi wireless-home
# Set the ESSID and network password, then save the file.

netctl start wireless-home
# If you just get a prompt back, all is well!

# But, because we're paranoid, lets check.
ifconfig
# eth0: flags=4163 mtu 1500
# inet 10.42.0.43 netmask 255.255.255.0 broadcast 10.42.0.255
# ether b8:27:eb:9b:ed:bd txqueuelen 1000 (Ethernet)
# RX packets 1590 bytes 763883 (745.9 KiB)
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 958 bytes 125982 (123.0 KiB)
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#
# lo: flags=73
mtu 16436
# inet 127.0.0.1 netmask 255.0.0.0
# loop txqueuelen 0 (Local Loopback)
# RX packets 0 bytes 0 (0.0 B)
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 0 bytes 0 (0.0 B)
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#
# wlan0: flags=4163
mtu 1500
# inet 192.168.2.9 netmask 255.255.255.0 broadcast 192.168.2.255
# ether c8:3a:35:ca:41:a1 txqueuelen 1000 (Ethernet)
# RX packets 12 bytes 2010 (1.9 KiB)
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 12 bytes 1768 (1.7 KiB)
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#

netctl enable wireless-home
# This enables the connection after a reboot, kind of important. It also spits out
# the rather cryptic message below;
# ln -s '/etc/systemd/system/netctl@wireless\x2dhome.service' \
# '/etc/systemd/system/multi-user.target.wants/netctl@wireless\x2dhome.service'

reboot
# Verify that wireless comes up

ssh root@192.168.2.9

pacman -Syu
# :: Synchronizing package databases...
# core is up to date
# extra is up to date
# community is up to date
# alarm is up to date
# aur is up to date
# :: Starting full system upgrade...
# there is nothing to do

fdisk /dev/mmcblk0
# Welcome to fdisk (util-linux 2.23.2).
#
# Changes will remain in memory only, until you decide to write them.
# Be careful before using the write command.
#
#
# Command (m for help): p
#
# Disk /dev/mmcblk0: 7913 MB, 7913603072 bytes, 15456256 sectors
# Units = sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disk label type: dos
# Disk identifier: 0x00057540
#
# Device Boot Start End Blocks Id System
# /dev/mmcblk0p1 2048 186367 92160 c W95 FAT32 (LBA)
# /dev/mmcblk0p2 186368 3667967 1740800 5 Extended
# /dev/mmcblk0p5 188416 3667967 1739776 83 Linux
#
# Command (m for help): n
# Partition type:
# p primary (1 primary, 1 extended, 2 free)
# l logical (numbered from 5)
# Select (default p): p
# Partition number (3,4, default 3): 3
# First sector (3667968-15456255, default 3667968):
# Using default value 3667968
# Last sector, +sectors or +size{K,M,G} (3667968-15456255, default 15456255):
# Using default value 15456255
# Partition 3 of type Linux and of size 5.6 GiB is set
#
# Command (m for help): w
# The partition table has been altered!
#
# Calling ioctl() to re-read partition table.
#
# WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
# The kernel still uses the old table. The new table will be used at
# the next reboot or after you run partprobe(8) or kpartx(8)
# Syncing disks.

reboot
# Just for good measure

ssh root@192.168.2.9
# root@192.168.2.9's password:
# X11 forwarding request failed on channel 0
# Last login: Thu Jan 1 00:00:29 1970 from 192.168.2.17

fdisk -l
# Disk /dev/mmcblk0: 7913 MB, 7913603072 bytes, 15456256 sectors
# Units = sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disk label type: dos
# Disk identifier: 0x00057540
#
# Device Boot Start End Blocks Id System
# /dev/mmcblk0p1 2048 186367 92160 c W95 FAT32 (LBA)
# /dev/mmcblk0p2 186368 3667967 1740800 5 Extended
# /dev/mmcblk0p3 3667968 15456255 5894144 83 Linux
# /dev/mmcblk0p5 188416 3667967 1739776 83 Linux

mkfs.ext2 /dev/mmcblk0p3
# mke2fs 1.42.8 (20-Jun-2013)
# Filesystem label=
# OS type: Linux
# Block size=4096 (log=2)
# Fragment size=4096 (log=2)
# Stride=0 blocks, Stripe width=0 blocks
# 368640 inodes, 1473536 blocks
# 73676 blocks (5.00%) reserved for the super user
# First data block=0
# Maximum filesystem blocks=1509949440
# 45 block groups
# 32768 blocks per group, 32768 fragments per group
# 8192 inodes per group
# Superblock backups stored on blocks:
# 32768, 98304, 163840, 229376, 294912, 819200, 884736
#
# Allocating group tables: done
# Writing inode tables: done
# Writing superblocks and filesystem accounting information: done

echo "/dev/mmcblk0p3 /home ext2 defaults 0 0" >> /etc/fstab
# Set up a directory to store files.

reboot
# Make sure the mount worked

ssh root@192.168.2.9

timedatectl set-timezone America/New_York

timedatectl status
# Local time: Thu 2013-08-08 02:16:42 EDT
# Universal time: Thu 2013-08-08 06:16:42 UTC
# Timezone: America/New_York (EDT, -0400)
# NTP enabled: yes
# NTP synchronized: no
# RTC in local TZ: no
# DST active: yes
# Last DST change: DST began at
# Sun 2013-03-10 01:59:59 EST
# Sun 2013-03-10 03:00:00 EDT
# Next DST change: DST ends (the clock jumps one hour backwards) at
# Sun 2013-11-03 01:59:59 EDT
# Sun 2013-11-03 01:00:00 EST

pacman -S sudo
# resolving dependencies...
# looking for inter-conflicts...
#
# Packages (1): sudo-1.8.7-1
#
# Total Download Size: 0.62 MiB
# Total Installed Size: 2.82 MiB
#
# :: Proceed with installation? [Y/n] y
# :: Retrieving packages ...
# sudo-1.8.7-1-armv6h 635.9 KiB 604K/s 00:01 [###############] 100%
# (1/1) checking keys in keyring [######################################] 100%
# (1/1) checking package integrity [######################################] 100%
# (1/1) loading package files [######################################] 100%
# (1/1) checking for file conflict [######################################] 100%
# (1/1) checking available space [######################################] 100%
# (1/1) installing sudo [######################################] 100%

visudo
# Append 'pi ALL=(ALL) ALL' to the end of the file.

pacman -S motion
# Time to install the actual software that makes this a web enabled web cam.
# resolving dependencies...
# looking for inter-conflicts...
#
# Packages (62): alsa-lib-1.0.27.2-1 damageproto-1.2.1-2 enca-1.14-1
# ffmpeg-compat-1:0.10.8-4 fixesproto-5.0-2 flac-1.3.0-1 fontconfig-2.10.93-1
# freetype2-2.5.0.1-1 fribidi-0.19.5-1 gsm-1.0.13-7 inputproto-2.3-1
# json-c-0.11-1 kbproto-1.0.6-1 lame-3.99.5-1 libass-0.10.1-1 libasyncns-0.8-4
# libdrm-2.4.46-2 libice-1.0.8-1 libjpeg-turbo-1.3.0-2 libmodplug-0.8.8.4-1
# libogg-1.3.1-1 libpciaccess-0.13.2-1 libpulse-4.0-2 libsm-1.2.1-1
# libsndfile-1.0.25-2 libtheora-1.1.1-3 libva-1.2.1-1 libvdpau-0.7-1
# libvorbis-1.3.3-1 libvpx-1.2.0-1 libx11-1.6.1-1 libxau-1.0.8-1
# libxcb-1.9.1-2 libxdamage-1.1.4-1 libxdmcp-1.1.1-1 libxext-1.3.2-1
# libxfixes-5.0.1-1 libxi-1.7.2-1 libxrender-0.9.8-1 libxtst-1.2.2-1
# libxxf86vm-1.1.3-1 mesa-9.1.6-1 mesa-libgl-9.1.6-1 opencore-amr-0.1.3-1
# openjpeg-1.5.1-1 orc-0.4.17-1 recode-3.6-7 recordproto-1.14.2-1
# renderproto-0.11.1-2 rtmpdump-20121230-2 schroedinger-1.0.11-1
# sdl-1.2.15-3 speex-1.2rc1-3 v4l-utils-0.9.5-2 wayland-1.2.0-1
# x264-20130702-2 xcb-proto-1.8-2 xextproto-7.2.1-1 xf86vidmodeproto-2.3.1-2
# xproto-7.0.24-1 xvidcore-1.3.2-1 motion-3.2.12-10
#
# Total Download Size: 16.99 MiB
# Total Installed Size: 89.23 MiB
#
# :: Proceed with installation? [Y/n] y
# :: Retrieving packages ...
# libjpeg-turbo-1.3.0-2-armv6h 265.3 KiB 241K/s 00:01 [###################] 100%
# v4l-utils-0.9.5-2-armv6h 423.5 KiB 453K/s 00:01 [###################] 100%
# alsa-lib-1.0.27.2-1-armv6h 341.0 KiB 35.7K/s 00:10 [###################] 100%
# gsm-1.0.13-7-armv6h 33.9 KiB 131K/s 00:00 [###################] 100%
# ( 9/62) installing fontconfig [#####################################] 100%
# (61/62) installing ffmpeg-compat [#####################################] 100%
# (62/62) installing motion [#####################################] 100%

useradd -m pi
# Create a user for normal logins

passwd pi
# pi
# Enter new UNIX password:
# Retype new UNIX password:
# passwd: password updated successfully

ssh pi@192.168.2.9
# pi@192.168.2.9's password:

mount
# /dev/mmcblk0p5 on / type ext4 (rw,relatime,data=ordered)
# devtmpfs on /dev type devtmpfs (rw,relatime,size=84784k,nr_inodes=21196,mode=755)
# /dev/mmcblk0p3 on /home type ext2 (rw,relatime)
# The line above is good!
# /dev/mmcblk0p1 on /boot type vfat (rw,shortname=mixed,errors=remount-ro)

mkdir -p /home/pi/motion
# Create a place for our stuff

chmod 750 motion
# Make it a little safer.

systemctl enable motion.service
# ln -s '/usr/lib/systemd/system/motion.service' '/etc/systemd/system/multi-user.target.wants/motion.service'

vi /etc/systemd/system/multi-user.target.wants/motion.service