chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Jetson Nano上編譯部署Anbox

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-21 10:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Jetson Nano 2GB是NVIDIA的一款高性價(jià)比嵌入式平臺(tái)。麻雀雖小五臟俱全,戰(zhàn)力強(qiáng)悍,但是惜乎沒有原生Android系統(tǒng)支持。目前想在Jetson平臺(tái)上體驗(yàn)Android,可以使用虛擬機(jī)運(yùn)行Android系統(tǒng),或者使用Anbox這樣的平臺(tái)。Anbox是基于容器開發(fā)的,能夠?yàn)锳ndroid程序提供原生運(yùn)行支持。今天我們來嘗試一下在Jetson Nano上編譯部署Anbox,基本步驟參考NVIDIA論壇上的文章[Anbox on jetson nano],根據(jù)需要稍作調(diào)整。

1. 重新編譯并燒寫Jetson Nano 2GB內(nèi)核

本節(jié)參考L4T Kernel Customization。

Anbox運(yùn)行依賴于bander和ashmem兩個(gè)驅(qū)動(dòng),Jetson Nano 2GB目前最新的內(nèi)核版本是4.9.201,這兩個(gè)驅(qū)動(dòng)已經(jīng)在Jetson Nano的內(nèi)核里了只是默認(rèn)沒有打開。一開始我想嘗試不重新編譯內(nèi)核直接將這兩個(gè)驅(qū)動(dòng)編譯成模塊加載,binder能夠正常加載,ashmem無法加載成功。原因是這兩個(gè)驅(qū)動(dòng)在4.9上不允許單獨(dú)編譯為可加載模塊。也就是說,必須跟kernel源碼整體編譯。保險(xiǎn)起見,我選擇整體重新編譯內(nèi)核,并打開驅(qū)動(dòng)支持,和論壇里的操作保持一致。

1.1 環(huán)境準(zhǔn)備

一塊已經(jīng)燒寫好鏡像,并完成啟動(dòng)初始化的Jetson Nano 2GB設(shè)備,參考Getting Started with Jetson Nano 2GB Developer Kit。

Jetson開發(fā)推薦使用Ubuntu18.04作為開發(fā)機(jī),交叉編譯推薦使用Linaro GCC 7,kernel源代碼可以使用Jetpack提供的腳本通過git獲取,或者手動(dòng)下載,我們這里使用手動(dòng)下載[L4T Driver Package (BSP) Sources]。

# 解壓縮交叉編譯工具鏈
mkdir $HOME/l4t-gcc
cd $HOME/l4t-gcc
tar Jxvf /PATH_TO_DOWNLOADS/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
# 解壓縮L4T BSP源碼包及kernel
mkdir $HOME/l4t-source
cd $HOME/l4t-source
tar jxvf /PATH_TO_DOWNLOADS/public_sources.tbz2
cd Linux_for_Tegra/source/public
tar jxvf kernel_src.tbz2

1.2編譯并燒寫內(nèi)核

在$HOME/l4t-source/Linux_for_Tegra/source/public/kernel/kernel-4.9/arch/arm64/configs/tegra_defconfig文件末尾,增加:

#Anbox Configuration
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDER_IPC_SELFTEST=y
CONFIG_ASHMEM=y

編譯內(nèi)核:

# 配置環(huán)境變量
export CROSS_COMPILE=\
$HOME/l4t-gcc/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
export LOCALVERSION=-tegra-anbox #該環(huán)境變量改變生成的kernel后綴
export KERNEL_SOURCE=\
$HOME/l4t-source/Linux_for_Tegra/source/public/kernel/kernel-4.9
export KERNEL_OUT=$KERNEL_SOURCE/img_out #image output dir
export KERNEL_MODULES_OUT=$KERNEL_SOURCE/mod_out #modules output dir
# 編譯內(nèi)核
cd $TEGRA_KERNEL_SRC_DIR
make -C $KERNEL_SOURCE ARCH=arm64 O=$KERNEL_OUT tegra_defconfig
make -C $KERNEL_SOURCE ARCH=arm64 O=$KERNEL_OUT -j zImage
make -C $KERNEL_SOURCE ARCH=arm64 O=$KERNEL_OUT -j modules
make -C $KERNEL_SOURCE ARCH=arm64 O=$KERNEL_OUT -j dtbs # 
make -C $KERNEL_SOURCE ARCH=arm64 O=$KERNEL_OUT INSTALL_MOD_PATH=$KERNEL_MODULES_OUT modules_install
 

編譯完成后,我們得到內(nèi)核鏡像:$KERNEL_OUT/arch/arm64/boot/Image以及對(duì)應(yīng)的內(nèi)核模塊文件夾:$KERNEL_MODULES_OUT/lib/modules/4.9.201-tegra-anbox。

更新內(nèi)核以及模塊到開發(fā)板:

正常更新內(nèi)核,需要重做根文件系統(tǒng),花費(fèi)時(shí)間比較長。我們這里采用快速驗(yàn)證方案:

準(zhǔn)備好系統(tǒng)的開發(fā)板上電開機(jī),連接好USB線到開發(fā)機(jī),確保開發(fā)機(jī)能通過192.168.55.1地址訪問開發(fā)板。

通過ssh拷貝內(nèi)核鏡像和模塊文件夾到開發(fā)板,至此主機(jī)的操作全部完成,后續(xù)全部在開發(fā)板上操作。備份原始鏡像/boot/Image到/boot/Image.backup:

# 主機(jī)執(zhí)行
scp $KERNEL_OUT/arch/arm64/boot/Image $USER@192.168.55.1:~/
scp -R $KERNEL_MODULES_OUT/lib/modules/4.9.201-tegra-anbox $USER@192.168.55.1:~/
ssh $USER@192.168.55.1 # 登錄開發(fā)板

# 開發(fā)板上執(zhí)行
sudo cp /boot/Image /boot/Image.backup # 備份原始kernel
sudo mv ~/Image /boot/Image # 更新內(nèi)核
sudo mv ~/4.9.201-tegra-anbox /lib/modules/  # 拷貝內(nèi)核模塊
sudo update-initramfs -c -k 4.9.201-tegra-anbox # 更新initramfs
cd /boot/
sudo ln -sf initrd.img-4.9.201-tegra-anbox initrd.img
 

完成以后用編輯/boot/extlinux/extlinux.conf,去掉LABEL backup以及后面的注釋,類似這樣:

TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot

LABEL backup
    MENU LABEL backup kernel
    LINUX /boot/Image.backup
    INITRD /boot/initrd
    APPEND ${cbootargs}
 
更新權(quán)限:
創(chuàng)建 /etc/udev/rules.d/99-anbox.rules文件,內(nèi)容如下:
KERNEL==“ashmem”, NAME="%k", MODE=“0666”
KERNEL==“binder”, NAME="%k", MODE=“0666”
 
然后執(zhí)行:
sudo udevadm control --reload-rules && udevadm trigger

重啟開發(fā)板,確認(rèn)當(dāng)前工作內(nèi)核版本為4.9.201-tegra-anbox,設(shè)備/dev/ashmem和/dev/binder都存在。

2.更新libsdl2

原帖中說18.04(開發(fā)板系統(tǒng)版本)的libsdl2庫有一個(gè)bug,所以需要更新libsdl2。具體是什么問題沒有仔細(xì)去查,這里我們選擇follow這一步操作:

# 安裝依賴包
sudo apt install dot2tex build-essential cmake cmake-data debhelper dbus google-mock libboost-dev libboost-filesystem-dev libboost-log-dev libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libboost-thread-dev libcap-dev libsystemd-dev libegl1-mesa-dev libgles2-mesa-dev libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev lxc-dev pkg-config protobuf-compiler
# 下載libsdl源代碼
mkdr libsdl-source && cd libsdl-source
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/libsdl2/2.0.9+dfsg1-1ubuntu1.19.04.1/libsdl2_2.0.9+dfsg1-1ubuntu1.19.04.1.dsc
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/libsdl2/2.0.9+dfsg1-1ubuntu1.19.04.1/libsdl2_2.0.9+dfsg1-1ubuntu1.19.04.1.debian.tar.xz
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/libsdl2/2.0.9+dfsg1-1ubuntu1.19.04.1/libsdl2_2.0.9+dfsg1.orig.tar.xz
# 編譯deb包
dpkg-source -x libsdl2_2.0.9+dfsg1-1ubuntu1.19.04.1.dsc
cd libsdl2-2.0.9+dfsg1/
dpkg-buildpackage -rfakeroot -b -uc -us
cd ..
# 安裝deb
sudo dpkg -i libsdl2-2.0-0_2.0.9+dfsg1-1ubuntu1.19.04.1_arm64.deb libsdl2-dev_2.0.9+dfsg1-1ubuntu1.19.04.1_arm64.deb libsdl2-doc_2.0.9+dfsg1-1ubuntu1.19.04.1_all.deb

3.編譯安裝Anbox

下載Anbox源代碼,編譯安裝:

git clone https://github.com/HarleyPato/anbox-arm64
mkdir -p anbox-arm64/build && cd anbox-arm64/build
cmake .. && make && sudo make install
sudo cp /usr/local/bin/anbox /usr/bin/

下載Android鏡像:

wget http://anbox.postmarketos.org/android-7.1.2_r39-anbox_arm64-userdebug.img
mv android-7.1.2_r39-anbox_arm64-userdebug.img /var/lib/anbox/android.img

通過Anbox發(fā)布的deb安裝包獲取配置文件:

mkdir anbox-deb && cd anbox-deb
wget http://ports.ubuntu.com/pool/multiverse/a/anbox/anbox_0.0~git20191115-1build1_arm64.deb
ar x anbox_0.0~git20191115-1build1_arm64.deb
tar Jxvf data.tar.xz
sudo cp ./lib/systemd/system/anbox-container-manager.service /lib/systemd/system/
sudo cp ./usr/lib/systemd/user/anbox-session-manager.service /usr/lib/systemd/usr/

在/lib/systemd/system/anbox-container-manager.service文件中注釋掉這兩行:

ExecStartPre=/sbin/modprobe ashmem_linux
ExecStartPre=/sbin/modprobe binder_linux

在/usr/lib/systemd/user/anbox-session-manager.service文件中,ExecStart前添加:

Environment="DISPLAY=:0"

啟動(dòng)Anbox服務(wù):

sudo systemctl unmask anbox-container-manager.service
sudo systemctl start anbox-container-manager.service
sudo systemctl enable anbox-container-manager.service

systemctl --user unmask anbox-session-manager.service
systemctl --user start anbox-session-manager.service
systemctl --user enable anbox-session-manager.service

檢查Anbox狀態(tài):

sudo systemctl status anbox-container-manager.service
systemctl --user status anbox-session-manager.service

結(jié)果應(yīng)該類似下圖:

至此所有安裝均已完成,重啟開發(fā)板,啟動(dòng)Anbox,就能看到Android界面了??梢酝ㄟ^adb install安裝apk到Anbox Android環(huán)境中并運(yùn)行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5186

    文章

    20159

    瀏覽量

    329007
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3986

    瀏覽量

    133089
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    968

    瀏覽量

    30183
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    何在NVIDIA Jetson AGX Thor通過Docker高效部署vLLM推理服務(wù)

    繼系統(tǒng)安裝與環(huán)境配置后,本期我們將繼續(xù)帶大家深入 NVIDIA Jetson AGX Thor 的開發(fā)教程之旅,了解如何在 Jetson AGX Thor ,通過 Docker 高效
    的頭像 發(fā)表于 11-13 14:08 ?3124次閱讀
    如<b class='flag-5'>何在</b>NVIDIA <b class='flag-5'>Jetson</b> AGX Thor<b class='flag-5'>上</b>通過Docker高效<b class='flag-5'>部署</b>vLLM推理服務(wù)

    BPI-AIM7 RK3588 AI與 Nvidia Jetson Nano 生態(tài)系統(tǒng)兼容的低功耗 AI 模塊

    260 針金手指設(shè)計(jì) :機(jī)械Jetson Nano 載板 100% 兼容,可重復(fù)使用現(xiàn)有硬件投資。 PCIe 3.0 x4高速通道 :支持外部AI加速器(例如TensorRT加速器)。 3.
    發(fā)表于 10-11 09:08

    BPI-AIM7 RK3588 AI與 Nvidia Jetson Nano 生態(tài)系統(tǒng)兼容的低功耗 AI 模塊

    。它是開源硬件,我們已在線發(fā)布設(shè)計(jì)文檔,包括原理圖和接口定義。其異構(gòu)計(jì)算架構(gòu)兼容 NVIDIA Jetson Nano 接口標(biāo)準(zhǔn),非常適合邊緣計(jì)算、AI 推理、VR/AR、智能 NVR 系統(tǒng)以及通用
    的頭像 發(fā)表于 10-11 09:06 ?560次閱讀
    BPI-AIM7 RK3588 AI與 Nvidia <b class='flag-5'>Jetson</b> <b class='flag-5'>Nano</b> 生態(tài)系統(tǒng)兼容的低功耗 AI 模塊

    NVIDIA Jetson + Isaac SDK 人形機(jī)器人方案全面解析

    (TOPS) 工作功耗 適用場(chǎng)景 Jetson Nano 128-core Maxwell Quad A57 0.5 5~10W 教育型、初級(jí)移動(dòng)機(jī)器人 Jetson Xavier NX 384-core
    的頭像 發(fā)表于 07-30 16:12 ?1861次閱讀

    Jetson平臺(tái)核心組件BOM清單概覽

    的接口芯片。對(duì)于開發(fā)者和系統(tǒng)集成商而言,了解這些關(guān)鍵組件的構(gòu)成,對(duì)于產(chǎn)品選型、硬件設(shè)計(jì)和成本控制至關(guān)重要。 以下我們將根據(jù)公開的資料和設(shè)計(jì)文檔,對(duì)主流的Jetson平臺(tái)產(chǎn)品(Jetson Nano
    的頭像 發(fā)表于 07-30 16:11 ?2459次閱讀

    NVIDIA Jetson + Isaac SDK 在人形機(jī)器人領(lǐng)域的方案詳解

    組件 描述 硬件平臺(tái)(Jetson系列) 面向邊緣AI和機(jī)器人開發(fā)的SoC模塊,搭載GPU + ARM CPU,支持多種傳感器和AI模型部署 軟件平臺(tái)(Isaac SDK / Isaac Sim) 用于
    的頭像 發(fā)表于 07-30 16:05 ?3147次閱讀

    Arm方案 基于Arm架構(gòu)的邊緣側(cè)設(shè)備(樹莓派或 NVIDIA Jetson Nano)上部署PyTorch模型

    本文將為你展示如何在樹莓派或 NVIDIA Jetson Nano 等基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備上部署 PyTorch 模型。
    的頭像 發(fā)表于 07-28 11:50 ?2511次閱讀

    【經(jīng)驗(yàn)分享】在Omni3576編譯Redis-8.0.2源碼,并安裝及性能測(cè)試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在
    的頭像 發(fā)表于 06-05 08:05 ?773次閱讀
    【經(jīng)驗(yàn)分享】在Omni3576<b class='flag-5'>上</b><b class='flag-5'>編譯</b>Redis-8.0.2源碼,并安裝及性能測(cè)試

    Made with KiCad(126):Antmicro OV5640 雙攝像頭子板

    Jetson Nano、Jetson TX2 NX、Jetson Xavier NX 系統(tǒng)模塊的 Jetson
    發(fā)表于 05-12 18:13

    何在CentOS系統(tǒng)中部署ELK日志分析系統(tǒng)

    功能,使用戶能夠快速獲取關(guān)鍵業(yè)務(wù)洞察。本文將詳細(xì)介紹如何在 CentOS 系統(tǒng)中部署 ELK 日志分析系統(tǒng),
    的頭像 發(fā)表于 05-08 11:47 ?801次閱讀
    如<b class='flag-5'>何在</b>CentOS系統(tǒng)中<b class='flag-5'>部署</b>ELK日志分析系統(tǒng)

    RK3576 yolov8訓(xùn)練部署教程

    本章展示yolov8模型的在EASY EAI Orin nano部署過程。
    的頭像 發(fā)表于 04-02 16:04 ?1584次閱讀
    RK3576 yolov8訓(xùn)練<b class='flag-5'>部署</b>教程

    何在RAKsmart服務(wù)器實(shí)現(xiàn)企業(yè)AI模型部署

    AI模型的訓(xùn)練與部署需要強(qiáng)大的算力支持、穩(wěn)定的網(wǎng)絡(luò)環(huán)境和專業(yè)的技術(shù)管理。RAKsmart作為全球領(lǐng)先的服務(wù)器托管與云計(jì)算服務(wù)提供商,已成為企業(yè)部署AI模型的理想選擇。那么,如何在RAKsmart服務(wù)器
    的頭像 發(fā)表于 03-27 09:46 ?766次閱讀

    何在RakSmart服務(wù)器用Linux系統(tǒng)部署DeepSeek

    Linux系統(tǒng) DeepSeek 部署方案,結(jié)合RakSmart 服務(wù)器硬件推薦及多場(chǎng)景適配建議,主機(jī)推薦小編為您整理發(fā)布如何在RakSmart服務(wù)器用Linux系統(tǒng)部DeepSeek。
    的頭像 發(fā)表于 03-14 11:53 ?629次閱讀

    研華NVIDIA Jetson Orin Nano系統(tǒng)支持Super Mode

    提升生成式AI性能1.7倍 2025年春季— 研華科技,作為全球工業(yè)嵌入式 AI 解決方案供應(yīng)商,宣布推出搭載NVIDIA Jetson Orin Nano 8GB系統(tǒng)模塊的AI邊緣運(yùn)算系統(tǒng)
    發(fā)表于 03-10 14:07 ?632次閱讀
    研華NVIDIA <b class='flag-5'>Jetson</b> Orin <b class='flag-5'>Nano</b>系統(tǒng)支持Super Mode

    NVIDIA發(fā)布小巧高性價(jià)比的Jetson Orin Nano Super開發(fā)者套件

    NVIDIA近期推出了一款全新的生成式AI超級(jí)計(jì)算機(jī)——Jetson Orin Nano Super開發(fā)者套件。這款開發(fā)者套件以其小巧的尺寸和高性價(jià)比吸引了廣泛關(guān)注。 Jetson Orin
    的頭像 發(fā)表于 12-19 11:28 ?1469次閱讀