RasPi3_kernel

$ 記号は一般ユーザで操作することを示す
# 記号はrootユーザで操作することを示す。
一般ユーザからは su コマンドで rootユーザに変わること

準備

gitのインストール

# apt-get install git
# apt-get install libncurses5-dev bc

作業ディレクトリ

# cd                 (rootのホームディレクトリに戻る)
# mkdir raspi-kernel
# cd raspi-kernel/

ソース取得

# time git clone --depth=1 https://github.com/raspberrypi/linux
real    8m31.970s

gitで取れないときの予備

ビルド

# cd linux
# KERNEL=kernel7
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
     特に変更することはない
# time make -j3 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
real    14m36.240s

microSDの準備

パーティション構成

  • microSDをUSBメモリカードリーダ経由でPCに接続する。
    この時USB3.0対応メモリカードリーダをUSB3.0 I/Fに接続するとうまく認識しない。
  • VirtualBoxウィンドウのメニューにて、「デバイス」>「USB」でゲストOSに認識させる
  • ゲストOSにて /dev/sdbとして認識したとする
# cfdisk /dev/sdb

cfdisk.png

/dev/mmcblk0p1FAT32128MByte起動に必要なファイル、config.txt、カーネル(zImage)、デバイスツリー(dtb)
/dev/mmcblk0p2ext4残り全部rootファイルシステム

フォーマット

ユーティリティのインストール

# apt-get install dosfstools

フォーマット

# mkfs.vfat -F32 /dev/sdb1
# mkfs.ext4 /dev/sdb2

マウントポイントを作る(パーティション1, 2共に)

# mkdir /media/sdb1
# mkdir /media/sdb2

マウントする

# mount /dev/sdb1 /media/sdb1
# mount /dev/sdb2 /media/sdb2

bootに必要なファイル群をダウンロードする

# cd                 (rootのホームディレクトリに戻る)
# wget http://download.si-linux.co.jp/RasPi3/raspi_bootfiles.tgz
# cd /media/sdb1
# tar xzvf /root/raspi_bootfiles.tgz

カーネル(zImage)とデバイスツリー(dtb)をパーティション1 (FAT32)へコピー

# cd                 (rootのホームディレクトリに戻る)
# cd raspi-kernel/linux
# cp arch/arm/boot/zImage               /media/sdb1/kernel7.img
# cp arch/arm/boot/dts/*.dtb            /media/sdb1/
# cp arch/arm/boot/dts/overlays/*.dtb*  /media/sdb1/overlays/
# cp arch/arm/boot/dts/overlays/README  /media/sdb1/overlays/

モジュールはp2へコピー

# INSTALL_MOD_PATH=/media/sdb2 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  modules_install

アンマウント

# sync
# umount /media/sdb1/
# umount /media/sdb2/

関連