混合模式

Embedded 需求背景

  • yocto packages太少了,所以用epkg install (converted rpms/debs from other server os)
  • 但epkg的环境依赖自包含机制对磁盘空间需求大,希望优化一下,不要严格自包含,复用一些hostos上的命令和库
  • 引入兼容性风险,不推荐普通用户/场景使用

possible combinations

  • hostos base commands + env extra commands
  • hostos libc + env ELF lib/app

hostos one-time setup

  • bind mount /usr to /opt/host-usr (necessary since elf-loader will mount-and-hide original /usr)

epkg install

  • Set(env_packages_to_install) -= Set(hostos_installed_packages) & Set(whitelist_packages)
  • hostos_installed_packages =
    • 对rpm/deb系统,直接查询hostos里的rpm/dpkg命令就可以拿到hostos里已安装的包和版本
    • 对yocto,应该也可以查某个系统命令或者数据库文件
  • whitelist_packages =
    • libc (if env version <= hostos version)
    • coreutils
    • bash
    • other known stable packages
  • add symlinks $env/usr/** => /opt/host-usr/** (in addition to $env/usr/** => $storepath/**)