ArchLinux:ARM
From Wiki.cyring.fr
(Difference between revisions)
(→Terminal) |
(→src/fcalc.c) |
||
Line 377: | Line 377: | ||
case '-': c = a - b; | case '-': c = a - b; | ||
break; | break; | ||
- | case 'x | + | case 'x': c = a * b; |
- | + | ||
break; | break; | ||
case '/': if(b != 0) | case '/': if(b != 0) | ||
Line 404: | Line 403: | ||
else | else | ||
printf( "Usage: %s Op Num1 Num2\n" \ | printf( "Usage: %s Op Num1 Num2\n" \ | ||
- | "where\n\tOp is + - x | + | "where\n\tOp is + - x /\n" \ |
- | "\tNum#1 is first argument\n" \ | + | "\tNum#1 is the first argument\n" \ |
- | "\tNum#2 is second argument\n", argv[0]); | + | "\tNum#2 is the second argument\n", argv[0]); |
return(r); | return(r); |
Revision as of 13:37, 2 December 2012
Contents |
Installation
Partitions
# fdisk -l
Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes, 15523840 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/mmcblk0p1 2048 194559 96256 b W95 FAT32 /dev/mmcblk0p2 194560 10680319 5242880 83 Linux /dev/mmcblk0p3 10680320 15523839 2421760 83 Linux
Packages
# pacman -Syu # pacman -S zsh # pacman -S sudo # pacman -S yaourt # pacman -S rsync customizepkg
Configuration
/boot/
config.txt
disable_overscan=1 gpu_mem=64
cmdline.txt
quiet
/etc/
pacman.d/mirrorlist
### France ## Geo-IP based mirror selection and load balancing # Server = http://mirror.archlinuxarm.org/armv6h/$repo Server = http://fr.mirror.archlinuxarm.org/armv6h/$repo
hostname
RasPi
vconsole.conf
KEYMAP=fr FONT=lat9w-16 FONT_MAP=8859-1_to_uni
locale.gen
en_US.UTF-8 UTF-8
# locale-gen
localtime
# ln -fs /usr/share/zoneinfo/Europe/Paris localtime
dhcpcd.conf
noipv6rs
sudoers
## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL
nanorc
## Constantly display the cursor position in the statusbar. Note that set const ## Use the blank line below the titlebar as extra editing space. set morespace ## Don't display the helpful shortcut lists at the bottom of the screen. set nohelp ## Don't wrap text at all. set nowrap ## Color setup ## Makefiles include "/usr/share/nano/makefile.nanorc" ## Cascading Style Sheets include "/usr/share/nano/css.nanorc" ## HTML include "/usr/share/nano/html.nanorc" ## PHP include "/usr/share/nano/php.nanorc" ## Perl include "/usr/share/nano/perl.nanorc" ## Python include "/usr/share/nano/python.nanorc" ## Ruby include "/usr/share/nano/ruby.nanorc" ## Java include "/usr/share/nano/java.nanorc" ## Assembler include "/usr/share/nano/asm.nanorc" ## Bourne shell scripts include "/usr/share/nano/sh.nanorc"
modprobe.d/blacklist.conf
blacklist ipv6
modules-load.d/raspi.conf
snd-bcm2835
ld.so.conf.d/vc.conf
/opt/vc/lib
# ldconfig
fstab
# <file system> <dir> <type> <options> <dump> <pass> devpts /dev/pts devpts defaults 0 0 shm /dev/shm tmpfs nodev,nosuid 0 0 /dev/disk/by-label/BOOT /boot vfat defaults 0 0 /dev/disk/by-label/ROOT / ext4 discard,noatime,nodiratime,defaults 0 1 /dev/disk/by-label/HOME /home ext4 discard,noatime,nodiratime,defaults 0 2
/home/
<login>
# adduser $ mkdir ~/Downloads $ mkdir ~/bin $ mkdir ~/src $ mkdir ~/tmp $ chmod +t ~/tmp
.zshrc
# Lines configured by zsh-newuser-install HISTFILE=~/.histfile HISTSIZE=1000 SAVEHIST=1000 unsetopt beep bindkey -e # End of lines configured by zsh-newuser-install # The following lines were added by compinstall zstyle :compinstall filename '/home/<login>/.zshrc' autoload -Uz compinit compinit # End of lines added by compinstall autoload -U compinit promptinit compinit promptinit prompt adam2 zstyle ':completion:*' menu select setopt completealiases export LESS_TERMCAP_mb=$'\E[01;31m' export LESS_TERMCAP_md=$'\E[01;31m' export LESS_TERMCAP_me=$'\E[0m' export LESS_TERMCAP_se=$'\E[0m' export LESS_TERMCAP_so=$'\E[01;44;33m' export LESS_TERMCAP_ue=$'\E[0m' export LESS_TERMCAP_us=$'\E[01;32m' export EDITOR=nano alias grep='grep --color=auto' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias ll='ls -hl --color=auto' alias la='ls -hAl --color=auto' alias l='ls -CF --color=auto' alias p='ps -eo user:5,pid:6,pcpu:5,rss:7,nlwp:2,comm --sort +pcpu,+rss' # https://wiki.archlinux.org/index.php/Zsh#Key_Bindings # create a zkbd compatible hash; # to add other keys to this hash, see: man 5 terminfo typeset -A key key[Home]=${terminfo[khome]} key[End]=${terminfo[kend]} key[Insert]=${terminfo[kich1]} key[Delete]=${terminfo[kdch1]} key[Up]=${terminfo[kcuu1]} key[Down]=${terminfo[kcud1]} key[Left]=${terminfo[kcub1]} key[Right]=${terminfo[kcuf1]} key[PageUp]=${terminfo[kpp]} key[PageDown]=${terminfo[knp]} # setup key accordingly [[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line [[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line [[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode [[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" delete-char [[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history [[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history [[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char [[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char # Finally, make sure the terminal is in application mode, when zle is # active. Only then are the values from $terminfo valid. function zle-line-init () { echoti smkx } function zle-line-finish () { echoti rmkx } ## zle -N zle-line-init ## zle -N zle-line-finish # End Of Wiki export PATH=$PATH:$HOME/bin
Remote
Terminal
Client [x86_64]
$ ssh <login>@RasPi
X11 forwarding
Client [x86_64]
/etc/ssh/ssh_config
ForwardX11 yes
Server [Raspberry Pi]
/etc/ssh/sshd_config
AllowTcpForwarding yes X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes
Commands
- [x86_64]
$ ssh -X <login>@RasPi
- [Raspberry Pi]
$ xterm -fg grey -bg black &
Local
Xfce Desktop
# pacman -S xfce4 xf86-video-fbdev xorg-server xfce4-screenshooter xterm
/etc/X11/xorg.conf.d/
10-evdev.conf
Section "InputClass" Identifier "evdev keyboard catchall" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "xkb_layout" "fr" Option "xkbOptions" "terminate:ctrl_alt_bksp" EndSection
Start it up
$ startxfce4
Programming
HowTo Cross-compiling
arm <MASTER>
# pacman -S base-devel distcc # pacman -S gdb ddd # nano /etc/makepkg.conf # nano /etc/distcc/hosts
/etc/makepkg.conf
CARCH="armv6l" CHOST="armv6l-unknown-linux-gnueabihf" CFLAGS="-march=armv6 -mfloat-abi=hard -mfpu=vfp -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -$ CXXFLAGS="-march=armv6 -mfloat-abi=hard -mfpu=vfp -O2 -pipe -fstack-protector --param=ssp-buffer-size=4$ LDFLAGS="" MAKEFLAGS="-j3" BUILDENV=(fakeroot distcc color !ccache check !sign) DISTCC_HOSTS="<SERVER>"
/etc/distcc/hosts
<SERVER>
x86_64 <SERVER>
# pacman -S distcc # pacman -S arm-elf-binutils arm-elf-gcc-base --- OR --- $ yaourt -S arm-linux-gnueabi-gcc # nano /etc/makepkg.conf # nano /etc/conf.d/distccd # nano /etc/hosts.allow # systemctl enable distccd # systemctl start distccd
/etc/makepkg.conf
MAKEFLAGS="-j9"
/etc/conf.d/distccd
DISTCC_ARGS="--user nobody --allow 192.168.1.0/24"
/etc/hosts.allow
distccd:192.168.1.
Sample
Calculator
cross compile
$ cd $ nano src/fcalc.c $ export DISTCC_VERBOSE=1 $ export DISTCC_HOSTS='<SERVER>' $ distcc arm-linux-gnueabi-gcc -g -c src/fcalc.c
debug
$ ddd bin/fcalc
src/fcalc.c
#include <stdio.h> #include <stdlib.h> int fcalc(char *f, char op, int a, int b) { int c = 0; *f = 0; switch(op) { case '+': c = a + b; break; case '-': c = a - b; break; case 'x': c = a * b; break; case '/': if(b != 0) c = (int) (a / b); else *f = 1; break; } return(c); } int main(int argc, char * argv[]) { char f = 0; int r = 0; if(argc == 4) { r = fcalc( &f, argv[1][0], atoi(argv[2]), atoi(argv[3]) ); if( !f ) printf("%d\n", r); else printf("DIV/0\n"); } else printf( "Usage: %s Op Num1 Num2\n" \ "where\n\tOp is + - x /\n" \ "\tNum#1 is the first argument\n" \ "\tNum#2 is the second argument\n", argv[0]); return(r); }
Applications
Chrome
Download it
$ yaourt libxss $ yaourt xulrunner $ yaourt gconf $ yaourt ttf-droid $ $ cd ~/Downloads $ wget distribution-eu.hexxeh.net/chromium-rpi/chromium-rpi-r22.tar.gz $ tar -zxvf chromium-rpi-r22.tar.gz $ $ cd /opt $ sudo mkdir google $ cd google $ sudo mv ~/Downloads/chrome . $ sudo chmod 4755 chrome/chrome-sandbox $ $ sudo ln -s /usr/lib/libudev.so.1 /usr/lib/libudev.so.0 $ $ cd $ echo "/opt/google/chrome/chrome -disable-ipv6" > ~/bin/chrome $ source /etc/profile.d/mozilla-common.sh $ ~/bin/chrome &
Cross-compile it [DRAFT]
x86_64 <SERVER>
- cross compilation monitoring
$ distccmon-text 3
arm master
$ yaourt -S git $ yaourt -S subversion $ yaourt -S python2 $ $ mkdir ~/src/chrome $ cd ~/src/chrome $ git clone https://git.chromium.org/chromium/tools/depot_tools.git $ nano depot_tools/gclient $ export PATH="$PATH":`pwd`/depot_tools $ $ mkdir lkgr $ cd lkgr $ gclient config https://src.chromium.org/svn/trunk/src https://chromium-status.appspot.com/lkgr $ gclient sync --deps="unix,chromeos" --force
depot_tools/gclient
- change python to python2
base_dir=$(dirname "$0") if [[ "#grep#fetch#cleanup#diff#" != *"#$1#"* ]]; then "$base_dir"/update_depot_tools fi PYTHONDONTWRITEBYTECODE=1 exec python2 "$base_dir/gclient.py" "$@"
FileZilla
$ yaourt -S filezilla
VLC
$ yaourt -S vlc
Hardware
Video
HDMI
List Modes
$ /opt/vc/bin/tvservice -m CEA $ /opt/vc/bin/tvservice -m DMT
Get Status
/opt/vc/bin/tvservice -s
Set Mode
/opt/vc/bin/tvservice -e "CEA 16"
Audio
$ yaourt -S pulseaudio $ yaourt -S pulseaudio-alsa $ yaourt -S alsa-utils $ $ alsamixer
Sensors
Temperature
$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
« 51382 »