Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅、正确和代码最小化的设计宗旨。创始人Judd Vinet出于对Debian以及Red Hat的包管理器不满,以及受CRUX影响而创立。最初针对i686,但是如今对x86_64也支持良好,而且还派生出了针对ARM平台的Arch Linux ARM以及针对HURD内核的Arch Hurd(发展缓慢)。
在这里,我们提供了一种为pcDuino制作ArchLinux的镜像的方法。
在整个制作的过程中,我们将会用到一个x86的 Linux Virtual Box, 一台跑着 官方Ubuntu系统的pcDuino做为编译服务器, 一个pcDuino做为目标机。
一、工具准备:
1、 装有ubuntu的x86_64的主机一台,建议用virtualbox安装64位ubuntu;
2、 大于2G的TF卡一张;
3、 串口调试线;
4、HDMI线、显示器;
5、现场能够通过网线接路由器;
二、系统安装准备:
1、将pcDuino装最新的ubuntu系统;
2、将TF卡安装最新的从TF卡启动的ubuntu系统。
制作基础固件
本节操作全部在x86_64的ubuntu上执行,请提前装好系统,具体的你可以参考附件一。
具体操作:
1、先编译内核。具体的编译方法请参照http://cnlearn.linksprite.com/?p=1013编译的目的是为了得到pcduino_a10_hwpack_YYYYMMDD.tar.xz,里面有系统启动所需的uImage和ko文件。如果你的电脑之前已经下载过内核,建议你在内核的kernel的目录下执行:git pull 。这样和内核最新的修复保持同步。
2, 建立基础固件。
sudo su
mkdir ~/archlinux
cd ~/archlinux
到archlinux官网上下载archlinux for sun4i的固件,
wget http://archlinuxarm.org/os/ArchLinuxARM-sun4i-latest.tar.gz
建一个空的img镜像
dd if=/dev/zero of=archlinux.img bs=1M count=1800
格式化镜像为ext3格式
mke2fs -t ext3 archlinux.img
挂载新建的镜像
sudo mount -t ext3 -o loop archlinux.img /mnt
sudo tar xvf ArchLinuxARM-sun4i-latest.tar.gz -C /mnt
更改驱动,这时候需要把编译出来pcduino_a10_hwpack_20131103.tar.xz在kernel/output/目录下
tar xvf pcduino_a10_hwpack_20131103.tar.xz
rm /mnt/lib/modules/* -rf
cp rootfs/lib/modules/3.4.29+/ /mnt/lib/modules/ -rf
里面的rootfs解压出来,替换掉/mnt相应的位置。
解除挂载
sudo umount /mnt
修改update.sh
vim update.sh
3 IMG=archlinux.img
把第三行的位置,换成archlinux.img。这一步操作要注意了,不能在windows里面打开update.sh,windows里面的文本编码和linux是不一样的,在windows里面打开之后你升级之后就找不到update.sh
把基础系统烧录到板子上,
pcduino_a10_kernel_livesuit_20131103.img用Phoenixcard烧写到SD卡上,
烧写完之后格式化SD卡将archlinux.img和update.sh拷贝到SD里面刷机。
具体刷机方式请参照:
http://cnlearn.linksprite.com/?p=183
这里使用的是安装ubuntu到nand flash的操作方法。
通过前面一步,现在你的板子上面已经运行了archlinux基础系统,
输入用户名:root
密码:root
就可以登录系统了。本节内容将全部在这个基础系统中进行,进一步完善这个基础系统。
具体操作
1、 更新系统
pacman -Syyu
2、 创建普通用户
useradd -m -s /bin/bash archlinux
3、 设置密码
passwd archlinux
4、 安装sudo,可以上普通用户执行root命令
pacman –S sudo
5、为刚才添加的普通用户添加sudo的相关权限
visudo
##
## User privilege specification
##
root ALL=(ALL) ALL
archlinux ALL=(ALL) ALL
5、 为系统添加动态驱动模块
nano /etc/modules-load.d/modules.conf
GNU nano 2.2.6 File: /etc/modules-load.d/moules.conf
lcd
hdmi
ump
disp
disp_ump
mali
mali_drm
8192cu
rt5370sta
添加完之后重启:
sudo reboot
[archlinux@alarm ~]$ lsmod
Module Size Used by
8192cu 536896 0
mali_drm 2087 0
drm 156908 1 mali_drm
mali 91146 0
disp_ump 823 0
ump 43846 2 mali,disp_ump
6、 安装openssh,便于远程连接
pacman -s openssh
systemctl enable sshd #让系统启动时自动启动openssh
ifconfig
[archlinux@alarm ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.134 netmask 255.255.255.0 broadcast 255.255.255.255
inet6 fe80::d09a:3bff:fe04:941f prefixlen 64 scopeid 0×20<link>
ether d2:9a:3b:04:94:1f txqueuelen 1000 (Ethernet)
RX packets 205 bytes 22158 (21.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29 bytes 2313 (2.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 55 base 0xb000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 16436
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0×10<host>
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
#记住IP : 192.168.1.134
通过第上一步操作,你的系统现在已经很完整了,你现在可以用putty这样的工具去连接你的archlinux。但是系统还是命令行界面,没有桌面,下面本节就是如果给archlinux安装桌面。为了避免你的系统过于臃肿,本节所有驱动源码,都是事先配置好的,具体的配置过程,过于繁杂,这里不再介绍,你可以到我提供的git hub上面下载配置好的驱动源码。
具体操作
1、 安装编译工具,下载比较慢,如果中途因为你网速慢而终止下载,你可以重新执行该命令
pacman -S gcc make
2、 安装桌面
pacman -S xorg-server xorg-server-utils xorg-xinit
pacman -S xfce4
3、 给驱动添加权限
cd /etc/udev/rules.d/
sudo nano 50-mali.rules
KERNEL==”mali”, MODE=”0660″, GROUP=”video”
KERNEL==”ump”, MODE=”0660″, GROUP=”video”
4、安装依赖文件
sudo pacman -S automake autoconf
sudo pacman -S libdri2
sudo pacman -S pkg-config
sudo pacman -S xorg-util-macros libtool xorg-server-devel pyxdg
sudo pacman -S xorg-server xorg-server-utils xorg-xinit
sudo pacman -S dri2proto git
5、安装libdri2
git clone https://github.com/robclark/libdri2
cd libdri2
./ autogen .sh
sudo make install
6、 安装gpu驱动sunxi-mali
git clone https://github.com/linux-sunxi/sunxi-mali.git
cd sunxi-mali
git submodule init
git submodule update
sudo make install
7、 安装xf86-video-sunxifb
git clone https://github.com/Pillar1989/xf86-video-mali #这里面是我修改过的
sudo make install
8、make install的安装路径archlinux的桌面是加载不了的
cd xf86-video-mali
sudo cp src/.libs/mali_drv.so /usr/lib/xorg/modules/dri/
cd ../
cp src/.libs/* /usr/lib/xorg/modules/dri/
cd /usr/lib/xorg/modules/dri/
sudo ln -s libdri2.so.1.0.0 libdri2.so.1
9、测试
startxfce4
1、 设置屏幕脚本
cd xf86-video-mali
sudo cp set_window.sh /usr/bin/
sudo setwindow /usr/bin/
2、屏幕位置不对,有偏移,或者不能全屏,执行
setwindow 100 1 0 0
Uname –a查看一下你的内核的版本
Linux alarm 3.4.29+ #1 PREEMPT Sun Nov 3 11:00:11 CST 2013 armv7l GNU/Linux
如果还是3.4.29+,那么你可以直接把ubuntu的pcDuino的系统里面的hardwarelib拷贝到archlinux相应的位置。
然后在/etc/modules-load.d/modules.conf里面添加内容如下:
hdmi
ump
disp
disp_ump
mali
mali_drm
8192cu
sw_interrupt
gpio
pwm
adc
Linux发行版有个典型的特点,就是有登陆管理器和桌面常用的archlinux的登陆管理器有下面这些:
XDM: X 显示管理器 (xorg-xdm)
GDM: GNOME 显示管理器 (gdm)
KDM: KDE 显示管理器 (kdebase-workspace)
SLiM: 简单登录管理器 (slim)
LXDM: LXDE 显示管理器 (独立于桌面环境) (lxdm)
Qingy: getty 使用 DirectFB 的替代者 (qingy)
wdm: WINGs 显示管理器 (wdm)
CDM: 控制台显示管理器 (available in the AUR: cdm-git)
LightDM: Ubuntu 开发的 GDM 替代品,使用 WebKit (位于AUR: lightdm, lightdm-bzr)
其中slim和lightdm是轻量级的,占用flash比较小,此固件中使用slim
桌面有三种,一种是openbox这种也是轻量级的,占用flash比较小,还有另外两种,是xfce4和gnome,这两种占用资源比较大。
此固件里面有两种桌面,一种是openbox,一种是xfce4。你可以在登陆界面上面切换。
设置桌面开机启动:
sudo pacman -S slim
sudo systemctl enable slim.service
可能的错误
屏幕提示failed to execute login command!
解决办法:
nano .xinitrc
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . ”$f”
done
unset f
fi
# exec gnome-session
# exec startkde
exec startxfce4
# …or the Window Manager of your choice
重新登录!
一个系统是必须要浏览器的,还有flash可以在线看视频!
pacman -S chromium chromium-pepper-flash
sudo pacman -Scc
sudo pacman –Sc
清理后
[root@alarm archlinux]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/nandd 1.8G 1.4G 269M 85% /
none 406M 0 406M 0% /dev
devtmpfs 406M 0 406M 0% /dev
tmpfs 407M 0 407M 0% /dev/shm
tmpfs 407M 1.4M 406M 1% /run
tmpfs 407M 0 407M 0% /sys/fs/cgroup
tmpfs 407M 8.0K 407M 1% /tmp
插入SD卡并挂载
sudo mount /dev/ mmcblk0p1 /mnt
sudo cd /mnt
sudo dd if=/dev/nandd of=archlinux.img bs=1M
archlinux软件管理pacman使用方法:
要完全了解pacman可以做什么,请阅读man pacman[1]。下面只是一个可执行操作的小示范。
安装和删除包
安装和升级软件包前,先让本地的包数据库和远程的软件仓库同步是个好习惯。
pacman -Syu
或者
pacman –sync –refresh
安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:
pacman -S package_name1 package_name2
有时候在不同的软件仓库中,一个软件包有多个版本(比如extra和testing)。你可以选择一个来安装:
pacman -S extra/package_name
pacman -S testing/package_name
你也可以在一个命令里同步包数据库并且安装一个软件包:
pacman -Sy package_name
删除单个软件包,保留其全部已经安装的依赖关系
pacman -R package_name
删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:
pacman -Rs package_name
升级系统
Pacman能够只用一个指令来升级系统中所有已安装的包。升级的时间取决于你的系统有多新。
pacman -Su
当然,最好做法的是将升级系统和同步仓库数据合成为一条指令:
pacman -Syu
包数据库
Pacman可以用 -Q 标志搜索和查询本地包数据库。见
pacman -Q –help
或者更详细的 pacman(8) manpage。同步数据库可以用 -S 标志搜索和查询。或者见刚提及的 manpage 或者
pacman -S –help
查看详情。
我们都知道在开发软件之前需要安装嵌入式开发环境。而产品 ISO文件中提供的开发环境(linux/source目录下)需要在Linux 系统下才能运行。如果当前您使用的是Windows系统,那么首先需要安装 Linux 操作系统,然后才能在该系统下安装相应的开发环境。我们推荐使用VirtualBox虚拟机来在Windows中安装 Ubuntu Linux 操作系统。下面我们将依次介绍虚拟机VirtualBox 和Ubuntu Linux系统的安装过程。
一、安装 VirtualBox 虚拟机:
您可以访问 http://www.virtualbox.org/wiki/Downloads 来下载最新版本的 VirtualBox虚拟机。在安装 VirtualBox 虚拟机之前,请确保您的 PC 拥有至少 512MB 的内存空间。
建议提供1G以上的内存空间。
1) 安装过程很简单,此处略过。安装后从开始菜单启动VirtualBox,然后单击程序窗口上方的New 按钮,弹出新建虚拟机窗口;
图 1 新建虚拟机窗口
单击Next 按钮开始新建虚拟机。
图 2 虚拟机名称和操作系统类型
您可以在Name 一栏中输入新建虚拟机的名称,例如Ubuntu。在 Operating System一栏中选择Linux,然后单击Next按钮。
3) 在以下窗口中为虚拟机分配适当大小的内存空间,分配完成后单击Next按钮;
图 3 内存分配窗口
注意:
如果您的 PC 内存为 1G 或者更少,请保留默认设置;
如果您的 PC 内存超过 1G,则可以将 1/4 或者更少的内存分配给虚拟机,例如 PC 内存为 2G,则将 512MB 的内存分配给虚拟机。
4) 如果这是您第一次使用 VirtualBox,请在下方窗口中选择 Create new hard disk选项,然后单击 Next按钮;
图 4 创建新的虚拟硬盘窗口
5) 在下方虚拟硬盘创建向导窗口中单击 Next按钮;
图 5 虚拟硬盘创建向导
6) 在下方窗口中选择Fixed-size storage选项,并单击Next按钮;
图 6 选择第二个选项
7) 在下方窗口中指定硬盘数据的存储位置以及默认虚拟硬盘的容量(至少 8G),然后单击Next按钮;
图 7 虚拟硬盘设置窗口
8) 在下方的虚拟硬盘信息窗口中单击Finish按钮;
图 8 虚拟硬盘信息
图 9 创建虚拟硬盘驱动器
10) 完成驱动器创建后会显示摘要信息。请单击完成按钮即完成虚拟机安装过程;
图 10 虚拟机配置完成
二、安装 Ubuntu Linux 系统
虚拟机安装完成后,我们就可以开始安装 Ubuntu Linux 系统了。首先请访问http://www.Ubuntu.com/download/Ubuntu/download,下载 Ubuntu 的 ISO 映像文件,然后按照以下步骤进行安装。
1) 从开始菜单启动 VirtualBox,然后在程序窗口上方单击Setting按钮,弹出虚拟机设置窗口,如下图所示;
图1 虚拟机设置窗口
2) 在窗口左方选择Storage选项,然后单击 IDC控制器下Empty文字右方的光盘图标来指定Ubuntu映像文件的位置,如下图所示;
图 2 指定Ubuntu映像位置
图3
4) 单击 VirtualBox 窗口上方的 Start 按钮,屏幕会弹出 Ubuntu 的安装初始化窗口,如下图所示;
图 4 Ubuntu 初始化窗口
5) 在出现以下窗口时单击 Install Ubuntu 进行安装,如下图所示;
图 5
图 6 安装前的信息
7) 选择Erase disk and install Ubuntu选项,并单击Forward 按钮。
图 7 Ubuntu 安装选项
注意:
选择该选项并不会删除硬盘上物理分区中的任何内容。
8) 单击下方窗口中的 Install Now 按钮开始安装Ubuntu;
图 8 安装确认窗口
9) 在安装过程中安装程序会询问一些简单的问题,请输入相应的信息并单击Forward按钮即可。安装过程中的最后一个问题窗口如下图所示;
图 9 指定用户名和密码
在相应的文本框内输入用户名和密码后,选择 Log in automatically选项并单击Forward 按钮。
10) Ubuntu 的安装依据不同的 PC性能可能需要15分钟至1 小时左右。安装完成后会弹出如下图所示的提示窗口,请选择Restart Now重新启动Ubuntu系统;
图 10 重新启动系统
11) 重新启动后就可以使用 Ubuntu 系统了。通常在重新启动 Ubuntu 系 统后VirtualBox 会自动弹出图 3 中载入的映像文件,如果没有自动弹出,您可以在VirtualBox的Setting窗口中手动弹出该映 像,使IDE控制器下显示为Empty,如下图所示;
图 11
我就来问一句,这玩意跑xfce卡么?