Benutzer:JoergE
Aktuelle Projekte
Raspberry Pi Debian (Raspbian) basierter Server
Schritt für Schritt Anleitung unter Verwendung eines Debian basierten Linux Desktop PCs.
Achtung: inzwischen sind wir auf ein minibian basiertes System umgestiegen, das hier beschriebene Vorgehen ist nicht falsch, aber wird derzeit nicht mehr weiter verfolgt.
Hardware
Ich habe folgende Speicher ausgewählt:
- SD Card: http://www.mindfactory.de/product_info.php/64-GB-Platinum-BestMedia-SDXC-Class-10-Retail_903535.html
- USB Speicherstick: http://www.mindfactory.de/product_info.php/64-GB-Verbatim-PinStripe-schwarz-USB-2-0_794286.html
Auswahl des Installation Image
Überblick über verfügbare Images: http://www.raspberrypi.org/downloads
Image Download
in ein temporäres Verzeichnis gehen, runterladen, Prüfsumme vergleichen und auspacken.
Hinweis: bei mir hat der Torrent nicht funktioniert und der .zip file Download von 550MB war nur langsam mit ~300kB/s. Also evtl das Image nochmal woanders speichern für weitere Versuche.
root@acca:~# cd /tmp root@acca:/tmp# wget http://director.downloads.raspberrypi.org/raspbian/images/raspbian-2013-10-07/2013-09-25-wheezy-raspbian.zip root@acca:/tmp# sha1sum 2013-09-25-wheezy-raspbian.zip root@acca:/tmp# unzip 2013-09-25-wheezy-raspbian.zip
Vorbereiten der SD Card
Der Bequemlichkeit halber hier alles mit root, statt einzelnn mit "sudo".
root@acca:/tmp# sudo -i
Prüfen der gelieferten Karte:
root@acca:/tmp# fdisk -l /dev/sdb Disk /dev/sdb: 64.4 GB, 64440238080 bytes 255 Köpfe, 63 Sektoren/Spur, 7834 Zylinder, zusammen 125859840 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x00000000 Gerät boot. Anfang Ende Blöcke Id System /dev/sdb1 8192 125859839 62925824 7 HPFS/NTFS/exFAT
Achtung: Je nach installierten Laufwerken kann die Bezeichung der SD Card abweichen. Die folgenden Schritte können Daten des Systems zerstören.
Leeren der Karte
Dies machen wir um a) vorher evtl noch vorhandene alte Daten sicher zu löschen und b) um bei zukünftigen komprimierten Images Speicherplatz zu sparen
root@acca:/tmp# dd if=/dev/zero of=/dev/sdb bs=4M &
Das dauert jetzt etwas, man kann schauen wie weit es grade ist mit:
root@acca:/tmp# kill -USR1 %1 root@acca:/tmp# 309+0 Datensätze ein 309+0 Datensätze aus 1296039936 Bytes (1,3 GB) kopiert, 65,6308 s, 19,7 MB/s
Kopieren des Images auf die Karte:
root@acca:/tmp# dd if=2013-09-25-wheezy-raspbian.img of=/dev/sdb bs=4M &
Nachschauen, welche Partitionen das Original Image verwendet:
root@acca:/tmp# fdisk -l /dev/sdb Disk /dev/sdb: 64.4 GB, 64440238080 bytes 64 Köpfe, 32 Sektoren/Spur, 61455 Zylinder, zusammen 125859840 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x0002c262 Gerät boot. Anfang Ende Blöcke Id System /dev/sdb1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sdb2 122880 5785599 2831360 83 Linux
Oder mit parted:
root@acca:/tmp# parted /dev/sdb print Modell: Multiple Card Reader (scsi) Festplatte /dev/sdb: 64,4GB Sektorgröße (logisch/physisch): 512B/512B Partitionstabelle: msdos Nummer Anfang Ende Größe Typ Dateisystem Flags 1 4194kB 62,9MB 58,7MB primary fat16 LBA 2 62,9MB 2962MB 2899MB primary ext4
Jetzt kann man schauen, wieviel auf der Systempartition noch frei ist und was alles installiert ist, um zu entscheiden, welche weitere Partitionen wir noch anlegen:
root@acca:/tmp# mount /dev/sdb2 /mnt mount: Gerätedatei /dev/sdb2 existiert nicht root@acca:/tmp#
Hmm, der Kernel hat das Verändern des device nicht mitbekommen, am einfachsten lösen wir das durch Ein/Ausstecken der Karte, und dann:
root@acca:/tmp# mount /dev/sdb2 /mnt root@acca:/tmp# df /mnt Dateisystem 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf /dev/sdb2 2721336 1600924 962460 63% /mnt
Eine übersichtliche Liste der installierten Pakete bekommt man mit:
root@acca:/tmp# dpkg -l --admindir=/mnt/var/lib/dpkg |egrep -v '^ii lib\w+' |egrep -v '^ii python.?-\w+' Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten | Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/ Halb installiert/Trigger erWartet/Trigger anhängig |/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht) ||/ Name Version Architektur Beschreibung +++-=========================-==========================-========-=================================================== ii adduser 3.113+nmu3 all add and remove users and groups ii alsa-base 1.0.25+3~deb7u1 all ALSA driver configuration files ii alsa-utils 1.0.25-4 armhf Utilities for configuring and using ALSA ii apt 0.9.7.8+rpi1 armhf commandline package manager ii apt-utils 0.9.7.8+rpi1 armhf package managment related utility programs ii aptitude 0.6.8.2-1 armhf terminal-based package manager ii aptitude-common 0.6.8.2-1 all architecture indepedent files for the aptitude package manager ii aspell 0.60.7~20110707-1 armhf GNU Aspell spell-checker ii aspell-en 7.1-0-1 all English dictionary for GNU Aspell ii base-files 7.1wheezy1+rpi1 armhf Debian base system miscellaneous files ii base-passwd 3.5.26 armhf Debian base system master password and group files ii bash 4.2+dfsg-0.1 armhf GNU Bourne Again SHell ii bash-completion 1:2.0-1 all programmable completion for the bash shell ii binutils 2.22-8 armhf GNU assembler, linker and binary utilities ii blt 2.4z-4.2 armhf the BLT extension library for Tcl/Tk - run-time package ii bsdmainutils 9.0.3 armhf collection of more utilities from FreeBSD ii bsdutils 1:2.20.1-5.3 armhf Basic utilities from 4.4BSD-Lite ii build-essential 11.5+b1 armhf Informational list of build-essential packages ii bzip2 1.0.6-4 armhf high-quality block-sorting file compressor - utilities ii ca-certificates 20130119 all Common CA certificates ii cifs-utils 2:5.5-1 armhf Common Internet File System utilities ii console-setup 1.88 all console font and keymap setup program ii console-setup-linux 1.88 all Linux specific part of console-setup ii consolekit 0.4.5-3.1 armhf framework for defining and tracking users, sessions and seats ii coreutils 8.13-3.5 armhf GNU core utilities ii cpio 2.11+dfsg-0.1 armhf GNU cpio -- a program to manage archives of files ii cpp 4:4.6.3-8 armhf GNU C preprocessor (cpp) ii cpp-4.6 4.6.3-14+rpi1 armhf GNU C preprocessor ii cron 3.0pl1-124 armhf process scheduling daemon ii cups-bsd 1.5.3-5 armhf Common UNIX Printing System(tm) - BSD commands ii cups-client 1.5.3-5 armhf Common UNIX Printing System(tm) - client programs (SysV) ii cups-common 1.5.3-5 all Common UNIX Printing System(tm) - common files ii curl 7.26.0-1+wheezy3 armhf command line tool for transferring data with URL syntax ii dash 0.5.7-3 armhf POSIX-compliant shell ii dbus 1.6.8-1+deb7u1 armhf simple interprocess messaging system (daemon and utilities) ii dbus-x11 1.6.8-1+deb7u1 armhf simple interprocess messaging system (X11 deps) ii dconf-gsettings-backend:armhf 0.12.1-3 armhf simple configuration storage system - GSettings back-end ii dconf-service 0.12.1-3 armhf simple configuration storage system - D-Bus service ii debconf 1.5.49 all Debian configuration management system ii debconf-i18n 1.5.49 all full internationalization support for debconf ii debconf-utils 1.5.49 all debconf utilities ii debian-reference-common 2.50 all Debian system administration guide, common files ii debian-reference-en 2.50 all Debian system administration guide, English original ii debianutils 4.3.2 armhf Miscellaneous utilities specific to Debian ii desktop-base 7.0.3 all common files for the Debian Desktop ii desktop-file-utils 0.20-0.1 armhf Utilities for .desktop files ii dictionaries-common 1.12.11 all Common utilities for spelling dictionary tools ii diffutils 1:3.2-6 armhf File comparison utilities ii dillo 3.0.2-2 armhf Small and fast web browser ii dmsetup 2:1.02.74-7+rpi1 armhf Linux Kernel Device Mapper userspace library ii dphys-swapfile 20061020-4raspi.1 all Autogenerate and use a swap file ii dpkg 1.16.10 armhf Debian package management system ii dpkg-dev 1.16.10 all Debian package development tools ii e2fslibs:armhf 1.42.5-1.1 armhf ext2/ext3/ext4 file system libraries ii e2fsprogs 1.42.5-1.1 armhf ext2/ext3/ext4 file system utilities ii ed 1.6-2 armhf classic UNIX line editor ii fake-hwclock 0.5 all Save/restore system clock on machines without working RTC hardware ii fakeroot 1.18.4-2 armhf tool for simulating superuser privileges ii fbset 2.1-25 armhf framebuffer device maintenance program ii file 5.11-2 armhf Determines file type using "magic" numbers ii findutils 4.4.2-4 armhf utilities for finding files--find, xargs ii firmware-atheros 0.36+wheezy.1 all Binary firmware for Atheros wireless cards ii firmware-brcm80211 0.36+wheezy.1 all Binary firmware for Broadcom 802.11 wireless cards ii firmware-libertas 0.36+wheezy.1 all Binary firmware for Marvell Libertas 8xxx wireless cards ii firmware-ralink 0.36+wheezy.1 all Binary firmware for Ralink wireless cards ii firmware-realtek 0.36+wheezy.1 all Binary firmware for Realtek wired and wireless network adapters ii fontconfig 2.9.0-7.1 armhf generic font configuration library - support binaries ii fontconfig-config 2.9.0-7.1 all generic font configuration library - configuration ii fonts-droid 20111207+git-1 all handheld device font with extensive style and language support ii fonts-freefont-ttf 20120503-1 all Freefont Serif, Sans and Mono Truetype fonts ii fuse 2.9.0-2+deb7u1 armhf Filesystem in Userspace ii g++ 4:4.6.3-8 armhf GNU C++ compiler ii g++-4.6 4.6.3-14+rpi1 armhf GNU C++ compiler ii galculator 1.3.4-1 armhf A GTK+ 2.0 based calculator ii gcc 4:4.6.3-8 armhf GNU C compiler ii gcc-4.5-base:armhf 4.5.3-12+rpi1 armhf The GNU Compiler Collection (base package) ii gcc-4.6 4.6.3-14+rpi1 armhf GNU C compiler ii gcc-4.6-base:armhf 4.6.3-14+rpi1 armhf GCC, the GNU Compiler Collection (base package) ii gcc-4.7-base:armhf 4.7.2-5+rpi1 armhf GCC, the GNU Compiler Collection (base package) ii gconf-service 3.2.5-1+build1 armhf GNOME configuration database system (D-Bus service) ii gconf2 3.2.5-1+build1 armhf GNOME configuration database system (support tools) ii gconf2-common 3.2.5-1+build1 all GNOME configuration database system (common files) ii gdb 7.4.1+dfsg-0.1 armhf The GNU Debugger ii gdbserver 7.4.1+dfsg-0.1 armhf The GNU Debugger (remote server) ii gettext-base 0.18.1.1-9 armhf GNU Internationalization utilities for the base system ii ghostscript 9.05~dfsg-6.3 armhf interpreter for the PostScript language and for PDF ii gir1.2-glib-2.0 1.32.1-1 armhf Introspection data for GLib, GObject, Gio and GModule ii git 1:1.7.10.4-1+wheezy1+rpi2 armhf fast, scalable, distributed revision control system ii git-core 1:1.7.10.4-1+wheezy1+rpi2 all fast, scalable, distributed revision control system (obsolete) ii git-man 1:1.7.10.4-1+wheezy1+rpi2 all fast, scalable, distributed revision control system (manual pages) ii gksu 2.0.2-6 armhf graphical frontend to su ii glib-networking:armhf 2.32.3-1 armhf network-related giomodules for GLib ii glib-networking-common 2.32.3-1 all network-related giomodules for GLib - data files ii glib-networking-services 2.32.3-1 armhf network-related giomodules for GLib - D-Bus services ii gnome-accessibility-themes 3.4.2-2.1 all Accessibility themes for the GNOME desktop ii gnome-icon-theme 3.4.0-2 all GNOME Desktop icon theme ii gnome-themes-standard 3.4.2-2.1 armhf Standard GNOME themes ii gnome-themes-standard-data 3.4.2-2.1 all Data files for GNOME standard themes ii gnupg 1.4.12-7+deb7u1 armhf GNU privacy guard - a free PGP replacement ii gpgv 1.4.12-7+deb7u1 armhf GNU privacy guard - signature verification tool ii gpicview 0.2.3-2 armhf lightweight image viewer ii grep 2.12-2 armhf GNU grep, egrep and fgrep ii groff-base 1.21-9 armhf GNU troff text-formatting system (base system components) ii gsettings-desktop-schemas 3.4.2-3 all GSettings deskop-wide schemas ii gsfonts 1:8.11+urwcyr1.0.7~pre44-4.2 all Fonts for the Ghostscript interpreter(s) ii gsfonts-x11 0.22 all Make Ghostscript fonts available to X11 ii gtk2-engines:armhf 1:2.20.2-2 armhf theme engines for GTK+ 2.x ii gvfs:armhf 1.12.3-4 armhf userspace virtual filesystem - GIO module ii gvfs-backends 1.12.3-4 armhf userspace virtual filesystem - backends ii gvfs-common 1.12.3-4 all userspace virtual filesystem - common data files ii gvfs-daemons 1.12.3-4 armhf userspace virtual filesystem - servers ii gvfs-fuse 1.12.3-4 armhf userspace virtual filesystem - fuse server ii gvfs-libs:armhf 1.12.3-4 armhf userspace virtual filesystem - private libraries ii gzip 1.5-1.1 armhf GNU compression utilities ii hardlink 0.2.0 armhf Hardlinks multiple copies of the same file ii hicolor-icon-theme 0.12-1 all default fallback theme for FreeDesktop.org icon themes ii hostname 3.11 armhf utility to set/show the host name or domain name ii idle 2.7.3-4 all IDE for Python using Tkinter (default version) ii idle-python2.7 2.7.3-6 all IDE for Python (v2.7) using Tkinter ii idle-python3.2 3.2.3-7 all IDE for Python (v3.2) using Tkinter ii idle3 3.2.3-6 all IDE for Python using Tkinter (default version) ii ifplugd 0.28-19 armhf configuration daemon for ethernet devices ii ifupdown 0.7.8 armhf high level tools to configure network interfaces ii info 4.13a.dfsg.1-10 armhf Standalone GNU Info documentation browser ii initramfs-tools 0.109.1 all generic modular initramfs generator ii initscripts 2.88dsf-41 armhf scripts for initializing and shutting down the system ii insserv 1.14.0-5 armhf boot sequence organizer using LSB init.d script dependency information ii install-info 4.13a.dfsg.1-10 armhf Manage installed documentation in info format ii iproute 20120521-3 armhf networking and traffic control tools ii iptables 1.4.14-3.1 armhf administration tools for packet filtering and NAT ii iputils-ping 3:20101006-1 armhf Tools to test the reachability of network hosts ii isc-dhcp-client 4.2.2.dfsg.1-5+deb70u6 armhf ISC DHCP client ii isc-dhcp-common 4.2.2.dfsg.1-5+deb70u6 armhf common files used by all the isc-dhcp* packages ii iso-codes 3.41-1 all ISO language, territory, currency, script codes and their translations ii jackd 5 all JACK Audio Connection Kit (default server package) ii jackd2 1.9.8~dfsg.4+20120529git007cdc37-5+rpi armhf JACK Audio Connection Kit (server and example clients) ii java-common 0.47 all Base of all Java packages ii kbd 1.15.3-9 armhf Linux console font and keytable utilities ii keyboard-configuration 1.88 all system-wide keyboard preferences ii klibc-utils 2.0.1-3.1+rpi1 armhf small utilities built with klibc for early boot ii kmod 9-3 armhf tools for managing Linux kernel modules ii krb5-locales 1.10.1+dfsg-5+deb7u1 all Internationalization support for MIT Kerberos ii leafpad 0.8.18.1-3 armhf GTK+ based simple text editor ii less 444-4 armhf pager program similar to more ii lesstif2:armhf 1:0.95.2-1.1 armhf OSF/Motif 2.1 implementation released under LGPL ii lightdm 1.2.2-4 armhf simple display manager ii lightdm-gtk-greeter 1.1.6-2 armhf simple display manager (GTK+ greeter) ii linux-libc-dev:armhf 3.2.46-1+rpi1 armhf Linux support headers for userspace development ii locales 2.13-38+rpi2 all Embedded GNU C Library: National Language (locale) data [support] ii login 1:4.1.5.1-1 armhf system login tools ii logrotate 3.8.1-4 armhf Log rotation utility ii lsb-base 4.1+Debian8+rpi1 all Linux Standard Base 4.1 init script functionality ii lua5.1 5.1.5-4 armhf Simple, extensible, embeddable programming language ii luajit 2.0.0~beta11+git20121024-1 armhf Just in time compiler for Lua programming language version 5.1 ii lxappearance 0.5.2-1+b1 armhf LXDE GTK+ theme switcher ii lxde 4+nmu1 all LXDE metapackage ii lxde-common 0.5.5-6 all LXDE configuration data ii lxde-core 4+nmu1 all LXDE core metapackage ii lxde-icon-theme 0.5.0-1 all LXDE standard icon theme ii lxinput 0.3.2-1 armhf LXDE keyboard and mouse configuration ii lxmenu-data 0.1.2-2 all LXDE freedesktop.org menu specification ii lxpanel 0.5.10-1 armhf LXDE panel ii lxpolkit 0.1.0-4 armhf LXDE PolicyKit authentication agent ii lxrandr 0.1.2-3 armhf LXDE monitor configuration tool ii lxsession 0.4.6.1-4 armhf LXDE default session manager ii lxsession-edit 0.2.0-3 armhf LXDE application session editor ii lxshortcut 0.1.2-3 armhf LXDE application shortcut editor ii lxtask 0.1.4-3+rpi1 armhf LXDE task manager ii lxterminal 0.1.11-4 armhf LXDE terminal emulator ii make 3.81-8.2 armhf An utility for Directing compilation. ii makedev 2.3.1-92 all creates device files in /dev ii man-db 2.6.2-1 armhf on-line manual pager ii manpages 3.44-1 all Manual pages about using a GNU/Linux system ii manpages-dev 3.44-1 all Manual pages about using GNU/Linux for development ii mawk 1.3.3-17 armhf a pattern scanning and text processing language ii menu 2.1.46 armhf generates programs menu for all menu-aware applications ii menu-xdg 0.5 all freedesktop.org menu compliant window manager scripts ii midori 0.4.3+dfsg-0.1 armhf fast, lightweight graphical web browser ii mime-support 3.52-1 all MIME files 'mime.types' & 'mailcap', and support programs ii module-init-tools 9-3 all transitional dummy package (module-init-tools to kmod) ii mount 2.20.1-5.3 armhf Tools for mounting and manipulating filesystems ii mountall 2.46 armhf filesystem mounting tool ii multiarch-support 2.13-38+rpi2 armhf Transitional package to ensure multiarch compatibility ii nano 2.2.6-1 armhf small, friendly text editor inspired by Pico ii ncdu 1.8-1 armhf ncurses disk usage viewer ii ncurses-base 5.9-10 all basic terminal type definitions ii ncurses-bin 5.9-10 armhf terminal-related programs and man pages ii ncurses-term 5.9-10 all additional terminal type definitions ii net-tools 1.60-24.2 armhf The NET-3 networking toolkit ii netbase 5.0 all Basic TCP/IP networking system ii netcat-openbsd 1.105-7 armhf TCP/IP swiss army knife ii netcat-traditional 1.10-40 armhf TCP/IP swiss army knife ii netsurf-common 2.9-2 all Small web browser with CSS support common files ii netsurf-gtk 2.9-2 armhf Small web browser with CSS support for GTK ii nfs-common 1:1.2.6-4 armhf NFS support files common to client and server ii ntp 1:4.2.6.p5+dfsg-2 armhf Network Time Protocol daemon and utility programs ii obconf 1:2.0.3+20110805+debian-1 armhf preferences manager for Openbox window manager ii omxplayer 0.2.6~git20130427~fcfb7911 armhf Command line media player for Raspberry Pi ii openbox 3.5.0-7 armhf standards compliant, fast, light-weight, extensible window manager ii openssh-blacklist 0.4.1+nmu1 all list of default blacklisted OpenSSH RSA and DSA keys ii openssh-blacklist-extra 0.4.1+nmu1 all list of non-default blacklisted OpenSSH RSA and DSA keys ii openssh-client 1:6.0p1-4 armhf secure shell (SSH) client, for secure access to remote machines ii openssh-server 1:6.0p1-4 armhf secure shell (SSH) server, for secure access from remote machines ii openssl 1.0.1e-2+rpi1 armhf Secure Socket Layer (SSL) binary and related cryptographic tools ii oracle-java7-jdk 1.7.0+update40 armhf Java™ Platform, Standard Edition 7 Development Kit ii parted 2.3-12 armhf disk partition manipulator ii passwd 1:4.1.5.1-1 armhf change and administer password and group data ii patch 2.6.1-3 armhf Apply a diff file to an original ii pciutils 1:3.1.9-6 armhf Linux PCI Utilities ii pcmanfm 0.9.10-3 armhf extremely fast and lightweight file manager ii penguinspuzzle 20120902-1 armhf 3d puzzle game for Raspberry Pi (web version at penguinspuzzle.appspot.com) ii perl 5.14.2-21+rpi2 armhf Larry Wall's Practical Extraction and Report Language ii perl-base 5.14.2-21+rpi2 armhf minimal Perl system ii perl-modules 5.14.2-21+rpi2 all Core Perl modules ii pistore 1.1.16693 armhf Pi Store is the official store for Rasp. Pi apps and games. ii pkg-config 0.26-1 armhf manage compile and link flags for libraries ii plymouth 0.8.5.1-5 armhf Graphical Boot Animation and Logger ii policykit-1 0.105-3 armhf framework for managing administrative policies and privileges ii poppler-data 0.4.5-10 all encoding data for the poppler PDF rendering library ii poppler-utils 0.18.4-6 armhf PDF utilities (based on Poppler) ii procps 1:3.3.3-3 armhf /proc file system utilities ii psmisc 22.19-1+deb7u1 armhf utilities that use the proc file system ii pypy-upstream 2.1-1 armhf PyPy interpreter - Upstream binary build ii python 2.7.3-4 all interactive high-level object-oriented language (default version) ii python2.7 2.7.3-6 armhf Interactive high-level object-oriented language (version 2.7) ii python2.7-minimal 2.7.3-6 armhf Minimal subset of the Python language (version 2.7) ii python3 3.2.3-6 all interactive high-level object-oriented language (default python3 version) ii python3.2 3.2.3-7 armhf Interactive high-level object-oriented language (version 3.2) ii python3.2-minimal 3.2.3-7 armhf Minimal subset of the Python language (version 3.2) ii qdbus 4:4.8.2+dfsg-11+rpi1 armhf Qt 4 D-Bus tool ii qjackctl 0.3.9-2 armhf User interface for controlling the JACK sound server ii raspberrypi-artwork 20120715 all Copy of the Raspberry Pi logo ii raspberrypi-bootloader 1.20130902-1 armhf Raspberry Pi bootloader ii raspbian-archive-keyring 20120528.2 all GnuPG archive keys of the raspbian archive ii raspi-config 20130925-1 all Simple configuration for Raspberry Pi ii raspi-copies-and-fills 0.4-1 armhf Optimised memcpy/memset implementation for ARM11 used in Raspberry Pi ii readline-common 6.2+dfsg-0.1 all GNU readline and history libraries, common files ii rpcbind 0.2.0-8 armhf converts RPC program numbers into universal addresses ii rpi-update 20130510 all Raspberry Pi firmware updating tool ii rsync 3.0.9-4 armhf fast, versatile, remote (and local) file-copying tool ii rsyslog 5.8.11-3 armhf reliable system and kernel logging daemon ii ruby1.9.1 1.9.3.194-8.1+deb7u1 armhf Interpreter of object-oriented scripting language Ruby ii samba-common 2:3.6.6-6 all common files used by both the Samba server and client ii scratch 1.4.20130916-1 all easy to use programming environment for ages 8 and up - data ii sed 4.2.1-10 armhf The GNU sed stream editor ii sensible-utils 0.0.7 all Utilities for sensible alternative selection ii sgml-base 1.26+nmu4 all SGML infrastructure and SGML catalog file support ii shared-mime-info 1.0-1 armhf FreeDesktop.org shared MIME database and spec ii smartsim 1.2.1-4 armhf Digital logic circuit design and simulation package. ii smbclient 2:3.6.6-6 armhf command-line SMB/CIFS clients for Unix ii sonic-pi 1.0 armhf Sonic Pi is a music programming environment aimed at new programmers. ii squeak-plugins-scratch 1.4.0.2~svn.r83-1 armhf Squeak plugins for the Scratch programming environment ii squeak-vm 1:4.10.2.2774-1 armhf The Squeak Smalltalk System (virtual machine) ii ssh 1:6.0p1-4 all secure shell client and server (metapackage) ii strace 4.5.20-2.3 armhf A system call tracer ii sudo 1.8.5p2-1+nmu1 armhf Provide limited super user privileges to specific users ii supercollider 1:3.4.5-1wheezy1 armhf real time audio synthesis programming language ii supercollider-common 1:3.4.5-1wheezy1 all common files for SuperCollider ii supercollider-server 1:3.4.5-1wheezy1 armhf real time audio synthesis server ii sysv-rc 2.88dsf-41 all System-V-like runlevel change mechanism ii sysvinit 2.88dsf-41 armhf System-V-like init utilities ii sysvinit-utils 2.88dsf-41 armhf System-V-like utilities ii tar 1.26+dfsg-0.1 armhf GNU version of the tar archiving utility ii tasksel 3.14.1 all Tool for selecting tasks for installation on Debian systems ii tasksel-data 3.14.1 all Official tasks used for installation of Debian systems ii tcl8.5 8.5.11-2 armhf Tcl (the Tool Command Language) v8.5 - run-time files ii tcpd 7.6.q-24 armhf Wietse Venema's TCP wrapper utilities ii tk8.5 8.5.11-2 armhf Tk toolkit for Tcl and X11, v8.5 - run-time files ii traceroute 1:2.0.18-3 armhf Traces the route taken by packets over an IPv4/IPv6 network ii triggerhappy 0.3.4-2 armhf global hotkey daemon for Linux ii tsconf 1.0-11 all touch screen library common files ii ttf-dejavu-core 2.33-3 all Vera font family derivate with additional characters ii tzdata 2013c-0wheezy1 all time zone and daylight-saving time data ii ucf 3.0025+nmu3 all Update Configuration File: preserve user changes to config files. ii udev 175-7.2 armhf /dev/ and hotplug management daemon ii udisks 1.0.4-7 armhf storage media interface ii unzip 6.0-8 armhf De-archiver for .zip files ii update-inetd 4.43 all inetd configuration file updater ii usbmuxd 1.0.7-2 armhf USB multiplexor daemon for iPhone and iPod Touch devices ii usbutils 1:005-3 armhf Linux USB utilities ii util-linux 2.20.1-5.3 armhf Miscellaneous system utilities ii vim-common 2:7.3.547-7 armhf Vi IMproved - Common files ii vim-tiny 2:7.3.547-7 armhf Vi IMproved - enhanced vi editor - compact version ii weston 1.1.0-0rpi2013060501 armhf reference implementation of a Wayland compositor ii wget 1.13.4-3 armhf retrieves files from the web ii whiptail 0.52.14-11.1 armhf Displays user-friendly dialog boxes from shell scripts ii wireless-tools 30~pre9-8 armhf Tools for manipulating Linux Wireless Extensions ii wpagui 1.0-3 armhf graphical user interface for wpa_supplicant ii wpasupplicant 1.0-3 armhf client support for WPA and WPA2 (IEEE 802.11i) ii x11-common 1:7.7+3~deb7u1 all X Window System (X.Org) infrastructure ii x11-utils 7.7~1 armhf X11 utilities ii x11-xkb-utils 7.7~1 armhf X11 XKB utilities ii x11-xserver-utils 7.7~3 armhf X server utilities ii xarchiver 1:0.5.2+20090319+dfsg-4.1 armhf GTK+ frontend for most used compression formats ii xauth 1:1.0.7-1 armhf X authentication utility ii xdg-utils 1.1.0~rc1+git20111210-6 all desktop integration utilities from freedesktop.org ii xfonts-encodings 1:1.0.4-1 all Encodings for X.Org fonts ii xfonts-utils 1:7.7~1 armhf X Window System font utility programs ii xinit 1.3.2-1 armhf X server initialisation tool ii xkb-data 2.5.1-3 all X Keyboard Extension (XKB) configuration data ii xml-core 0.13+nmu2 all XML infrastructure and XML catalog file support ii xpdf 3.03-10 armhf Portable Document Format (PDF) reader ii xserver-common 2:1.12.4-6 all common files used by various X servers ii xserver-xorg 1:7.7+3~deb7u1 armhf X.Org X server ii xserver-xorg-core 2:1.12.4-6 armhf Xorg X server - core server ii xserver-xorg-input-all 1:7.7+3~deb7u1 armhf X.Org X server -- input driver metapackage ii xserver-xorg-input-evdev 1:2.7.0-1+b2 armhf X.Org X server -- evdev input driver ii xserver-xorg-input-synaptics 1.6.2-2 armhf Synaptics TouchPad driver for X.Org server ii xserver-xorg-video-fbdev 1:0.4.2-4+b2 armhf X.Org X server -- fbdev display driver ii xz-utils 5.1.1alpha+20120614-2 armhf XZ-format compression utilities ii zenity 3.4.0-2 armhf Display graphical dialog boxes from shell scripts ii zenity-common 3.4.0-2 all Display graphical dialog boxes from shell scripts (common files) ii zlib1g:armhf 1:1.2.7.dfsg-13 armhf compression library - runtime ii zlib1g-dev:armhf 1:1.2.7.dfsg-13 armhf compression library - development
Wir stellen fest, es ist noch kein Apache, PHP, Nginx, Postfix/Exim/Dovecot, oder eine Entwicklungsumgebung (build-essential) installiert. Für einen Server sollte man /var und /tmp und evtl /home in extra Partitionen auslagern, um das System resistent gegen Überlaufen von Plattenplatz zu machen. Schauen wir mal, wieviel /var derzeit die Partition belastet:
root@acca:/tmp# du -s /mnt/var 109920 /mnt/var
Das Auslagern von /var bringt uns zusammen mit dem bereits freien Speicher noch nicht genügend Luft, wir sollten die Partition vergrössern.
Zuerst lösen wir den mount, vergewissern uns über den derzeitigen Stand, Vergrössern die Partition, Prüfen und lassen das ext4 Filesystem entsprechend anwachsen:
root@acca:/tmp# umount /mnt root@acca:/tmp# parted /dev/sdb print Modell: Multiple Card Reader (scsi) Festplatte /dev/sdb: 64,4GB Sektorgröße (logisch/physisch): 512B/512B Partitionstabelle: msdos Nummer Anfang Ende Größe Typ Dateisystem Flags 1 4194kB 62,9MB 58,7MB primary fat16 LBA 2 62,9MB 2962MB 2899MB primary ext4 root@acca:/tmp# parted /dev/sdb resizepart 2 4000MB Informationen: Möglicherweise müssen Sie /etc/fstab anpassen. root@acca:/tmp# parted /dev/sdb print Modell: Multiple Card Reader (scsi) Festplatte /dev/sdb: 64,4GB Sektorgröße (logisch/physisch): 512B/512B Partitionstabelle: msdos Nummer Anfang Ende Größe Typ Dateisystem Flags 1 4194kB 62,9MB 58,7MB primary fat16 LBA 2 62,9MB 4000MB 3937MB primary ext4 root@acca:/tmp# resize2fs /dev/sdb2 resize2fs 1.42.8 (20-Jun-2013) Bitte zuerst „e2fsck -f /dev/sdb2“ laufen lassen. root@acca:/tmp# e2fsck -f /dev/sdb2 e2fsck 1.42.8 (20-Jun-2013) Durchgang 1: Prüfe Inodes, Blocks und Größen Durchgang 2: Prüfe die Verzeichnisstruktur Durchgang 3: Prüfe Verzeichnis-Verknüpfungen Durchgang 4: Überprüfe die Referenzzähler Durchgang 5: Überprüfe die zusammengefasste Gruppeninformation /dev/sdb2: 72857/177056 Dateien (0.1% nicht zusammenhängend), 427737/707840 Blöcke root@acca:/tmp# resize2fs /dev/sdb2 resize2fs 1.42.8 (20-Jun-2013) Die Grösse des Dateisystems auf /dev/sdb2 wird auf 961202 (4k) Blöcke geändert. Das Dateisystem auf /dev/sdb2 ist nun 961202 Blöcke groß.
Wir testen durch einen mount:
root@acca:/tmp# mount /dev/sdb2 /mnt root@acca:/tmp# df /mnt Dateisystem 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf /dev/sdb2 3718608 1602300 1907684 46% /mnt
So, jetzt ist es an der Zeit, den Raspberry Pi zum Leben zu erwecken und mit der vorbereiteten SD Karte zu booten.
root@acca:/tmp# umount /mnt
Erstes Starten des Raspberry Pi
Diese Schritte erfordern den Anschluss des Raspberry Pi an einen HDMI Monitor, USB Tastatur sowie Ethernet. Am besten man hat einen DHCP Server im Heimnetz, dann holt sich der Pi bequem die IP Adresse und konfiguriert sein Netzwerk selbst (später ersetzen wir die Netzwerkkonfiguration).
- Karte und alles einstecken, das Netzteil zuletzt, damit man den ersten Boot nicht verpasst
- nachdem die Bootmeldungen durch sind, sollte das Konfigurationsprogramm (raspi-config) automatisch starten
- wir verlassen das Menü erstmal mit zwei Mal <TAB> <Return>
- jetzt sehen wir einen Prompt auf der Textconsole, der user heisst "pi"
Um nicht immer den Monitor umschalten zu müssen und mit mehreren Tastaturen zu arbeiten ermöglichen wir jetzt den root remote login:
- der ssh Server ist bereits installiert und aktiviert
- Herausfinden der IP Adresse mit "ifconfig"
- Ändern des root Passworts mit "sudo passwd"
Folgende Schritte führen wir weiter in einem Terminal unseres Linux Desktops aus.
Einloggen auf dem Raspberry Pi unter Verwendung der ermittelten IP Adresse:
ssh root@192.168.1.70 The authenticity of host '192.168.1.70 (192.168.1.70)' can't be established. ECDSA key fingerprint is 4d:39:54:5d:17:72:7b:87:90:e1:a9:bc:ca:7a:1b:0c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.70' (ECDSA) to the list of known hosts. root@192.168.1.70's password: Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Sep 25 22:07:25 2013 /usr/bin/xauth: file /root/.Xauthority does not exist root@raspberrypi:~#
Schauen wir uns ein bisschen um:
uname -a Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/Linux root@raspberrypi:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 3784144 1770452 1821452 50% / /dev/root 3784144 1770452 1821452 50% / devtmpfs 86160 0 86160 0% /dev tmpfs 18884 244 18640 2% /run tmpfs 5120 0 5120 0% /run/lock tmpfs 37760 0 37760 0% /run/shm /dev/mmcblk0p1 57288 18560 38728 33% /boot root@raspberrypi:~# mount /dev/root on / type ext4 (rw,noatime,data=ordered) devtmpfs on /dev type devtmpfs (rw,relatime,size=86160k,nr_inodes=21540,mode=755) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=18884k,mode=755) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=37760k) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620) /dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro) root@raspberrypi:~# free total used free shared buffers cached Mem: 188840 135432 53408 0 9768 100848 -/+ buffers/cache: 24816 164024 Swap: 102396 0 102396 root@raspberrypi:~# find /etc/apt/sources.list* /etc/apt/sources.list /etc/apt/sources.list.d /etc/apt/sources.list.d/collabora.list /etc/apt/sources.list.d/raspi.list
Erstes Paket Update
apt-get update apt-get -y dist-upgrade apt-get clean
Jetzt ist der richtige Moment an den Kühlschrank zu gehen ;-)
Weitere Pakete installieren
Zur Vorbereitung der endgültigen Systems installieren wir weitere Pakete
apt-get install lvm2 apt-get clean
Optimale Konfiguration
Für den Serverbetrieb konfigurieren wir den Boot Flash mit "raspi-config"
- "4 Internationalisation Options", "I1 Change Locale", Sternchen bei "en_GB.UTF-8 UTF-8" weg und bei "de_DE.UTF-8 UTF-8" dran, Default locale "de_DE.UTF-8"
- "4 Internationalisation Options", "I2 Change Timezone", "Europe", "Berlin"
- "8 Advanced Options", "A3 Memory Split", "16"
- "Finish", "No Reboot"
Ausschalten
poweroff
Endgültige Partitionen erstellen
Zu diesem Zweck entnehmen wir dem runtergefahrenen Pi die SD Karte und stecken sie wieder in unseren Desktop PC. Wir erstellen eine weitere primäre Partition, die später als LVM physical volume dient.
root@acca:/tmp# fdisk /dev/sdb Befehl (m für Hilfe): p Disk /dev/sdb: 64.4 GB, 64440238080 bytes 64 Köpfe, 32 Sektoren/Spur, 61455 Zylinder, zusammen 125859840 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x0002c262 Gerät boot. Anfang Ende Blöcke Id System /dev/sdb1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sdb2 122880 7812500 3844810+ 83 Linux Befehl (m für Hilfe): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p Partitionsnummer (1-4, Vorgabe: 3): Benutze den Standardwert 3 Erster Sektor (2048-125859839, Vorgabe: 2048): 7812501 Last Sektor, +Sektoren or +size{K,M,G} (7812501-125859839, Vorgabe: 125859839): Benutze den Standardwert 125859839 Befehl (m für Hilfe): p Disk /dev/sdb: 64.4 GB, 64440238080 bytes 64 Köpfe, 32 Sektoren/Spur, 61455 Zylinder, zusammen 125859840 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x0002c262 Gerät boot. Anfang Ende Blöcke Id System /dev/sdb1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sdb2 122880 7812500 3844810+ 83 Linux /dev/sdb3 7812501 125859839 59023669+ 83 Linux Befehl (m für Hilfe): t Partitionsnummer (1-4): 3 Hex code (L um eine Liste anzuzeigen): 8e Der Dateisystemtyp der Partition 3 ist nun 8e (Linux LVM) Befehl (m für Hilfe): p Disk /dev/sdb: 64.4 GB, 64440238080 bytes 64 Köpfe, 32 Sektoren/Spur, 61455 Zylinder, zusammen 125859840 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x0002c262 Gerät boot. Anfang Ende Blöcke Id System /dev/sdb1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sdb2 122880 7812500 3844810+ 83 Linux /dev/sdb3 7812501 125859839 59023669+ 8e Linux LVM Befehl (m für Hilfe): w Die Partitionstabelle wurde verändert! Rufe ioctl() um Partitionstabelle neu einzulesen. Synchronisiere Platten.
Wir erzeugen das physical volume:
root@acca:/tmp# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created root@acca:/tmp# pvscan PV /dev/mapper/sda5_crypt VG kubuntu-vg lvm2 [931,27 GiB / 44,00 MiB free] PV /dev/sdb3 lvm2 [56,29 GiB] Total: 2 [987,56 GiB] / in use: 1 [931,27 GiB] / in no VG: 1 [56,29 GiB]
(/dev/mapper/sda5_crypt ist hier die verschlüsselte root Partition des Desktop PCs)
root@acca:/tmp# pvs PV VG Fmt Attr PSize PFree /dev/mapper/sda5_crypt kubuntu-vg lvm2 a-- 931,27g 44,00m /dev/sdb3 lvm2 a-- 56,29g 56,29g
Erzeugen einer volume group
root@acca:/tmp# vgcreate root-vg /dev/sdb3 Volume group "root-vg" successfully created
Jetzt erzeugen wir logical volumes:
- /var und /tmp sind für den Systembetrieb essentiell, 1G sollte genügend Luft geben
- /home lasse ich auf dem root Filesystem, weil bei mir dort keine nennenswerten Daten anfallen
- /backup nimmt die periodischen backups und evtl rsnapshots auf
- /opt nimmt alle selbst kompilierte Software und Datenbereiche der Anwendungen auf
Anlegen und Formatieren der Partitionen:
root@acca:/tmp# lvcreate -n var -L 1G root-vg Logical volume "var" created root@acca:/tmp# lvcreate -n tmp -L 1G root-vg Logical volume "tmp" created root@acca:/tmp# lvcreate -n backup -L 10G root-vg Logical volume "backup" created root@acca:/tmp# lvcreate -n opt -L 10G root-vg Logical volume "opt" created root@acca:/tmp# lvs LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert root kubuntu-vg -wi-ao--- 928,30g swap_1 kubuntu-vg -wi-ao--- 2,93g backup root-vg -wi-a---- 10,00g opt root-vg -wi-a---- 10,00g tmp root-vg -wi-a---- 1,00g var root-vg -wi-a---- 1,00g root@acca:/tmp# mkfs.ext4 /dev/mapper/root--vg-var mke2fs 1.42.8 (20-Jun-2013) Dateisystem-Label= OS-Typ: Linux Blockgröße=4096 (log=2) Fragmentgröße=4096 (log=2) Stride=0 Blöcke, Stripebreite=0 Blöcke 65536 Inodes, 262144 Blöcke 13107 Blöcke (5.00%) reserviert für den Superuser Erster Datenblock=0 Maximale Dateisystem-Blöcke=268435456 8 Blockgruppen 32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe 8192 Inodes pro Gruppe Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (8192 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt root@acca:/tmp# mkfs.ext4 /dev/mapper/root--vg-tmp mke2fs 1.42.8 (20-Jun-2013) Dateisystem-Label= OS-Typ: Linux Blockgröße=4096 (log=2) Fragmentgröße=4096 (log=2) Stride=0 Blöcke, Stripebreite=0 Blöcke 65536 Inodes, 262144 Blöcke 13107 Blöcke (5.00%) reserviert für den Superuser Erster Datenblock=0 Maximale Dateisystem-Blöcke=268435456 8 Blockgruppen 32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe 8192 Inodes pro Gruppe Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (8192 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt root@acca:/tmp# mkfs.ext4 /dev/mapper/root--vg-backup mke2fs 1.42.8 (20-Jun-2013) Dateisystem-Label= OS-Typ: Linux Blockgröße=4096 (log=2) Fragmentgröße=4096 (log=2) Stride=0 Blöcke, Stripebreite=0 Blöcke 655360 Inodes, 2621440 Blöcke 131072 Blöcke (5.00%) reserviert für den Superuser Erster Datenblock=0 Maximale Dateisystem-Blöcke=2684354560 80 Blockgruppen 32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe 8192 Inodes pro Gruppe Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (32768 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt root@acca:/tmp# mkfs.ext4 /dev/mapper/root--vg-opt mke2fs 1.42.8 (20-Jun-2013) Dateisystem-Label= OS-Typ: Linux Blockgröße=4096 (log=2) Fragmentgröße=4096 (log=2) Stride=0 Blöcke, Stripebreite=0 Blöcke 655360 Inodes, 2621440 Blöcke 131072 Blöcke (5.00%) reserviert für den Superuser Erster Datenblock=0 Maximale Dateisystem-Blöcke=2684354560 80 Blockgruppen 32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe 8192 Inodes pro Gruppe Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (32768 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
Anlegen von Mount Verzeichnissen (die meisten existieren schon), Anpassen der fstab:
root@acca:/tmp# mount /dev/sdb2 /mnt root@acca:/tmp# mkdir /mnt/backup root@acca:/tmp# blkid /dev/sdb1: SEC_TYPE="msdos" LABEL="boot" UUID="2654-BFC0" TYPE="vfat" /dev/sdb2: UUID="548da502-ebde-45c0-9ab2-de5e2431ee0b" TYPE="ext4" /dev/sdb3: UUID="aKqzo1-RdJL-Qeld-5SdK-Njyt-8PJX-yj3pnj" TYPE="LVM2_member" /dev/mapper/root--vg-var: UUID="7e50a7e5-94f0-4c16-8e06-cb53ef9ffe4b" TYPE="ext4" /dev/mapper/root--vg-tmp: UUID="dbb28339-37de-4c4a-82d0-1650cfd12a52" TYPE="ext4" /dev/mapper/root--vg-backup: UUID="d13c3bd7-6eff-41d5-a24c-71fbf2e9ae71" TYPE="ext4" /dev/mapper/root--vg-opt2: UUID="ba5c235e-fe2a-4b38-a767-5c4788e3ad80" TYPE="ext4" root@acca:/tmp# vi /mnt/etc/fstab root@acca:/tmp# cat /mnt/etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 UUID=7e50a7e5-94f0-4c16-8e06-cb53ef9ffe4b /var ext4 defaults,noatime 0 2 UUID=dbb28339-37de-4c4a-82d0-1650cfd12a52 /tmp ext4 defaults,noatime 0 2 UUID=ba5c235e-fe2a-4b38-a767-5c4788e3ad80 /opt ext4 defaults,noatime 0 2 UUID=d13c3bd7-6eff-41d5-a24c-71fbf2e9ae71 /backup ext4 defaults,noatime 0 2
Kopieren der bestehenden Daten in /var und /opt in die Partitionen. Ein einfaches "mv" würde es auch tun, aber so kann man ggf. nochmals alt und neu vergleichen:
root@acca:/tmp# mkdir /mnt2 root@acca:/mnt/var# mount /dev/root-vg/var /mnt2 root@acca:/mnt/opt# cd /mnt/var root@acca:/mnt/var# tar cf - .|(cd /mnt2;tar xf -) root@acca:/mnt/var# umount /mnt2 root@acca:/mnt/var# mount /dev/root-vg/opt /mnt2 root@acca:/mnt/var# cd /mnt/opt root@acca:/mnt/opt# tar cf - .|(cd /mnt2;tar xf -) root@acca:/mnt/var# umount /mnt2 root@acca:/mnt/var# cd /tmp
Löschen der entsprechenden Originaldaten im Root Filesystem:
root@acca:/tmp# \rm -rf /mnt/var /mnt/opt /mnt/tmp root@acca:/tmp# mkdir /mnt/var /mnt/opt /mnt/tmp
Read/Write für alle auf der /tmp Partition:
root@acca:/tmp# mount /dev/mapper/root--vg-tmp /mnt2 root@acca:/tmp# chmod ugo+rwx /mnt2 root@acca:/tmp# umount /mnt2
Aushängen des root Filesystems zum Entnehmen der Karte
root@acca:/tmp# umount /mnt
Booten mit endgültigen Partitionen
Einloggen vom Desktop aus und Anzeigen von Speicher, Swap und Partitionen:
jengelha@medea:~$ ssh root@192.168.1.70 root@192.168.1.70's password: Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Nov 9 13:46:11 2013 from 192.168.1.63 root@raspberrypi:~# free total used free shared buffers cached Mem: 237608 56908 180700 0 9224 26356 -/+ buffers/cache: 21328 216280 Swap: 102396 0 102396 root@raspberrypi:~# df -T Dateisystem Typ 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf rootfs rootfs 3784144 1526180 2065724 43% / /dev/root ext4 3784144 1526180 2065724 43% / devtmpfs devtmpfs 110544 0 110544 0% /dev tmpfs tmpfs 23764 256 23508 2% /run tmpfs tmpfs 5120 0 5120 0% /run/lock tmpfs tmpfs 47520 0 47520 0% /run/shm /dev/mmcblk0p1 vfat 57288 18560 38728 33% /boot /dev/mapper/root--vg-var ext4 1032088 212372 767288 22% /var /dev/mapper/root--vg-tmp ext4 1032088 34064 945596 4% /tmp /dev/mapper/root--vg-opt ext4 10321208 191300 9605620 2% /opt /dev/mapper/root--vg-backup ext4 10321208 154100 9642820 2% /backup
Man sieht, nach Anpassung des GPU Speichers haben wir jetzt immerhin 237608 kB statt 188840 kB.
Installation von Server und Build Paketen
Folgendes gibt Gelegenheit für eine weitere Kaffeepause:
apt-get install postfix mailutils screen mysql-client mysql-server php5 php5-common \ php5-fpm php5-mcrypt php5-mysql php5-cgi php5-cli php5-gd php5-curl php-apc ufw emacs23-nox \ libssh2-php mercurial software-properties-common nginx uwsgi uwsgi-plugin-python python-virtualenv apt-get clean apt-get autoremove
Initialisieren des USB Speichersticks
Am besten erledigt man dies auch am Desktop, da es einfach schneller geht.
Prüfen der Sticks
root@acca:/tmp# fdisk -l /dev/sdc Disk /dev/sdc: 62.9 GB, 62914560000 bytes 237 Köpfe, 12 Sektoren/Spur, 43206 Zylinder, zusammen 122880000 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0xb1bfa153 Gerät boot. Anfang Ende Blöcke Id System /dev/sdc1 2640 122879999 61438680 b W95 FAT32
Löschen von Restdaten
root@acca:/tmp# dd if=/dev/zero of=/dev/sdc bs=4M &
Partitionieren:
root@acca:/tmp# fdisk /dev/sdc Das Gerät enthält weder eine gültige DOS-Partitionstabelle, noch einen „Sun“, „SGI“ oder „OSF disklabel“ Building a new DOS disklabel with disk identifier 0x5aef973b. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warnung: Schreiben wird ungültiges Flag 0x0000 in Part.-tabelle 4 korrigieren Befehl (m für Hilfe): p Disk /dev/sdc: 62.9 GB, 62914560000 bytes 64 Köpfe, 32 Sektoren/Spur, 60000 Zylinder, zusammen 122880000 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x5aef973b Gerät boot. Anfang Ende Blöcke Id System Befehl (m für Hilfe): o Building a new DOS disklabel with disk identifier 0x10b593b5. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warnung: Schreiben wird ungültiges Flag 0x0000 in Part.-tabelle 4 korrigieren Befehl (m für Hilfe): p Disk /dev/sdc: 62.9 GB, 62914560000 bytes 64 Köpfe, 32 Sektoren/Spur, 60000 Zylinder, zusammen 122880000 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x10b593b5 Gerät boot. Anfang Ende Blöcke Id System Befehl (m für Hilfe): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partitionsnummer (1-4, Vorgabe: 1): Benutze den Standardwert 1 Erster Sektor (2048-122879999, Vorgabe: 2048): Benutze den Standardwert 2048 Last Sektor, +Sektoren or +size{K,M,G} (2048-122879999, Vorgabe: 122879999): Benutze den Standardwert 122879999 Befehl (m für Hilfe): t Partition 1 ausgewählt Hex code (L um eine Liste anzuzeigen): 8e Der Dateisystemtyp der Partition 1 ist nun 8e (Linux LVM) Befehl (m für Hilfe): p Disk /dev/sdc: 62.9 GB, 62914560000 bytes 64 Köpfe, 32 Sektoren/Spur, 60000 Zylinder, zusammen 122880000 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x10b593b5 Gerät boot. Anfang Ende Blöcke Id System /dev/sdc1 2048 122879999 61438976 8e Linux LVM Befehl (m für Hilfe): w Die Partitionstabelle wurde verändert! Rufe ioctl() um Partitionstabelle neu einzulesen. Synchronisiere Platten.
Aus/Einstecken, Formatieren, volume group, logical volume, Formatieren:
root@acca:/tmp# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created root@acca:/tmp# vgcreate stick-vg /dev/sdc1 Volume group "stick-vg" successfully created root@acca:/tmp# vgs VG #PV #LV #SN Attr VSize VFree kubuntu-vg 1 2 0 wz--n- 931,27g 44,00m stick-vg 1 0 0 wz--n- 58,59g 58,59g root@acca:/tmp# lvcreate -n stick -L 48G stick-vg Logical volume "stick" created root@acca:/tmp# mkfs.ext4 /dev/mapper/stick--vg-stick mke2fs 1.42.8 (20-Jun-2013) Dateisystem-Label= OS-Typ: Linux Blockgröße=4096 (log=2) Fragmentgröße=4096 (log=2) Stride=0 Blöcke, Stripebreite=0 Blöcke 3145728 Inodes, 12582912 Blöcke 629145 Blöcke (5.00%) reserviert für den Superuser Erster Datenblock=0 Maximale Dateisystem-Blöcke=4294967296 384 Blockgruppen 32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe 8192 Inodes pro Gruppe Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (32768 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt root@acca:/tmp# mount /dev/mapper/stick--vg-stick /mnt root@acca:/tmp# df -T /mnt Dateisystem Typ 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf /dev/mapper/stick--vg-stick ext4 49410864 53116 46824784 1% /mnt
Belastungs- und Performancetests
Testen der Disk Performance
SD Karte:
apt-get install hdparm root@raspberrypi:~# hdparm -tT /dev/mmcblk0 /dev/mmcblk0: Timing cached reads: 290 MB in 2.00 seconds = 144.66 MB/sec Timing buffered disk reads: 60 MB in 3.10 seconds = 19.36 MB/sec
Stick:
pi@raspberrypi ~ $ sudo hdparm -tT /dev/sda /dev/sda: Timing cached reads: 312 MB in 2.01 seconds = 155.22 MB/sec Timing buffered disk reads: 34 MB in 3.13 seconds = 10.86 MB/sec
Load Test: paralleles Compile
Legendär wird normalerweise ein Linux Kernel multithreaded kompiliert, um die CPU unter Vollast zu setzen und Disk IO zu erzeugen. Beim Pi wäre das allerdings eine Angelegenheit von wohl so um einen vollen Tag herum. Deswegen nehme ich was kleineres: http://nginx.org/ .
Wichtig ist, dass man bei allen Vergleichen identische Vorraussetzungen schafft. Swap und Caches sollten vor dem Benchmark gelöscht sein. Wir arbeiten als user "pi".
Messwerkzeug
sudo apt-get install time
Prüfen und Zurücksetzen der IO Caches
pi@raspberrypi ~ $ free total used free shared buffers cached Mem: 237608 202064 35544 0 7216 128132 -/+ buffers/cache: 66716 170892 Swap: 102396 0 102396 pi@raspberrypi ~ $ sudo dphys-swapfile swapoff pi@raspberrypi ~ $ sudo dphys-swapfile swapon pi@raspberrypi ~ $ sudo bash -c "echo 3 > /proc/sys/vm/drop_caches" pi@raspberrypi ~ $ free total used free shared buffers cached Mem: 237608 78452 159156 0 1192 17708 -/+ buffers/cache: 59552 178056 Swap: 102396 0 102396
Hmm, so richtig "clean" sieht das ja nicht aus, geht's besser?
Test auf dem tmp Filesystem:
pi@raspberrypi ~ $ sudo apt-get -y install libssl-dev libpcre3-dev pi@raspberrypi ~ $ sudo mkdir /opt/tools/nginx pi@raspberrypi ~ $ cd /tmp pi@raspberrypi /tmp $ ngversion=1.4.3 # stable version see http://nginx.org/ pi@raspberrypi /tmp $ wget http://nginx.org/download/nginx-${ngversion}.tar.gz pi@raspberrypi /tmp $ tar xfz nginx-${ngversion}.tar.gz cd /tmp/nginx-${ngversion} pi@raspberrypi /tmp/nginx-1.4.3 $ make clean >& /dev/null pi@raspberrypi /tmp/nginx-1.4.3 $ ./configure --prefix=/opt/tools/nginx/${ngversion} --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log \ --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx --user=www-data --group=www-data --without-http_autoindex_module \ --without-http_ssi_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_ssl_module \ --with-http_stub_status_module --with-http_gzip_static_module # hier die Caches löschen wie oben gezeigt pi@raspberrypi /tmp/nginx-1.4.3 $ \time --verbose make
Ergebnis single-threaded make:
Command being timed: "make" User time (seconds): 616.90 System time (seconds): 24.14 Percent of CPU this job got: 95% Elapsed (wall clock) time (h:mm:ss or m:ss): 11:09.40 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 30248 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 95 Minor (reclaiming a frame) page faults: 815498 Voluntary context switches: 3911 Involuntary context switches: 22633 Swaps: 0 File system inputs: 35744 File system outputs: 24168 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Wiederholung dieses Laufs ohne Leeren der Caches um zu sehen wieviel Einfluss das hat, Ergebnis:
Command being timed: "make" User time (seconds): 614.75 System time (seconds): 25.11 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 10:55.23 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 30244 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 0 Minor (reclaiming a frame) page faults: 815546 Voluntary context switches: 3306 Involuntary context switches: 22649 Swaps: 0 File system inputs: 0 File system outputs: 24168 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Fazit: Entweder ich mache hier noch was falsch, oder aber das Caching bringt hier gar nichts, ist das Memory Subsystem wirklich so lahm??
Multi-thread jobs unter dem "wall time" Aspekt machen mit einer langsamen Single-Core CPU keinen Sinn, treiben das System aber in den swap und lasten das Gesamtsystem maximal aus.
Hier ein Lauf nach make clean, configure, caches clean mit make -j2, zwei Threads, Ergebnis:
Command being timed: "make -j2" User time (seconds): 625.86 System time (seconds): 26.56 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 11:09.38 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 30244 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 97 Minor (reclaiming a frame) page faults: 815634 Voluntary context switches: 3889 Involuntary context switches: 77701 Swaps: 0 File system inputs: 34600 File system outputs: 24168 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Acht Threads:
Command being timed: "make -j8" User time (seconds): 626.62 System time (seconds): 34.36 Percent of CPU this job got: 95% Elapsed (wall clock) time (h:mm:ss or m:ss): 11:29.04 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 28868 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 3597 Minor (reclaiming a frame) page faults: 1105405 Voluntary context switches: 9300 Involuntary context switches: 92813 Swaps: 0 File system inputs: 517912 File system outputs: 24168 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
16 Threads:
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_upstream_round_robin.o \ src/http/ngx_http_upstream_round_robin.c {standard input}: Assembler messages: {standard input}: Warning: end of file not at end of a line; newline inserted {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive cc: internal compiler error: Getötet (program cc1) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions. make[1]: *** [objs/src/http/ngx_http.o] Fehler 4 make[1]: *** Warte auf noch nicht beendete Prozesse... make[1]: Leaving directory `/tmp/nginx-1.4.3' make: *** [build] Fehler 2 Command exited with non-zero status 2 Command being timed: "make -j16" User time (seconds): 427.60 System time (seconds): 79.40 Percent of CPU this job got: 49% Elapsed (wall clock) time (h:mm:ss or m:ss): 17:12.55 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 29228 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 45049 Minor (reclaiming a frame) page faults: 2270485 Voluntary context switches: 80570 Involuntary context switches: 145533 Swaps: 0 File system inputs: 5448272 File system outputs: 8448 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 2
Offenbar sind 16 Threads zuviel, hier müsste der swap Speicher voll ausgeschöpft gewesen sein.
DOS Partitionstabelle
Aufbau einer DOS Partitionstabelle / Master Boot Record siehe http://de.wikipedia.org/wiki/Master_Boot_Record .
sfdisk
Enthalten im Paket util-linux.
Sichern (Auslesen): sfdisk /dev/sdx > /tmp/sdx_partitiontable.bin
Zurückspielen: sfdisk /dev/sdx < /tmp/sdx_partitiontable.bin
DOS Bootloader
Sichern (Auslesen): dd if=/dev/sdx bs=446 count=1 of=/tmp/sdx_bootsector.bin
Zurückspielen: dd of=/dev/sdx bs=446 count=1 if=/tmp/sdx_bootsector.bin
Cubieboard
Performance Tests
Performance Test Harddisk an SATA HGST HTS541010A9E680 hdparm -tT /dev/sdb
/dev/sdb:
Timing cached reads: 546 MB in 2.00 seconds = 272.67 MB/sec Timing buffered disk reads: 264 MB in 3.02 seconds = 87.55 MB/sec
Load Test: single threaded compile von nginx-1.4.3
Command being timed: "make" User time (seconds): 230.17 System time (seconds): 15.79 Percent of CPU this job got: 97% Elapsed (wall clock) time (h:mm:ss or m:ss): 4:11.76 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 30784 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 97 Minor (reclaiming a frame) page faults: 840879 Voluntary context switches: 3868 Involuntary context switches: 15634 Swaps: 0 File system inputs: 37586 File system outputs: 25376 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0
Fortsetzung folgt