Jetson Nano JetPack 4.6.1 (L4T 32.7.1) のカーネルビルド

# はじめに

JetsonHacksの<a href="https://github.com/JetsonHacksNano/buildKernelAndModules">buildKernelAndModules</a>ツールはJetPack4.6(L4T 32.6.1)までしか対応していないため、スクリプトを一部修正してJetPack4.6.1でカーネルビルドを行ってみました。

# 1. buildKernelAndModulesツールのダウンロード

```bash
$ git clone https://github.com/JetsonHacksNano/buildKernelAndModules
```

# 2. スクリプトの修正

```bash
$ cd buildKernelAndModules/
```

scriptsディレクトリのgetKernelSources.shとjetson_variablesを修正します。

```bash:scripts/getKernelSources.sh
# Table of the URLs to Kernel Sources for Jetson Nano, Nano 2GB and TX1
# L4T Driver Package [BSP] Sources - Code 210
declare -A source_url_list_210=( 
  ["32.7.1"]="https://developer.nvidia.com/embedded/l4t/r32_release_v7.1/sources/t210/public_sources.tbz2"　　　　　←追加
  ["32.6.1"]="https://developer.nvidia.com/embedded/l4t/r32_release_v6.1/sources/t210/public_sources.tbz2"
  ["32.5.2"]="https://developer.nvidia.com/embedded/l4t/r32_release_v5.2/sources/t210/public_sources.tbz2"
  ["32.5.1"]="https://developer.nvidia.com/embedded/l4t/r32_release_v5.1/r32_release_v5.1/sources/t210/public_sources.tbz2"
```

```bash:scripts/getKernelSources.sh
   "t210ref" ) 
     SOURCE_URL=${source_url_list_186[$JETSON_L4T]}
　　　↓（修正）
     SOURCE_URL=${source_url_list_210[$JETSON_L4T]}
```


```bash:scripts/jetson_variables
    case $JETSON_L4T in
        "32.7.1") JETSON_JETPACK="4.6.1" ;;　　　　　←追加
        "32.6.1") JETSON_JETPACK="4.6" ;;
        "32.5.1") JETSON_JETPACK="4.5.1" ;;
        "32.5.0" | "32.5") JETSON_JETPACK="4.5" ;;
```

https://github.com/kitazaki/buildKernelAndModules

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

```bash
$ cd buildKernelAndModules/
$ ./getKernelSources.sh
```

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

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

```bash
$ ./editConfig.sh
```

## Framebuffer Driver (fbtft_driver) を有効化する場合

場所は
Linux Kernel Configuration
　└─> Device Drivers
　　└─> Staging drivers
　　　└─> Support for small TFT LCD display modules

![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/4a824d48-6943-6a49-04a7-76b2fff5b2f3.jpeg)

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/145c7d0b-7763-01c4-af1c-7e8958f609a4.jpeg)

## MIDIを有効化する場合

場所は
Linux Kernel Configuration
　└─> Device Drivers
　　└─> Sound card support
　　　└─> Advanced Linux Sound Architecture
　　　　└─> Generic sound devices 
　　　　└─> USB sound devices

![Device_Drivers.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/855a5cdb-0c20-91e4-c52e-93b0467e13ce.jpeg)

![sound.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7e06a147-552d-fb1f-caf6-0e99eae45213.jpeg)

![advanced.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/51876095-ead3-d03c-583d-d6eb0861037a.jpeg)

![general.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/3c74c799-f5c0-61e3-7026-3f41cfb1d056.jpeg)

![USB_sound_devices.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/e0e03380-755a-bf5c-0d24-fecb02e6915f.jpeg)

# 5. カーネルビルド

```bash
$ ./makeKernel.sh 
```

### 掛かった時間

```bash
real	30m37.182s
user	76m53.952s
sys	7m37.456s
```

# 6. モジュールのビルド

```bash
$ ./makeModules.sh
```

### 掛かった時間

```bash
real	44m15.801s
user	113m15.636s
sys	12m10.092s
```

# 7. イメージのコピー

```bash
$ ./copyImage.sh
```

# 8. 再起動

```bash
$ sudo reboot
```

# (参考)

https://qiita.com/kitazaki/items/5fc6b2e8df2bfe03e9b5

https://qiita.com/kitazaki/items/fe3b2446a434da52551e

https://qiita.com/kitazaki/items/b1870b8836dc369f8ae8

https://qiita.com/kitazaki/items/95d09498244171cfe5d9