linjc 发表于 2016-1-31 14:12:56

Archlinux ARM for Firefly-RK3288

本帖最后由 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模式
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.gz6.解压
miniroot# cd /mnt/
miniroot# tar -xzf ArchLinuxARM-veyron-latest.tar.gz 7.切换到archlinu 并新增用户:
miniroot# chroot /mnt/
# useradd -m -s /bin/bash firefly
# passwd firefly8.修改hostname:
# vi /etc/hostname9.archlinux是用systemd来启动系统服务的,为了启动archlinux时能正常使用串口,这里需要做一点修改:
# cp /lib/systemd/system/serial-getty\@.service /lib/systemd/system/serial-getty@ttyS2.service
vi /lib/systemd/system/serial-getty@ttyS2.service (把里面的“%i.device”改为“%i”)
# systemctl enable serial-getty@ttyS2.service注:官方的内核把ttyS2改为FIQ0了,所以我固件里还是把ttyS2改成FIQ0了,如果你用的是最新内核,请用FIQ0。
10.如果以上步骤都顺利通过,可以在这里先启动archlinux试试了:
# exit
miniroot# boot /mnt: /lib/systemd/systemd11.进入系统后可以用刚刚添加的用户名firefly进入了
Arch login: firefly
Password12.进入root用户,archlinux默认的root用户默认密码为root
$ su
Password:
#13.开机启动网络服务:
# systemctl enable dhcpcd.service
# systemctl start dhcpcd.service14.更新系统:
# 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?
N
15.为了操作方便,这里安装sudo:
# pacman -S sudo编辑sudo配置文件,添加用户权限:
# visudo
firefly ALL=(ALL) ALL16.添加wifi功能:
网友tlgimenes在添加wifi功能的时候使用了libhybris,这里提供一种更方便的方法从官方的ubuntu固件中拷贝/system/到arhclinux根文件系统目录:
# cp -r system/ /从官方的ubuntu固件中拷贝wifi启动及关闭脚本到archlinux对应目录:
# cp wifi-on.sh /usr/local/bin/
# cp wifi-off.sh /usr/local/bin/编辑systemd的service文件:
# vi /lib/systemd/system/wifi-on.service启动wifi服务:
# systemctl enable wifi-on.service17.添加蓝牙功能:
安装bluez
# pacman -S bluez
# pacman -S bluez-utils添加配置文件(文件内容有点多,这里不列出来,可从我制作的文件系统里面获得,这里我把蓝牙相关文件放在u盘,并挂载到/media):
# cp /media/bluetooth-brcm /etc/default/bluetooth-brcm添加蓝牙启动脚本:# cp /media/do-brcm-patchram-plus.sh /usr/local/bin/开机启动蓝牙服务:
# systemctl enable bluetooth-brcm-firmware.service
# systemctl enable bluetooth.service18. 如果你想把你制作的文件系统做成一个完整的固件,有一步是必不可少的,那就是第一次启动系统的时候要resize文件系统对应的分区,这里我们在第一次开机的时候启动一个脚本来实现:
# touch /firstboot
# vi /usr/local/bin/first-boot.sh
# chmod a+x /usr/local/bin/first-boot.sh
# vi /lib/systemd/system/rc.local.service (具体内容从我制作的文件系统里面获得)开机启动该服务:
# systemctl enable rc.local.service19. 打包固件之前,为了减小固件的体积,可以把无用的安装包删掉,如:# 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,可以做以下操作:
# 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

ohyeah521 发表于 2016-2-17 15:47:00

linjc 发表于 2016-2-15 15:35
想法不错,有空再试试,kalilinux 好像也支持arm,移植的原理都差不多的,你也可以试试啊

kali-linux 是支持arm的 https://github.com/offensive-security/kali-arm-build-scripts
就是不知道如何移植,从来没有搞过这个方向。期待兄弟搞好的image。

madman 发表于 2016-1-31 14:17:50

{:3_41:}

暴走的阿Sai 发表于 2016-1-31 15:05:55

支持原创!

ohyeah521 发表于 2016-2-11 10:44:35

系统楼主能够增加 Kali 系统的输入教程   www.kali.org

linjc 发表于 2016-2-15 09:15:51

ohyeah521 发表于 2016-2-11 10:44
系统楼主能够增加 Kali 系统的输入教程   www.kali.org

玩渗透测试?{:3_41:}

ohyeah521 发表于 2016-2-15 15:26:37

linjc 发表于 2016-2-15 09:15
玩渗透测试?

对,找了好久,没有合适的板子,就firefly-rk3288的性能还不错。配上屏幕,电池就可以做一个便携的渗透设备了

linjc 发表于 2016-2-15 15:35:45

ohyeah521 发表于 2016-2-15 15:26
对,找了好久,没有合适的板子,就firefly-rk3288的性能还不错。配上屏幕,电池就可以做一个便携的渗透设 ...

想法不错,有空再试试,kalilinux 好像也支持arm,移植的原理都差不多的,你也可以试试啊:D
页: [1]
查看完整版本: Archlinux ARM for Firefly-RK3288