# Raspberry Pi (简体中文)

翻译状态： 本文是英文页面 Raspberry_Pi 的翻译，最后翻译时间：2014_05_09，点击这里可以查看翻译后英文页面的改动。

Raspberry Pi (树梅派) 是一个基于ARMv6 架构的微型计算机. 查询更多信息可访问项目主页 和 教程.

## 前言

这篇文章并不是详尽的安装指南,我们假设读者已经成功在树梅派上部署了ArchLinux系统.初次使用ArchLinux的同学可以阅读Beginners' guide.

Note: ArchLinux的ARM架构通过http://archlinuxarm.org社区进行非官方支持.任何ARM架构下特有的问题会在Arch Linux Distribution Support ONLY 官方论坛上被关闭.

## 在树梅派上部署ArchLinux

参看ArchLinux ARM网站文档.

### 无线网络

默认情况下,安装好的Arch会通过dhcpd连接有线网络.如果你想通过无线网络访问你的树梅派,可以像下面这样创建无线网络配置,并且启用它.

Note: 首先,你需要一个可以被树梅派正确识别的无线网卡,使用net_tools包里面的iwconfig命令可以查看到当前可用的无线网卡,它可能被命名为wlanX或者raX.

    # cd /etc/netctl
    # cp /examples/wireless-wpa .
    # vi wireless-wpa

编辑好配置文件后,使用netctl启动并将其设置为开机自动启动.

    # netctl start wireless-wpa
    # netctl enable wireless-wpa

然后,你还需要将sshd设置为开机自动启动.

    # systemctl enable sshd

这样,你就可以在另一台电脑上使用ssh客户端访问你的树梅派了.

## 音频

Note: 所依赖的内核模块`snd-bcm2835`应当默认会被自动加载。

下载 alsa-utils, alsa-firmware, alsa-lib 和 alsa-plugins 包:

    # pacman -S alsa-utils alsa-firmware alsa-lib alsa-plugins

可以使用`alsamixer`来调整音量，请确保"PCM"没有被设置为静音(测试：`MM`如果设置为静音，使用`M`关掉静音).

选择一个音频输出:

    $ amixer cset numid=3 x

参数`x`应当为：

- 0 自动
- 1 模拟输出
- 3 HDMI

### HDMI音频说明

有些应用程序需要设置`/boot/config.txt`来强制开启HDMI模式：

    hdmi_drive=2

## 音频

### HDMI / 模拟 TV-输出

开启或关闭HDMI或TV-输出：

    /opt/vc/bin/tvservice

Use the -s parameter to check the status of your display, the -o parameter to turn your display off and -p parameter to power on HDMI with preferred settings.

Adjustments are likely required to correct proper overscan/underscan and are easily achieved in `boot/config.txt` in which many tweaks are set. To fix, simply uncomment the corresponding lines and setup per the commented instructions:

    # uncomment the following to adjust overscan. Use positive numbers if console
    # goes off screen, and negative if there is too much border
    #overscan_left=16
    overscan_right=8
    overscan_top=-16
    overscan_bottom=-16

Users wishing to use the analog video out should consult this config file which contains options for non-NTSC outputs.

A reboot is needed for new settings to take effect.

### X.org driver

The X.org driver for Raspberry Pi can be installed with the xf86-video-fbdev package:

    # pacman -S xf86-video-fbdev

## Onboard Hardware Sensors

### Temperature

Temperatures sensors can be queried with utils in the raspberrypi-firmware-tools package. The RPi offers a sensor on the BCM2835 SoC (CPU/GPU):

    $ /opt/vc/bin/vcgencmd measure_temp

    temp=49.8'C

Alternatively, simply read from the file system:

    $ cat /sys/class/thermal/thermal_zone0/temp

    49768

For human readable output:

    awk '{printf "%3.1f°C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp

    54.1°C

### Voltage

Four different voltages can be monitored via `/opt/vc/bin/vcgencmd` as well:

    $ /opt/vc/bin/vcgencmd measure_volts <id>

Where `<id>` is:

- core for core voltage
- sdram_c for sdram Core voltage
- sdram_i for sdram I/O voltage
- sdram_p for sdram PHY voltage

### Lightweight Monitoring Suite

monitorix has specific support for the RPi since v3.2.0. Screenshots available here.

## Overclocking/Underclocking

The RPi can be overclocked by editing `/boot/config.txt`, for example:

    arm_freq=800
    arm_freq_min=100
    core_freq=300
    core_freq_min=75
    sdram_freq=400
    over_voltage=0

The optional xxx_min lines define the min usage of their respective settings. When the system is not under load, the values will drop down to those specified. Consult the Overclocking article on elinux for additional options and examples.

A reboot is needed for new settings to take effect.

Note: The overclocked setting for CPU clock applies only when the governor throttles up the CPU, i.e. under load.

Users may query the current frequency of the CPU via this command:

    $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

## Tips for Maximizing SD Card Performance

### Enable TRIM and noatime by Mount Flags

Using this flag in one's `/etc/fstab` enables TRIM and noatime on the root ext4 partition. For example:

    /dev/root  /  ext4  noatime,discard  0  0

Note: /dev/root entry maybe missing from your /etc/fstab; by default it is mounted as a VFS by the kernel during system boot.

### Move /var/log to RAM

Warning: All system logs will be lost on every reboot.

Add this entry to your `/etc/fstab` to create a RAM disk that is 16MiB in size:

    tmpfs   /var/log        tmpfs   nodev,nosuid,size=16M   0       0

Delete your existing log directory:

    # rm -R /var/log

Reboot system for changes to take effect.

## Serial Console

Edit the default `/boot/cmdline.txt`, change `loglevel` to `5` to see boot messages:

    loglevel=5

Change speed from 115200 to 38400:

    console=ttyAMA0,38400 kgdboc=ttyAMA0,38400

Start getty service

    # systemctl start getty@ttyAMA0

Enable on boot

    # systemctl enable getty@ttyAMA0.service

Creating the proper service link:

    # ln -s /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyAMA0.service

Then connect :)

    # screen /dev/ttyUSB0 38400

## Raspberry Pi Camera module

The commands for the camera module are including as part of the raspberrypi-firmware-tools package - which is installed by default. You can then use:

    $ /opt/vc/bin/raspistill
    $ /opt/vc/bin/raspivid

You need to append to `/boot/config.txt`:

    start_file=start_x.elf
    fixup_file=fixup_x.dat

Optionally

    disable_camera_led=1

if you get the following error:

    mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
    mmal: camera component couldn't be enabled
    mmal: main: Failed to create camera component
    mmal: Failed to run camera app. Please check for firmware updates

try setting these values in `/boot/config.txt`:

    cma_lwm=
    cma_hwm=
    cma_offline_start=

## Hardware Random Number Generator

ArchLinux ARM for the Raspberry Pi is distributed with the rng-tools package installed and the bcm2708-rng module set to load at boot (see this), but we must also tell the Hardware RNG Entropy Gatherer Daemon (rngd) where to find the hardware random number generator.

This can be done by editing `/etc/conf.d/rngd`:

    RNGD_OPTS="-o /dev/random -r /dev/hwrng"

and restarting the rngd daemon:

    systemctl restart rngd

Once completed, this change ensures that data from the hardware random number generator is fed into the kernel's entropy pool at `/dev/random`.

## GPIO

### Python

To be able to use the GPIO pins from Python, you can use the RPi.GPIO library. Install either python-raspberry-gpio or python2-raspberry-gpio from the AUR.

## See also

- RPi Config - Excellent source of info relating to under-the-hood tweaks.
- RPi vcgencmd usage - Overview of firmware command vcgencmd.
- Archlinux ARM on Raspberry PI - A FAQ style site with hints and tips for running Archlinux on the rpi

Category:

- ARM architecture (简体中文)