Linuxのコンパイル [電子工作]
Raspberry Pi Zeroに乗せるLinuxカーネルのコンパイルをしてみました。ubuntu-16.04.2-serverをHyper-Vで動かします。SSHサーバの設定で戸惑いましたが、無事にtera-termからsshでつながるようになりました。
まず最初に必要なツールをインストールします。
ファイルをwindowsへもっていき(WinScpなど)FATでフォーマットしたSDカードにファイルをコピーしておしまいです。
まず最初に必要なツールをインストールします。
root@kuro:~$ sudo su - [sudo] password for kuro: root@kuro:~# root@kuro:~$ apt-get update root@kuro:~$ apt-get install make gcc git libncurses-dev bc unzip g++ genromfs subversion texinfo pythonつぎにworkディレクトリを作成し、buildrootをダウンロードして展開します。
root@kuro:~$ mkdir work root@kuro:~$ cd work root@kuro:~/work$ wget https://buildroot.uclibc.org/downloads/buildroot-2017.02.2.tar.gz root@kuro:~/work$ tar xvf buildroot-2017.02.2.tar.gz root@kuro:~/work$ cd buildroot-2017.02.2カーネルのバージョンをbuildrootのデフォルトのバージョンとは異なるバージョンでコンパイルするため、buildrootの設定ファイルをコピーして使用します。(編集内容は変更のあるところを抜き出して書いています)
root@kuro:~/work/buildroot-2017.02.2$ cp configs/raspberrypi0_defconfig configs/raspberrypi1_defconfig root@kuro:~/work/buildroot-2017.02.2$ cp -r board/raspberrypi0 board/raspberrypi1 root@kuro:~/work/buildroot-2017.02.2$ vi configs/raspberrypi1_defconfig ----- BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi1/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi1/post-image.sh" ----- root@kuro:~/work/buildroot-2017.02.2# mv board/raspberrypi0/genimage-raspberrypi.cfg board/raspberrypi1/genimage-raspberrypi1.cfg root@kuro:~/work/buildroot-2017.02.2$ vi board/raspberrypi0/genimage-raspberrypi1.cfg ----- image boot.vfat { vfat { files = { "bcm2708-rpi-b-plus.dtb", "rpi-firmware/bootcode.bin", "rpi-firmware/cmdline.txt", "rpi-firmware/config.txt", "rpi-firmware/fixup.dat", "rpi-firmware/start.elf", "zImage" } } size = 256M } -----コンパイルするための設定をおこないます。
root@kuro:~/work/buildroot-2017.02.2$ make raspberrypi1_defconfig root@kuro:~/work/buildroot-2017.02.2$ make menuconfig ----- Toolchain ---> custom toolchain vendor name kuro Custom kernel headers series (4.4.x) ---> (X) 4.9.x [*] Enable RPC support [*] Enable WCHAR support System configuration ---> System hostname kuro System banner Welcome to Kuro Root password root123 Run a getty (login prompt) after boot ---> (console) TTY port ttyAMA0 Baudrate (keep kernel default) ---> 115200 () Root filesystem overlay directories rootfs-overlay Kernel ---> Custom repository version rpi-4.9.y Linux Kernel Tools ---> [*] gpio Target packages ---> Audio and video applications ---> [*] alsa-utils ---> [*] alsactl (NEW) [*] alsamixer (NEW) [*] aplay/arecord [*] ffmpeg ---> [*] Build ffmpeg (the command line application) (NEW) [*] Enable input devices (NEW) [*] Enable output devices (NEW) [*] Build libavresample [*] flac [*] lame [*] mpd ---> [*] libsamplerate [*] libsoxr [*] dsd [*] ffmpeg [*] flac [*] lame [*] mpd-mpc [*] mplayer [*] Build and install mplayer (NEW) Filesystem and flash utilities ---> [*] nfs-utils [*] rpc.lockd Interpreter languages and scripting ---> [*] python Networking applications ---> [*] bluez-utils [*] audio support [*] USB support [*] GATT support [*] dropbear [*] openssh Filesystem images ---> [*] initial RAM filesystem linked into linux kernel [*] romfs root filesystem -----一部設定を書き換えてバックアップしておきます。こうすることでmake menuconfigの設定を省くことができます。
root@kuro:~/work/buildroot-2017.02.2$ vi .config ----- BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS=y ----- root@kuro:~/work/buildroot-2017.02.2$ cp .config configs/raspberrypi1_defconfig次にLinuxカーネルのコンパイル設定を行います。
root@kuro:~/work/buildroot-2017.02.2$ make linux-menuconfig ----- General setup ---> Default hostname kuro [ ] Support for paging of anonymous memory (swap) [*] Support initial ramdisks compressed using gzip [ ] Support initial ramdisks compressed using bzip2 [ ] Support initial ramdisks compressed using LZMA [ ] Support initial ramdisks compressed using XZ [ ] Support initial ramdisks compressed using LZO [ ] Support initial ramdisks compressed using LZ4 Boot options ---> (console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ex console=ttyAMA0,115200 [*] Networking support ---> Networking options ---> [ ] Network packet filtering framework (Netfilter) ---- < > Asynchronous Transfer Mode (ATM) < > Layer Two Tunneling Protocol (L2TP) ---- < > 802.1d Ethernet Bridging < > 802.1Q/802.1ad VLAN Support < > Appletalk protocol support < > Open vSwitch [ ] MultiProtocol Label Switching ---- [ ] Amateur Radio support ---- < > CAN bus subsystem support ---- < > WiMAX Wireless Broadband support ---- < > RF switch subsystem support ---- < > Plan 9 Resource Sharing Support (9P2000) ---- < > NFC subsystem support ---- Device Drivers ---> [ ] Multiple devices driver support (RAID and LVM) ---- [*] Network device support ---> < > Bonding driver support < > Dummy net driver support < > MAC-VLAN support < > IP-VLAN support < > Virtual eXtensible Local Area Network (VXLAN) < > Universal TUN/TAP device driver support < > Virtual ethernet pair device < > PPP (point-to-point protocol) support < > SLIP (serial line) support < > IEEE 802.15.4 drivers ----buildrootと同様の設定をバックアップしておきます。Multimedia support ---> [ ] Analog TV support [ ] Digital TV support [ ] AM/FM radio receivers/transmitters support [*] USB support ---> < > Synopsis DWC host support < > USB Printer support < > Realtek Card Reader support < > Datafab Compact Flash Reader support < > Freecom USB/ATAPI Bridge support < > ISD-200 USB/ATA Bridge support < > USBAT/USBAT02-based storage support < > SanDisk SDDR-09 (and other SmartMedia, including DPCM) support < > SanDisk SDDR-55 SmartMedia support < > Lexar Jumpshot Compact Flash Reader < > Olympus MAUSB-10/Fuji DPC-R1 support < > Support OneTouch Button on Maxtor Hard Drives < > Support for Rio Karma music player < > SAT emulation on Cypress USB/ATA Bridge with ATACB < > USB ENE card reader support < > USB Mustek MDC800 Digital Camera support < > Microtek X6USB scanner support < > DesignWare USB2 DRD Core Support < > ADU devices from Ontrak Control Systems < > USB 7-Segment LED Display < > USB Diamond Rio500 support < > USB Lego Infrared Tower support < > USB LCD driver support < > USB LED driver support < > Cypress CY7C63xxx USB driver support < > Cypress USB thermometer driver support < > Siemens ID USB Mouse Fingerprint sensor support < > Elan PCMCIA CardBus Adapter USB Client < > Apple Cinema Display support < > USB LD driver < > PlayStation 2 Trance Vibrator driver support < > IO Warrior driver support < > USB testing driver < > iSight firmware loading support < > USB YUREX driver support < > USB Gadget Support ---- < > Industrial I/O support ---- -----
root@kuro:~/work/buildroot-2017.02.2$ cp output/build/linux-rpi-4.9.y/.config linux_config必要なディレクトリを作成します。
root@kuro:~/work/buildroot-2017.02.2$ mkdir rootfs-overlayコンパイルします。
root@kuro:~/work/buildroot-2017.02.2$ make -j40ビルドが終わったら必要なファイルをコピーするディレクトリを作成します。
root@kuro:~/work/buildroot-2017.02.2$ make -j40 root@kuro:~/work/buildroot-2017.02.2$ cd .. root@kuro:~/work$ mkdir image root@kuro:~/work$ cd image/コピーします。
cp ../buildroot-2017.02.2/output/images/zImage . cp ../buildroot-2017.02.2/output/images/bcm2708-rpi-b-plus.dtb . cp -r ../buildroot-2017.02.2/output/images/rpi-firmware/* . cp ../buildroot-2017.02.2/output/images/rootfs.romfs .設定ファイルを編集します。
root@kuro:~/work/image$ vi cmdline.txt ----- console=ttyAMA0,115200 ----- root@kuro:~/work/image$ vi config.txt ----- kernel=zImage #initramfs rootfs.cpio.gz disable_overscan=1 # gpu_mem_256=100 # gpu_mem_512=100 # gpu_mem_1024=100
ファイルをwindowsへもっていき(WinScpなど)FATでフォーマットしたSDカードにファイルをコピーしておしまいです。
ケース作り(手抜き) [工作]
ダイソーのアクリル板でケースを作ろうとしたのですが、3mm以上の穴をあけようとするとひび割れしてうまくいきませんでした。板の厚みが薄いのがいけないのか、それとも加工の方法がまずいのかわからないので、東急ハンズで3mmのアクリル板に加工してもらいました。
きれいにできたのですが、やっぱりお高いですね。。。。
きれいにできたのですが、やっぱりお高いですね。。。。