标签: yocto

安装命令中的 ${D} 变量

我已经看到在多个 yocto 配方中使用了以下安装命令

install -d ${D}${libdir}
Run Code Online (Sandbox Code Playgroud)

我知道 install 命令及其用途,但是我无法理解 ${D} 变量的用途,因为它通常没有在配方中定义。有人可以解释这个shell变量的用途吗?

compiling yocto

14
推荐指数
2
解决办法
1万
查看次数

如何判断我使用的是哪个设备树 blob(dtb 文件)?

我正在使用 TS-4900,这是一个插入基板的嵌入式“计算机模块”,运行 Yocto Linux。它使用 U-Boot 启动,据说它会根据底板的型号选择正确的 dtb 文件来启动,如果它无法找到正确的文件,它可能会回退到我的模块的“通用”文件。

但是它如何/在哪里确定正确的?我如何知道使用了哪个 .dtb,或者设置应该使用哪个?

下面是 U-Boot 的启动信息。

U-Boot 2014.10-g3ac6ec3 (Jan 29 2015 - 17:20:15)

CPU:   Freescale i.MX6SOLO rev1.1 at 792 MHz
Reset cause: POR
Board: TS-4900
Revision: C
       Watchdog enabled
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
SF: Detected N25Q64 with page size 256 Bytes, erase size 4 KiB, total 8 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   using phy at 7 …
Run Code Online (Sandbox Code Playgroud)

u-boot yocto device-tree

11
推荐指数
2
解决办法
4万
查看次数

无法执行“Hello, World!” C 程序的用户不是“root”

我写了一篇《你好,世界!》myCFile.cDebian 操作系统 x86 嵌入式板上的C 文件。

#include <stdio.h>
int main()
{
  printf("hello\n")
}
Run Code Online (Sandbox Code Playgroud)

我编译程序:gcc myCFile.c

然而,

tester@localhost:~/test$ ./a.out
-bash: ./a.out: Permission denied
tester@localhost:~/pravin$ ls -lrt
total 44
-rwxrwxrwx 1 tester test   54 Sep  7 07:33 myCFile.c
-rwxrwxrwx 1 tester test   16608 Sep  7 07:33 a.out
Run Code Online (Sandbox Code Playgroud)

但是,如果我复制a.out/run/user/1000,我可以执行它。

tester@localhost:/run/user/1000$ ls
a.out  bus  gnupg  systemd
Run Code Online (Sandbox Code Playgroud)

另外,当我用root用户编译C文件并执行它时,我可以执行它。我可以执行它。

root@localhost:~# gcc myCFile.c
root@localhost:~# ./a.out
hello
root@localhost:~#
Run Code Online (Sandbox Code Playgroud)

是不是跟NOEXEC国旗有关系?

我的/etc/fstab文件:

# Begin /etc/fstab
/dev/root    /        ext4        defaults …
Run Code Online (Sandbox Code Playgroud)

filesystems permissions gcc yocto

10
推荐指数
1
解决办法
2462
查看次数

打开:cryptsetup 内存不足(“没有足够的可用内存来打开密钥槽。”)

我正在开发 yocto 发行版,包括 2.3.2 版本中的 cryptsetup

我在具有 1 GB RAM 的主板上运行此类发行版,在尝试打开无法正确调试的加密分区时遇到“内存不足”错误。有任何想法吗?

我的发行版从具有 3 个分区的 mSD 运行;第三个 (30 MB) 是加密的。

我使用ArchLinux 指南中描述的步骤来加密该分区,使用 ext3 而不是 ext4

# cryptsetup -y -v luksFormat /dev/sda2
# cryptsetup open /dev/sda2 cryptroot
# mkfs.ext3 /dev/mapper/cryptroot
Run Code Online (Sandbox Code Playgroud)

但尝试在我的主板上打开该分区会引发错误:

cryptsetup --debug open /dev/mmcblk0p3  cryptroot
# cryptsetup 2.3.2 processing "cryptsetup --debug open /dev/mmcblk0p3 cryptroot"
# Running command open.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating context for crypt device /dev/mmcblk0p3.
# Trying …
Run Code Online (Sandbox Code Playgroud)

encryption luks cryptsetup yocto

8
推荐指数
2
解决办法
5295
查看次数

用于为用户启用 sudo 的 /etc/sudoers 与 /etc/sudoers.d/ 文件

我正在使用 Yocto 为电路板构建图像。我已禁用该root用户。我正在添加一个新用户,可以说adminuser1。在我看来,adminuser1作为管理员有两种选择。

  • 添加adminuser1到 /etc/sudoers 中的 sudoers
  • 创建一个新文件/etc/sudoers.d/0001_admin1并添加一行adminuser1 ALL=(ALL) ALL

默认/etc/sudoerssudo组评论# %sudo ALL=(ALL) ALL

我试图了解哪种方法在安全方面是更好的方法:

  • 我是否应该添加adminuser1sudo组并取消注释# %sudo ALL=(ALL) ALLin/etc/sudoers
  • /etc/sudoers.d/0001_admin1adminuser1 ALL=(ALL) ALL在文件中添加和添加。

sudo yocto

7
推荐指数
1
解决办法
2万
查看次数

6
推荐指数
1
解决办法
1182
查看次数

制作一张 SD 卡以启动使用 Yocto 创建的分发映像

我已经成功地使用 Yocto 为我自己编译的 Linux 内核源代码构建了图像。

Yocto 根据:http ://www.crashcourse.ca/wiki/index.php/Yocto_Project_Quick_Start 制作了图像文件

来自上面链接的示例:

$ ls -F  
core-image-minimal-beagleboard-20121120113536.rootfs.jffs2  
core-image-minimal-beagleboard-20121120113536.rootfs.tar.bz2  
core-image-minimal-beagleboard.jffs2@  
core-image-minimal-beagleboard.tar.bz2@  
MLO-beagleboard@  
MLO-beagleboard-1.5.0+git1+9f94c6577e3a018b6b75cbe39f32bb331871f915-r0*
modules-3.4.11-yocto-standard-r4.3-beagleboard.tgz  
README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt  
u-boot-beagleboard.bin@  
u-boot-beagleboard-v2011.06+git6+b1af6f532e0d348b153d5c148369229d24af361a-r3.bin*  
u-boot.bin@  
uImage@  
uImage-3.4.11+git1+a201268353c030d9fafe00f2041976f7437d9386_1+449f7f520350700858f21a555  4b81cc8ad23267d-r4.3-beagleboard-20121120113536.bin  
uImage-beagleboard.bin@  
x-load-beagleboard-1.5.0+git1+9f94c6577e3a018b6b75cbe39f32bb331871f915-r0.bin.ift*  
x-load-beagleboard.bin.ift@  
$
Run Code Online (Sandbox Code Playgroud)

我如何使用这些图像来制作可以引导 Yocto 制作的 Linux dist 的 SD 卡?分区等?如何使用我的 Yocto 图像?

boot system-installation sd-card yocto

5
推荐指数
1
解决办法
3669
查看次数

无法加载 libGLESv2.so.2: libGLESv2.so.2: 无法打开共享对象文件: 没有这样的文件或目录

为Raspberry Pi 2创建了我自己的 Yocto Linux 发行版(请参阅此处的 Embarcados 教程),添加了meta-browser配方chromium。构建的图像效果很好,我可以运行Chromium,但是......

...当我这样做时,尽管应用程序弹出,但我收到以下错误消息。

raspberrypi2:~$ /usr/bin/chromium/chrome --enable-logging --v=1 --no-sandbox 
[1796:1796:0625/011716:ERROR:browser_main_loop.cc(164)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[1819:1819:0625/011717:ERROR:gl_implementation_osmesa.cc(22)] Failed to load libGL.so.1: libGL.so.1: cannot open shared object file: No such file or directory
[1819:1819:0625/011717:ERROR:gpu_child_thread.cc(145)] Exiting GPU process due to errors during initialization
[1831:1831:0625/011717:ERROR:renderer_main.cc(211)] Running without renderer sandbox
[1837:1837:0625/011717:ERROR:renderer_main.cc(211)] Running without renderer sandbox
Run Code Online (Sandbox Code Playgroud)

当我寻找图书馆时libGL,我得到了这个

root@raspberrypi2:/usr/lib/chromium# find …
Run Code Online (Sandbox Code Playgroud)

opengl chrome yocto

5
推荐指数
0
解决办法
5471
查看次数

bitbake/yocto 中 ?= 和 ??= 的含义

不同的赋值类型在 bitbake 配方脚本中意味着什么,例如:

 BB_NUMBER_THREADS  ?=  "${@oe.utils.cpu_count()}"
 PARALLEL_MAKE  ?=  "-j ${@oe.utils.cpu_count()}"
 MACHINE    ??= "qemux86"
Run Code Online (Sandbox Code Playgroud)

上面的什么类似于 Ruby 的bb_number_threads ||= 'something'

embedded yocto bitbake

5
推荐指数
1
解决办法
8975
查看次数

systemd-journald 持久日志不适用于绑定挂载 /var/log

我正在使用 Yocto 为 SystemD 版本 241 的小型嵌入式 Linux 系统生成自定义映像。根文件系统是只读的。我使用绑定安装和overlayfs 使/var/log/journal 目录存在于单独的读/写分区上。我有一个问题,systemd-journald 得到“Amnesia”并且不记得以前的引导日志,即使它们在持久的读/写文件系统上。这意味着即使日志文件在文件系统上存在且有效,日志也无法访问或清除以前启动时的旧日志文件。

Yocto 易失性绑定

# Setup overlayfs binds for various RW files
VOLATILE_BINDS_append = " \
    /persistent-storage/var/log /var/log\n\
"
Run Code Online (Sandbox Code Playgroud)

路径 /var/log 存在:

root@me:/var/log# cd /var/log/
root@me:/var/log# ls -lrt
total 9
drwxr-xr-x 2 root root            1024 Jun  3 01:50 nginx
-rw-r--r-- 1 root root            5260 Jun  9 17:56 messages
drwxr-sr-x 5 root systemd-journal 1024 Jun  9 18:00 journal
root@me:/var/log# ls -lrt journal/
total 3
drwxr-sr-x 2 root systemd-journal 1024 Jun  9 …
Run Code Online (Sandbox Code Playgroud)

systemd yocto journalctl systemd-journald systemctl

5
推荐指数
1
解决办法
1105
查看次数