编译kernel+xenomai+machinekit

编译kernel+xenomai,主要参考https://code.google.com/p/picnc项目中的wiki页面。

编译machinekit,主要参考http://www.machinekit.io/docs/building-from-source/ 。解决编译依赖要费些周折,需要再添加两个源,下载几个包。

搭建 qemu chroot 环境

安装必要的包

sudo apt-get install qemu qemu-user qemu-user-static binfmt-support debootstrap

用debootstrap搭建最小chroot环境

选择速度快点儿的Raspbian镜像:http://www.raspbian.org/RaspbianMirrors

cd <working dir>
sudo debootstrap --foreign --no-check-gpg --include=ca-certificates --arch=armhf wheezy rootfs 'mirror'

编辑/etc/qemu-binfmt.conf,加入下面这行:

EXTRA_OPTS="-L/usr/lib/arm-linux-gnueabihf"

复制qemu可执行文件然后chroot

sudo cp $(which qemu-arm-static) rootfs/usr/bin
sudo chroot rootfs/ /debootstrap/debootstrap --second-stage --verbose

将使用的镜像加入/etc/apt/sources.list

sudo sh -c 'echo deb 'mirror' wheezy main > rootfs/etc/apt/sources.list'
sudo sh -c 'echo deb-src 'mirror' wheezy main >> rootfs/etc/apt/sources.list'

创建/etc/resolv.conf

sudo cp /etc/resolv.conf rootfs/etc

Chroot

sudo chroot rootfs /bin/bash

设定locale,否则会产生一堆警告

LC_ALL=C
LANGUAGE=C
LANG=C

安装必要的包

apt-get update
apt-get install --no-install-recommends git-core kernel-package fakeroot build-essential devscripts lsb-release

编译Linux内核

下载源文件和补丁

进入工作目录

cd /usr/src

下载内核

git clone -b rpi-3.8.y --depth 1 git://github.com/raspberrypi/linux.git linux-rpi-3.8.y

下载Xenomai

git clone -b v2.6.4 https://gitlab.denx.de/Xenomai/xenomai.git xenomai-head

下载最小config文件

wget https://raw.githubusercontent.com/Solitarily/rpi_xenomai_config/master/rpi_xenomai_config

下载USB fiq补丁

wget https://raw.githubusercontent.com/Solitarily/rpi_xenomai_config/master/usb_fiq.patch

打补丁

打 ipipe core pre-patch

cd linux-rpi-3.8.y; patch -Np1 < ../xenomai-head/ksrc/arch/arm/patches/raspberry/ipipe-core-3.8.13-raspberry-pre-2.patch

打Xenomai ipipe核心补丁(先查看补丁编号是否有变化,补丁要与内核版本号一致)

xenomai-head/scripts/prepare-kernel.sh --arch=arm --linux=linux-rpi-3.8.y --adeos=xenomai-head/ksrc/arch/arm/patches/ipipe-core-3.8.13-arm-4.patch

打 ipipe core post-patch

cd linux-rpi-3.8.y; patch -Np1 < ../xenomai-head/ksrc/arch/arm/patches/raspberry/ipipe-core-3.8.13-raspberry-post-2.patch

打usb fiq补丁

cd linux-rpi-3.8.y; patch -Np1 < ../usb_fiq.patch

编译内核

编辑内核包维护者信息(名字、电邮之类的)

vi /etc/kernel-pkg.conf

安装必备的包

apt-get install --no-install-recommends ncurses-dev bc

配置内核

cd linux-rpi-3.8.y
cp ../rpi_xenomai_config .config
make oldconfig

编译

make-kpkg clean
make-kpkg --append-to-version=-xenomai --revision=1.0 kernel_image kernel_headers

编译Xenomai用户空间包

变更目录

cd /usr/src/xenomai-head

安装必要的依赖包

apt-get build-dep xenomai

编译

debuild -i -us -uc -b

编译Machinekit

变更目录

cd /usr/src

下载源码

git clone -b master -o github-machinekit --depth 1 git://github.com/machinekit/machinekit.git

添加两个源,安装必要的包

sudo sh -c \
    "echo 'deb http://deb.dovetail-automata.com wheezy main' > /etc/apt/sources.list.d/machinekit.list"
sudo apt-get update
sudo apt-get install dovetail-automata-keyring
sudo apt-get update

sudo apt-get install libczmq-dev python-zmq libjansson-dev \
    libwebsockets-dev

sudo sh -c \
    "echo 'deb http://ftp.us.debian.org/debian wheezy-backports main' > /etc/apt/sources.list.d/wheezy-backports.list"
sudo apt-get update
sudo apt-get install -t wheezy-backports cython
sudo apt-get install git dpkg-dev

安装内核和xenomai

dpkg -i linux-image-3.8.13-xenomai+_1.0_armhf.deb
dpkg -i libxenomai1_2.6.3_armhf.deb
dpkg -i libxenomai-dev_2.6.3_armhf.deb

安装依赖包

sudo scripts/apt-installbuilddeps

编辑/etc/fstab,加入

none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

Mount shm(否则会报错 error: failed to find required module pyftpdlib.servers

mount /dev/shm

配置machinekit

cd machinekit
debian/configure -px

编译

debuild -i -us -uc -b

文章摘自博客园:https://www.cnblogs.com/

原文地址:https://www.cnblogs.com/brep/p/4239853.html

作者昵称:brep

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值