本帖最后由 linjc 于 2016-1-31 17:29 编辑
Arch Linux是起源于加拿大的一份致力于使用简单、系统轻量、软件更新速度快的 GNU/LINUX发行版,它不仅支持i686,x86_64的PC,现在还派生出针对ARM平台的Arch Linux ARM。使用过Archlinux的人应该知道,使用Archlinux比较折腾,这主要因为它的简洁,安装完Archlinux就只有最基本的工具,连图形化界面都没有。但也因为它这个特点,用户才可以根据自己的喜好定制一个属于自己的linux,因此也深受一些喜欢定制自己工作环境的开发者喜爱。Archlinux arm可以在树莓派上运行,而且前阵子看到有网友tlgimenes在firefly-rk3288上也跑了:链接,因此本人也试了一下,在这里把我移植的过程分享一下。
1.把板子烧成firefly-rk3288官方的ubuntu单系统固件;
2.下载miniroot文件:链接,把linux-boot-miniroot.img烧到boot分区(0xA000)
3.重启板子,进入miniroot模式
4.在官方的linux单系统中,/dev/mmcblk0p5分区就是存储linux文件系统的,我们就在此分区创建ext4文件系统,用于存放新的archlinux文件系统,这里把它挂载到/mnt
- miniroot# mkfs.ext4 -E nodiscard /dev/mmcblk0p5
- miniroot# mount /dev/mmcblk0p5 /mnt/
复制代码 5.接上以太网,打开网络,下载archlinux文件系统(你也可以直接到archlinuxarm.org把文件包下载下来)
- miniroot# udhcpc
- miniroot# wget –P /mnt http://archlinuxarm.org/os/ArchLinuxARM-veyron-latest.tar.gz
复制代码 6.解压
- miniroot# cd /mnt/
- miniroot# tar -xzf ArchLinuxARM-veyron-latest.tar.gz
复制代码 7.切换到archlinu 并新增用户:
- miniroot# chroot /mnt/
- [root@miniroot /]# useradd -m -s /bin/bash firefly
- [root@miniroot /]# passwd firefly
复制代码 8.修改hostname:
- [root@miniroot /]# vi /etc/hostname
复制代码 9.archlinux是用systemd来启动系统服务的,为了启动archlinux时能正常使用串口,这里需要做一点修改:
- [root@miniroot /]# cp /lib/systemd/system/serial-getty\@.service /lib/systemd/system/serial-getty@ttyS2.service
- [root@miniroot /]vi /lib/systemd/system/serial-getty@ttyS2.service (把里面的“%i.device”改为“%i”)
- [root@miniroot /]# systemctl enable serial-getty@ttyS2.service
复制代码 注:官方的内核把ttyS2改为FIQ0了,所以我固件里还是把ttyS2改成FIQ0了,如果你用的是最新内核,请用FIQ0。
10.如果以上步骤都顺利通过,可以在这里先启动archlinux试试了:
- [root@miniroot /]# exit
- miniroot# boot /mnt: /lib/systemd/systemd
复制代码 11.进入系统后可以用刚刚添加的用户名firefly进入了
- Arch login: firefly
- Password
复制代码 12.进入root用户,archlinux默认的root用户默认密码为root
- [firefly@Arch ~]$ su
- Password:
- [root@Arch firefly]#
复制代码 13.开机启动网络服务:
- [root@Arch firefly]# systemctl enable dhcpcd.service
- [root@Arch firefly]# systemctl start dhcpcd.service
复制代码 14.更新系统:
- [root@Arch firefly]# pacman –Syu
复制代码注意:更新的时候会出现以下提示,要选择n,要不你会前功尽弃: - >>> Updating module dependencies. Please wait ...
- A new kernel version needs to be flashed onto /dev/mmcblk0p5.
- Do you want to do this now? [y|N]
- N
复制代码
15.为了操作方便,这里安装sudo:
- [root@Arch firefly]# pacman -S sudo
复制代码 编辑sudo配置文件,添加用户权限:
- [root@Arch firefly]# visudo
- firefly ALL=(ALL) ALL
复制代码 16.添加wifi功能:
网友[url=]tlgimenes[/url]在添加wifi功能的时候使用了libhybris,这里提供一种更方便的方法 从官方的ubuntu固件中拷贝/system/到arhclinux根文件系统目录:
- [root@Arch firefly]# cp -r system/ /
复制代码 从官方的ubuntu固件中拷贝wifi启动及关闭脚本到archlinux对应目录:
- [root@Arch firefly]# cp wifi-on.sh /usr/local/bin/
- [root@Arch firefly]# cp wifi-off.sh /usr/local/bin/
复制代码 编辑systemd的service文件:
- [root@Arch firefly]# vi /lib/systemd/system/wifi-on.service
复制代码 启动wifi服务:
- [root@Arch firefly]# systemctl enable wifi-on.service
复制代码 17.添加蓝牙功能:
安装bluez
- [root@Arch firefly]# pacman -S bluez
- [root@Arch firefly]# pacman -S bluez-utils
复制代码 添加配置文件(文件内容有点多,这里不列出来,可从我制作的文件系统里面获得,这里我把蓝牙相关文件放在u盘,并挂载到/media):
- [root@Arch firefly]# cp /media/bluetooth-brcm /etc/default/bluetooth-brcm
复制代码 添加蓝牙启动脚本:- [root@Arch firefly]# cp /media/do-brcm-patchram-plus.sh /usr/local/bin/
复制代码 开机启动蓝牙服务:
- [root@Arch firefly]# systemctl enable bluetooth-brcm-firmware.service
- [root@Arch firefly]# systemctl enable bluetooth.service
复制代码 18. 如果你想把你制作的文件系统做成一个完整的固件,有一步是必不可少的,那就是第一次启动系统的时候要resize文件系统对应的分区,这里我们在第一次开机的时候启动一个脚本来实现:
- [root@Arch firefly]# touch /firstboot
- [root@Arch firefly]# vi /usr/local/bin/first-boot.sh
- [root@Arch firefly]# chmod a+x /usr/local/bin/first-boot.sh
- [root@Arch firefly]# vi /lib/systemd/system/rc.local.service (具体内容从我制作的文件系统里面获得)
复制代码 开机启动该服务:
- [root@Arch firefly]# systemctl enable rc.local.service
复制代码 19. 打包固件之前,为了减小固件的体积,可以把无用的安装包删掉,如:- [root@Arch firefly]# rm /var/cache/pacman/pkg/*
复制代码20. 打包( 这里我用u 盘存放我的文件系统镜像,即/dev/sda) : 重启板子之后再次进入miniroot
- miniroot# mount /dev/mmcblk0p5 /mnt/
- miniroot# mkdir /media
- miniroot# mount /dev/sda /media/
- miniroot# dd if=/dev/zero of=/media/linuxroot.img bs=1M count=1024
- miniroot# mkfs.ext4 -F -L linuxroot /media/linuxroot.img
- miniroot# mkdir tmp
- miniroot# mount -o loop /media/linuxroot.img /tmp/
- miniroot# cp -a /mnt/* /tmp/
- miniroot# umount /tmp/
- miniroot# umount /media/
- miniroot# umount /mnt/
复制代码 走到这里,u盘里的linuxroot.img就是制作好的archlinux文件系统了。
21.烧写及制作成统一镜像:
制作成文件系统后可以直接烧到板子对应的linuxroot分区,具体请阅读官方wiki
我这里修改了一下官方的AndroidTool烧写工具,只要把你制作的文件,包括:linuxroot.img,linux-boot.img,resource.img,misc_zero.img 放入rockdev/Image/再执行mkupdate.bat就可以在rockdev/下生成一个update.img
22.如果想直接在板子上运行archlinux,可以配置miniroot开机自启动archlinux,修改如下:
- miniroot# editenv
- root=/dev/mmcblk0p5:
- init=/sbin/init
- #ethaddr=00:11:22:33:44:55
- #fbset_args="-a -nonstd 1 -g 1920 1080 1920 1080 32 -rgba 8/0,8/8,8/16,8/24"
- #fbset_args="-a -nonstd 4 -g 1280 720 1280 720 16 -rgba 5/11,6/5,5/0,0/0"
- autoboot=1
- miniroot# saveenv
- miniroot# reboot –f
复制代码启动后自动进入archlinux 如果不想自动进入archlinux,开机进入miniroot,可以做以下操作:
- [root@Arch firefly]# dd if=/dev/zero of=/dev/block/mtd/by-name/misc
复制代码
我这里只是移植了一个最基本的archlinux文件系统,如果要做成一个完善的系统,还需要安装配置很多东西,下面的就由大家自己折腾啦!希望你折腾之后也把你的东西给大家分享分享,就像这位网友:tlgimenes 这里感谢他的分享。
固件链接: http://pan.baidu.com/s/1bomaoVH 密码: mpfk
这里再分享一个加了xfce桌面环境的文件系统:
链接: http://pan.baidu.com/s/1numvXrV 密码: g82u
|