【问题标题】:Bitbake Server does not start on Windows Subsystem for LinuxBitbake Server 无法在适用于 Linux 的 Windows 子系统上启动
【发布时间】:2018-08-28 10:23:21
【问题描述】:

我正在关注 适用于 Linux 的 Windows 子系统上的 Quick Start Guide for Yocto Project

我克隆了所有必要的东西:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
 build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
 xz-utils debianutils iputils-ping libsdl1.2-dev xterm

将存储库克隆到/mnt/c/Users/<myUser>/Yocto 目录中的目录

按照手册中的说明创建了一个分支

 cd poky/ && git checkout tags/yocto_2.4.2 -b poky_2.4.2

并执行文件

 source oe-init-build-env

一旦我执行bitbake core-image-sato 我得到以下错误:

Previous bitbake instance shutting down?, waiting to retry...
Previous bitbake instance shutting down?, waiting to retry...                                                 
NOTE: Retrying server connection... (Traceback (most recent call last):                                                                                                                                     
File "/mnt/c/Users/<user>/Yocto/poky/bitbake/lib/bb/main.py", 
line 441, in setup_bitbake                                          
server = bb.server.process.BitBakeServer(lock, sockname, configuration, featureset)
File "/mnt/c/Users/<user>/Yocto/poky/bitbake/lib/bb/server/process.py", 
line 385, in __init__                                                                                                      
self.sock.bind(os.path.basename(sockname)) 
PermissionError: [Errno 1] Operation not permitted 
                                                                                                                                               )                                                                                                                                                                                                         
WARNING: /mnt/c/Users/des/Development/Yocto/poky/bitbake/lib/bb/main.py:476:
 ResourceWarning: unclosed <socket.socket fd=14, 
family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0>            
logger.info("Retrying server connection... (%s)" % traceback.format_exc())                                                                                                                                                                                                                                                                                                                                        
NOTE: Reconnecting to bitbake server...                                                                                                                                                                   
NOTE: Retrying server connection...                                                                                                                                                                       
ERROR: Unable to connect to bitbake server, or start one                                                                                                                                                  

我偶然发现了来自 WSL 问题跟踪器的一些 GitHub 问题,这可能与 inotify 有关。

我无法弄清楚这里出了什么问题以及错误真正与哪个套接字有关?

【问题讨论】:

  • 您对此有进一步了解吗?尝试了相同的结果;-)
  • 我认为这行不通。您可以将 docker 与 windows 一起使用,并为 yocto 拉取 docker 映像。 WSL 不适用于 Yocto

标签: python yocto bitbake windows-subsystem-for-linux


【解决方案1】:

我也遇到了同样的问题,我猜你的 bitbake 的路径不在根 linux 文件系统中。我在 bitbake lib 目录行 ~ 436 中编辑了文件 main.py 以更改为 sockpath = "/tmp/bitbake.sock" 并克服了这个问题。接下来你要期待的是 bitbake 不喜欢不区分大小写的文件系统。

【讨论】:

    【解决方案2】:

    我也试过这个并且在从 /mnt/c/../poky/build 位置构建时遇到了同样的问题。从 Win 版本开始。 1803 Build#17134.1 我似乎无法从 widows 目录获取 pyinotify 和 bitbake 脚本。

    但是当在 WSL 目录结构中时 bitbake 在 WSL 中工作,我只是在什么时候这样做

    cp -a -r /mnt/c/linux/. ~/

    但这是一个错误,因为我已经尝试编译并且刚刚将我的符号链接复制到了一个新位置。

    我已将 mc (Midnight Commander) 添加到我的 WSL,因为我懒得每次都输入所有内容并使用 mcedit 作为我的默认编辑器,因为它具有语法突出显示、鼠标、转到行、搜索支持等等(但重点是习惯您选择的终端编辑器)。由于前面提到的复制路径错误,我的第一次运行完成时出错,但在仔细检查日志并重置我的链接后,我将再次编译(更多内容)。

     ### Shell environment set up for builds. ###
    
    You can now run 'bitbake <target>'
    
    Common targets are:
        core-image-minimal
        core-image-sato
        meta-toolchain
        meta-ide-support
    
    You can also run generated qemu images with a command like 'runqemu qemux86'
    ~/poky/build $ (wsl-test-yocto-2.5) bitbake core-image-sato
    Parsing recipes: 100% |##################################################################################################| Time: 0:00:26
    Parsing of 814 .bb files complete (0 cached, 814 parsed). 1282 targets, 46 skipped, 0 masked, 0 errors.
    NOTE: Resolving any missing task queue dependencies
    
    Build Configuration:
    BB_VERSION           = "1.37.0"
    BUILD_SYS            = "x86_64-linux"
    NATIVELSBSTRING      = "ubuntu-16.04"
    TARGET_SYS           = "i586-poky-linux"
    MACHINE              = "qemux86"
    DISTRO               = "poky"
    DISTRO_VERSION       = "2.5"
    TUNE_FEATURES        = "m32 i586"
    TARGET_FPU           = ""
    meta
    meta-poky
    meta-yocto-bsp       = "wsl-test-yocto-2.5:da3625c52e1ab8985fba4fc3d133edf92142f182"
    
    NOTE: Fetching uninative binary shim from http://downloads.yoctoproject.org/releases/uninative/1.9/x86_64-nativesdk-libc.tar.bz2;sha256sum=c26622a1f27dbf5b25de986b11584b5c5b2f322d9eb367f705a744f58a5561ec
    WARNING: The Linux kernel on your build host was not configured to provide process I/O statistics. (CONFIG_TASK_IO_ACCOUNTING is not set)
    Initialising tasks: 100% |###############################################################################################| Time: 0:00:05
    Checking sstate mirror object availability: 100% |#######################################################################| Time: 0:01:00
    NOTE: Executing SetScene Tasks
    Currently  6 running tasks (1111 of 2266)  48% |##########################################                                             |
    0: nettle-3.4-r0 do_populate_lic_setscene (pid 8617) 100% |####################################################################| 1012K/s
    1: mpfr-native-3.1.5-r0 do_populate_lic_setscene (pid 8614) 100% |##############################################################| 970K/s
    2: grep-3.1-r0 do_populate_lic_setscene (pid 8637) 100% |######################################################################| 1.54M/s
    

    【讨论】:

    • 所以意思是说cp -a -r /mnt/c/linux. ~/ 在我下载 Poky 之前应该可以解决问题?
    • 不,我根本不建议这样做。如果您还没有下载 poky,也不确定要复制什么。我是说如果您在 Linux 目录中,从 WSL 中运行 bitbake 似乎可以工作。这意味着您将无法使用 Windows 应用程序进行编辑。我会坚持使用“git clone git://git.yoctoproject.org/poky”从你的主目录(~/)克隆到 pocky
    • 更新想补充一点,在解决了see this wsl issues list on githubpython manual page about os paths 的权限问题后,我最终能够编译演示/教程 poky bitbake。 烘烤花了 9 个小时!! --> 我喜欢 wsl 团队正在做的事情,并认为这令人难以置信,但是(我的设置完全失败)它似乎还没有为 Linux 生产任务做好准备。在同一台机器上构建(Linux 双启动)47 分钟!
    【解决方案3】:

    首先,您可以在适用于 Linux 的 Windows 子系统上试用 Yocto!你是一个勇敢的人。

    您遇到的问题可能与文件系统有关。

    试图创建的套接字是bitbake.sock,在lib/bb/main.py 中引用。这几乎是 bitbake 做的第一件事,所以如果它不能绑定到那个套接字,服务器就不会启动。

    我应该提一下,您可能看到了一条警告,表明您没有使用“受支持的发行版”。尽管如此,看到有人尝试这个想法还是很有趣的。

    对于严肃的开发,我建议在 WSL 足够成熟以支持像 bitbake 这样复杂的应用程序之前使用虚拟化。

    如果您有兴趣为 Yocto 项目做出贡献并让 bitbake 在任何平台上工作,请查看newcomers page,在bugzilla 中提交功能请求,并加入我们的monthly technical call。该项目总是对使用令人兴奋的新技术感兴趣,并且总是欢迎补丁。

    【讨论】:

    • 但是this WSL Issue 说有人也在 WSL 上使用 yocto。而且我不是only one
    • 当然,很多人都在尝试,但目前没有人支持。您的目标是在 WSL 上支持 Yocto 还是只是构建并完成?如果您想帮助支持 WSL,那就太棒了。如果你只是想做一个构建,我推荐虚拟化。
    • 我想试一试。我有一台 强大的 笔记本电脑,想用 WSL 和 Yocto 试一试。但是我怎样才能一起为 WSL 和 Yocto 做出贡献呢?
    • 查看我的帖子以获取贡献。已经努力让 docker 工作 (CROPS),但我不相信任何团队已经加紧让 WSL 工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2019-06-07
    • 2017-12-14
    • 1970-01-01
    • 2016-07-27
    • 2017-02-26
    • 2019-07-03
    相关资源
    最近更新 更多