我在 Raspberry Pi 4 上有 Ubuntu 20.04 64 位
。CPU 架构是ARM64。
我可以以某种方式轻松使用 Canonical LivePatch 吗?
我正在尝试使 nVidia Jetson Nano 开发板与似乎通过专有协议运行的 USB 摄像头一起工作,因为 OpenCV 4 无法像使用简单的 USB 网络摄像头那样与之交互。我正在使用的相机的文档链接到用于设置相机的 SDK,并附带使用相机的代码示例。我安装了这个 SDK,但由于缺少libpng12.so.0
我相信 libpng12 软件包附带的共享库文件,它无法运行。我做了很多网络搜索,但没有找到专门用于我的设置的 libpng12:该板在 arm64 处理器上使用 Ubuntu 18.04 LTS,但我只能找到用于 amd64 的 libpng12 或用于 16.04 的 arm64 libpng12 库。是否存在用于基于 arm64 的 Ubuntu 18.04 LTS 的 libpng12,如果存在,我该如何安装它?
Debootstrap for foreign arm64 architecture 命令无法解决通常存在于 amd64 上的依赖关系。我运行以下命令:
debootstrap --arch arm64 --foreign --include=libasound2,libaudit1,libbsd0,libc6,libcairo2,libdatrie1,libdrm2,libegl1,libevdev2,libexpat1,libffi6,libfontconfig1,libgbm1,libgcc1,libgles2,libglib2.0-0,libglvnd0,libgstreamer-plugins-bad1.0-0,libgstreamer-plugins-base1.0-0,libgstreamer1.0-0,libharfbuzz0b,libinput10,libjpeg-turbo8,libpam0g,libpango-1.0-0,libpangocairo-1.0-0,libpangoft2-1.0-0,libpcre3,libpixman-1-0,libpng16-16,libstdc++6,libudev1,libunwind8,libwayland-client0,libwayland-cursor0,libwayland-egl1,libwayland-server0,libx11-6,libxau6,libxcb1,libxdmcp6,libxext6,libxkbcommon0,libxrender1,python3,zlib1g,kmod,htop --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg focal build/rootfs
我得到的错误是E: Couldn't find these debs: libgcc1 libgstreamer-plugins-bad1.0-0 libffi6
当我运行apt-get install --simulate libgcc1:arm64
该包时,确实没有找到。amd64
版本存在。
NVIDIA LT4 支持包需要这些包。有谁知道我怎样才能正确地为 debootstrap 提供所有包含的依赖项?
我在 ubuntu 20.04 amd64 上构建了外部文件系统。国外系统是ubuntu 20.04 arm64。
docker run -it ubuntu:20.04 cat /etc/apt/sources.list | grep '^deb '
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ focal universe
deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
deb http://archive.ubuntu.com/ubuntu/ focal multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
deb http://security.ubuntu.com/ubuntu/ focal-security universe
deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
该包存在arm64
但无法通过 找到apt install
。
https://packages.ubuntu.com/focal/libgcc1
我正在尝试在 Docker 容器(运行 Ubuntu 20.04 x64)内构建自定义 NVIDIA Jetson Nano 映像(aarch64 架构)。我跳过了 NVIDIA 工具部分,因为在创建证明时我被困在第一部分。我正在使用以下命令:
apt-get update
apt-get install --no-install-recommends -q -y ca-certificates curl dialog apt-utils bzip2 python gdisk binfmt-support qemu qemu-user-static debootstrap
mkdir -p rootfs
qemu-debootstrap --arch=arm64 --variant=minbase --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg focal rootfs
我也试过
debootstrap --arch=arm64 --foreign --variant=minbase --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg focal rootfs
chroot rootfs qemu-aarch64-static /bin/bash -c '/debootstrap/debootstrap --second-stage'
但是在使用 GitLab CI 执行此操作时,我总是会收到以下错误。
I: Running command: chroot test /debootstrap/debootstrap --second-stage
chroot: failed to run command '/debootstrap/debootstrap': Exec format error
ERROR: Job failed: exit code 1
当我在 WSL 甚至本地 Docker 容器中本地运行它时,它可以工作。
我还尝试了 Ubuntu 18.04.4 或完全跳过“自定义 rootfs”部分。但是,无论如何我都需要仿真部分,因为 NVIDIA 工具无论如何都在执行 aarch64 二进制文件。
Installing BSP Debian packages in /builds/richardds/jetson-nano-image/build/rootfs
chroot: failed to run command 'dpkg': Exec format error
ERROR: Job failed: exit code 1
您能否推荐我如何修复它或在 GitLab-CI 环境(运行 Docker 容器)中创建自定义 aarch64 rootfs 的任何其他工作方式?
在 Raspberry Pi 4 上,在 Ubuntu 19 arm64 的香草下载19.10映像上,我尝试启用 Kubernetes 所需的 cgroup 内存失败。
我创造了(因为我不太了解真实的,我认为是第4个)
/boot/cmdline.txt
/boot/firmware/cmdline.txt
/boot/firmware/btcmd.txt
(修改的)/boot/firmware/usercfg.txt
(修改的)
追加:
cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
但徒劳无功。
如果我检查cat /proc/cgroups
cgroup 内存被禁用。
如果我检查cat /proc/cmdline
没有。
我该如何解决?
我的问题是什么
我无法从 ubuntu 存储库安装更新或任何新软件包。软件包列表似乎只包含已安装的软件包,例如
$ apt-cache policy bash
bash:
Installed: 5.0-4ubuntu1
Candidate: 5.0-4ubuntu1
Version table:
*** 5.0-4ubuntu1 100
100 /var/lib/dpkg/status
$ apt search curl
Sorting... Done
Full Text Search... Done
curl/now 7.65.3-1ubuntu3 arm64 [installed,local]
command line tool for transferring data with URL syntax
libcurl3-gnutls/now 7.65.3-1ubuntu3 arm64 [installed,local]
easy-to-use client-side URL transfer library (GnuTLS flavour)
libcurl4/now 7.65.3-1ubuntu3 arm64 [installed,local]
easy-to-use client-side URL transfer library (OpenSSL flavour)
我希望apt-cache policy
显示一条像
500 http://ports.ubuntu.com/ubuntu-ports eoan/main arm64 Packages
就像在任何其他 ubuntu 上一样。该apt search
命令应该输出一长串包。
在这之前我做了什么
我今天从http://cdimage.ubuntu.com/releases/eoan/release/ubuntu-19.10-preinstalled-server-arm64+raspi3.img.xz下载了预装的 19.10 映像并将dd
其编辑到 SD 卡上并启动树莓pi 4b 从它。设备启动正常。然后我想dist-upgrade
在从某个图像安装 ubuntu 系统后像往常一样做一个。
apt update
似乎运行没有任何严重问题:
$ sudo apt update
Hit:1 http://ports.ubuntu.com/ubuntu-ports eoan InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports eoan-updates InRelease
Hit:3 http://ports.ubuntu.com/ubuntu-ports eoan-backports InRelease
Hit:4 http://ports.ubuntu.com/ubuntu-ports eoan-security InRelease
WARNING:root:cannot read /var/lib/command-not-found/commands.db.metadata: Expecting value: line 1 column 1 (char 0)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
那个警告看起来有点奇怪,但当apt update
再次运行时消失了。
紧接着我跑了
$ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
这是第一个表明有些奇怪的迹象,因为通常这些图像并不完全是最新的。
我试图解决这个问题
我尝试了几次这些命令,在做了一些其他更改(设置主机名,将内核参数添加到引导加载程序)后重新启动了系统。还是没有包。
然后我向 apt 添加了另一个存储库,它工作得很好。我可以在其中找到软件包并安装它们。完全没有问题。
但是尝试安装软件包nfs-common
,并且docker.io
找不到。
我在其中查找了包列表文件,/var/cache/apt/list
但找不到该目录。在工作的 18.04 armhf 系统上,该目录也丢失了,所以这似乎没问题。相反/var/cache/apt/pkgcache.bin
,我尝试删除一个文件(sudo rm /var/cache/apt/pkgcache.bin
),但apt update
问题仍然存在。
更多有用信息
我的/etc/apt/sources.list
(为简洁起见已删除评论):
deb http://ports.ubuntu.com/ubuntu-ports eoan main restricted
deb http://ports.ubuntu.com/ubuntu-ports eoan-updates main restricted
deb http://ports.ubuntu.com/ubuntu-ports eoan universe
deb http://ports.ubuntu.com/ubuntu-ports eoan-updates universe
deb http://ports.ubuntu.com/ubuntu-ports eoan multiverse
deb http://ports.ubuntu.com/ubuntu-ports eoan-updates multiverse
deb http://ports.ubuntu.com/ubuntu-ports eoan-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports eoan-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports eoan-security universe
deb http://ports.ubuntu.com/ubuntu-ports eoan-security multiverse
/etc/apt/sources.list.d
是空的。这是图片中的原始文件,我没有修改它。
我在这里不知所措,不知道如何进一步调试。你们中有人知道那个系统出了什么问题吗?
这是我在这个论坛的第一个问题。对不起我的英语不好,如果它不是正确的地方,请告知。
在本论坛中另一个问题的回答之后,我尝试在Termux App for Android上安装 Swift for Ubuntu 19.04:(如何在 Ubuntu 19.04 上安装 Swift?)。
原因是我在飞机上或没有互联网连接时继续离线编译代码。所遵循的步骤如下所示(简而言之):
1- 由于无法为 Ubuntu 19.04 安装 Swift,我按照建议下载了 18.04 版本的文件(swift-4.2-DEVELOPMENT-SNAPSHOT-2018-10-30-a-ubuntu18.04.tar.gz)。
2-提取文件并将文件夹复制到主目录以便在本地运行。
3-使用以下不起作用的命令添加了 Swift 的路径:
$ export PATH="/home/your-username/swift/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-10-30-a-ubuntu18.04/usr/bin:$PATH"
$ source ~/.bashrc
4-然后我在网上进行了修改以编写.bashrc:
$ echo "export PATH=/home/myusername/swift/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-10-30-a-ubuntu18.04/usr/bin:$PATH" >> ~/.bashrc
$ source ~/.bashrc
5-写在 .bashrc 文件末尾的输出是这样的:
export PATH=/home/user-name/swift/swift-4.2-DEVELOPMENT-SNAPSHOT-2018-10-30-a-ubuntu18.04/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
6- 然后我尝试在终端中运行 Swift 并收到以下错误消息:
$ swift
bash: swift: command not found
对我来说,echo 命令似乎附加了 swift-4.2.../usr/bin 路径以及已经在 Ubuntu 的 Termux 中设置的其他 PATH,用冒号分隔,但它不允许我从终端调用 Swift REPL。
请帮忙,谢谢
编辑:我的环境
- Xiaomi Redmi Note 4x - 处理器 64 位 ARMv8-A
Termux 应用程序:
$ uname -a Linux localhost 3.18.31-perf-g653a83a #1 SMP PREEMPT Mon Jan 28 10:05:53 WIB 2019 aarch64 Android
关于 Termux 的 PRoot 包:
包装:根
说明:为非 root 用户模拟 chroot、绑定挂载和 binfmt_misc
主页:https ://proot-me.github.io
https://github.com/proot-me/PRoot
PRoot is a user-space implementation of chroot, mount --bind, and binfmt_misc. This means that users don't need any privileges or setup to do things like using an arbitrary directory as the new root filesystem. The benefits of enabling PRoot include running Linux operating systems in a Termux chroot on an Android smartphone and tablet, and Chromebook.
已安装 Ubuntu 发行版(来源:https ://wiki.termux.com/wiki/Ubuntu ):
root@localhost:~# uname -a Linux localhost 3.18.31-perf-g653a83a #1 SMP PREEMPT Mon Jan 28 10:05:53 WIB 2019 aarch64 aarch64 aarch64 GNU/Linux
root@localhost:~# cat /etc/*-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=19.04 DISTRIB_CODENAME=disco DISTRIB_DESCRIPTION="Ubuntu 19.04" NAME="Ubuntu" VERSION="19.04 (Disco Dingo)" ID=ubuntu ID_LIKE=debian PRETTY_NAME= "Ubuntu 19.04" VERSION_ID="19.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=disco UBUNTU_CODENAME=disco
有没有办法用 Qemu 模拟它?如果是的话,你能指导我吗?
谢谢
我想在qemu中运行 Ubuntu 安装程序。我使用了各自 Ubuntu CD 映像中的内核,并使用 AMD64 架构验证了我的命令行:
$ qemu-system-x86_64 --version
QEMU emulator version 2.5.0 ..
$ isoinfo -R -x "/install/vmlinuz" -i bionic-server-amd64.iso >linux
$ qemu-system-x86_64 -nodefaults -nographic -kernel linux \
-serial stdio -append "console=ttyS0" \
-machine pc -cpu qemu64 -m 1G
[ 0.0000000] Linux version 4.15.0-44-generic ..
但是,当我为 ARM64 架构(不是我的主机架构)尝试同样的事情时:
$ qemu-system-aarch64 --version
QEMU emulator version 2.5.0 ..
$ isoinfo -R -x "/install/vmlinuz" -i bionic-server-arm64.iso >linux
$ qemu-system-aarch64 -nodefaults -nographic -kernel linux \
-serial stdio -append "console=ttyAMA0" \
-machine virt -cpu cortex-a53 -m 1G
我在 100% cpu 使用时得到零输出。我如何确定出了什么问题?
执行-d unimp -D debug.log
显示:
read access to unsupported AArch64 system register op0:3 op1:0 crn:0 crm:7 op2:2