2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Jetson Orin Nano JetPack 5.1.1 (L4T 35.3.1) のカーネルビルド

Last updated at Posted at 2023-07-02

はじめに

Jetson Orin NanoでMIDIデバイスをサポートするため、JetPack5.1.1でカーネルビルドを行ってみました。

前提条件

SDカードは64GB以上を使用する必要があります。(32GBではカーネルビルド途中で容量が不足しました。)

buildKernelAndModulesツール

JetsonHacksのbuildKernelAndModulesツールはJetPack5.0.2(L4T 35.1.0)までしか対応していないため、ファイルを修正する必要があります。

  • scripts/jetson_variables
  • scripts/getKernelSources.sh

カーネルソースのリンクはこちらです。

image_000.jpg

修正済のファイルをこちらに置きました。

事前準備

ビルドを開始すると、OpenSSLライブラリのヘッダーファイルが見つからないというエラーが出力されるため、OpenSSLライブラリをインストールします。

scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
   21 | #include <openssl/bio.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
  HOSTCC  scripts/genksyms/lex.lex.o
make[1]: *** [scripts/Makefile.host:95: scripts/extract-cert] Error 1
make[1]: *** Waiting for unfinished jobs....
scripts/sign-file.c:25:10: fatal error: openssl/opensslv.h: No such file or directory
   25 | #include <openssl/opensslv.h>
      |          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.host:95: scripts/sign-file] Error 1
  HOSTLD  scripts/genksyms/genksyms
make: *** [Makefile:1231: scripts] Error 2
sudo apt install libssl-dev

buildKernelAndModulesツールのダウンロード

git clone https://github.com/kitazaki/buildKernelAndModules/

本家のGitレポジトリはこちら。(プルリクがマージされたら)

git clone https://github.com/JetsonHacksNano/buildKernelAndModules

カーネルソースのダウンロード

cd buildKernelAndModules/
./getKernelSources.sh

カーネルコンフィグの編集

editConfig.shコマンドを使用してCUIでカーネルコンフィグを編集します。

./editConfig.sh

編集する箇所はこちら。

Device Driversを選択します。

image_001.jpg

Sound card supportを選択します。

image_002.jpg

Advanced Linux Sound Architectureを選択します。

image_005.jpg

Enable OSS EmulationとSequencer supportにチェックを入れます。

image_003.jpg

カーネルビルド

$ ./makeKernel.sh 

掛かった時間

real 25m18.119s
user 89m49.725s
sys 11m20.079s

モジュールのビルド

$ ./makeModules.sh

掛かった時間

real 41m19.982s
user 132m49.617s
sys 18m8.147s

イメージのコピー

$ ./copyImage.sh

再起動

$ sudo reboot

動作確認1

MIDIデバイス(NSX-39)をUSBに接続し、認識されることを確認します。

sudo dmesg

[ 1309.416077] usb 1-2.1: new high-speed USB device number 11 using tegra-xusb
[ 1309.518167] usb 1-2.1: config 1 interface 1 altsetting 0 bulk endpoint 0x2 has invalid maxpacket 64
[ 1309.527554] usb 1-2.1: config 1 interface 1 altsetting 0 bulk endpoint 0x81 has invalid maxpacket 64
[ 1309.538907] usb 1-2.1: New USB device found, idVendor=1b3f, idProduct=8001, bcdDevice= 1.00
[ 1309.538913] usb 1-2.1: New USB device strings: Mfr=1, Product=1, SerialNumber=1
[ 1309.538918] usb 1-2.1: Product: NSX-39 
[ 1309.538923] usb 1-2.1: Manufacturer: NSX-39 
[ 1309.538927] usb 1-2.1: SerialNumber: NSX-39

aplaymidiコマンドでリストにデバイスが表示されることを確認します。

aplaymidi -l

 Port    Client name                      Port name
 14:0    Midi Through                     Midi Through Port-0
 16:0    NSX-39                           NSX-39 MIDI 1

サンプルのMIDIファイルを再生して、音が鳴ることを確認します。

aplaymidi -p 16:0 sample.mid

動作確認2

書籍「Jetson Nano 超入門」の Part 6-3 のサンプルスクリプトを実行するとエラーが出力されます。

wget https://raw.githubusercontent.com/karaage0703/jetson-nano-tools/master/scripts/pocket_miku_test.py

sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev libfreetype6-dev libjpeg-dev libportmidi-dev python3-pip

sudo -H pip3 install pygame

python3 pocket_miku_test.py
pygame 2.5.0 (SDL 2.28.0, Python 3.8.10)
Hello from the pygame community. https://www.pygame.org/contribute.html
ALSA lib conf.c:4555:(snd_config_update_r) Cannot access file /usr/local/share/alsa/alsa.conf
ALSA lib seq.c:935:(snd_seq_open_noupdate) Unknown SEQ default
Traceback (most recent call last):
  File "pocket_miku_test.py", line 49, in <module>
    main()
  File "pocket_miku_test.py", line 20, in main
    midiOutput.set_instrument(instrument)
UnboundLocalError: local variable 'midiOutput' referenced before assignment

pygame 2.5.0 (SDL 2.28.0, Python 3.8.10)
Hello from the pygame community. https://www.pygame.org/contribute.html
ALSA lib conf.c:4004:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so (/usr/local/lib/alsa-lib/libasound_module_conf_pulse.so: cannot open shared object file: No such file or directory)
ALSA lib seq.c:935:(snd_seq_open_noupdate) Unknown SEQ default
Traceback (most recent call last):
  File "pocket_miku_test.py", line 49, in <module>
    main()
  File "pocket_miku_test.py", line 20, in main
    midiOutput.set_instrument(instrument)
UnboundLocalError: local variable 'midiOutput' referenced before assignment

ファイルが見つからないため、エラーが出力されています。
シンボリックリンクを作成してエラーを解消します。

sudo ln -s /usr/share/alsa /usr/local/share/

sudo ln -s /usr/lib/aarch64-linux-gnu/alsa-lib /usr/local/lib/

MIDI が鳴ることを確認します。

python3 pocket_miku_test.py
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?