Watch 8 Star 26 Fork 15

泰晓科技 / Cloud LabGPL-2.0

"Linux Lab 镜像升级" 项目管理

Open
吴章金 owner  Opened this issue

项目简介

大家好,该项目由泰晓科技技术社区报送到 “暑期2020” 开源活动,详情请查阅:“开源软件供应链点亮计划——暑期2020”项目提案

  1. 项目标题:Linux Lab 镜像升级
  2. 项目描述:Linux Lab 是一个 Linux 内核实验环境,当前已经支持国内外的 7 大主流处理器架构和 16 款开发版。当前环境基于 Ubuntu 14.04,难以适应各类软件新版本的开发需要,本项需求旨在升级当前环境到最新的 Ubuntu 20.04 或者其他更为合适的同时期 Linux 发行版。
  3. 项目难度:高
  4. 项目社区导师:@robin329
  5. 导师联系方式:robin@tinylab.org
  6. 合作导师联系方式:@吴章金 falcon@tinylab.org
  7. 项目产出要求:
    • 构建并发布基于 Ubuntu 20.04 或同时期 Linux 发行版的 Docker 镜像
    • 确保镜像大小不超过 5G
    • 兼容现有 Linux Lab 功能
    • 确保内置工具链能够编译历史版本(比如 v2.4, v2.6)的 Linux 内核
    • 新增更多开发与调试工具
  8. 项目技术要求:
    • 基本的 Linux 命令
    • 熟悉 Makefile 和 Bash
    • 熟悉 Docker 的安装、使用与镜像制作
    • 熟练使用 Linux Lab
  9. 相关的开源软件仓库列表:

项目开展计划

  • 4月25日
    组委会公开方案和里程碑计划,开放社区报名参加。
  • 5月15日
    组委会确定合作社区列表,社区逐步公布项目,学生开始与社区导师沟通项目需求与方案。
  • 5月29日
    社区完成所有项目列表,不再新增项目。
  • 6月1日
    学生开始提交报名申请,申请截止时间 6 月 20 日。
  • 6月21日
    组委会审核报名申请。
  • 6月30日
    组委会公布资助的项目和承担的学生名单。
  • 7月1日
    学生开始三个月开发期,同步追踪开发进度及状态。
  • 8月15日
    学生提交中期报告的截止日期,根据组委会与社区的中期评审结果决定是否继续资助学生承担的项目。
  • 9月30日
    学生提交最终项目报告的截止日期。
  • 10月1日
    组委会与社区开始针对每个项目进行评审。
  • 10月底
    组委会公告项目评审结果,并发放奖金给通过的学生。活动指导委员会针对项目进行评价,评选出优秀项目。

学生必读

Linux Lab 是一套 Linux 内核开发环境,已经支持 7 大处理器架构,16 款虚拟开发板。

当前最新版本是 v0.4-rc3,我们计划在 v0.6 左右完成镜像的升级,从当前 Ubuntu 14.04 直接升级到 Ubuntu 20.04,主要目标是确保开发更多的更新的软件,比如说当前 Ubuntu 14.04 已经没法正常编译 Qemu v4.2。

这一过程当中一方面是需要兼容当前的功能,另外一方面是引入更多的工具,再一方面是控制整个镜像的大小,确保下载效率。

所有报名的同学需要做如下准备工作:

  1. 能够在自己的电脑上运行和启动 Linux Lab

  2. 熟悉 Linux Lab 基本使用

  3. 熟悉 Linux Lab 工作原理

当前阶段

当前阶段是联系导师(@robin329 robin@tinylab.org; @吴章金 falcon@tinylab.org),跟导师讨论制定项目实施计划并确定技术方案,请阅读这部分:学生如何报名

学生如何报名

学生可在 5 月 15 日 至 6 月 20 日之间,针对感兴趣的项目与社区指定的导师沟通项目细节和方案,完善项目申请书。

学生在完成项目申请书后,可于 2020 年 6 月 1 日 至 6 月 20 日 期间参考 项目申请模板 中的要求发送申请邮件给组委会邮箱 summer2020@iscas.ac.cn,提交申请材料报名。组委会将收到的申请审核后交给社区选择承担项目的学生,并于 6 月 30 日公布中选项目及承担学生的名单。

选择中选学生的标准

社区会根据学生提交的项目申请书(包括项目计划、项目实现方案等)、学生的简历,综合考虑选择中选学生。每个项目只能有一个学生承担。

强烈建议学生在申请之前要积极与社区导师沟通项目细节和方案,项目申请书是选择标准的重点。

5069540 wuzhangjin 1594531572 total 1 participants

Comments (8)

5069540 wuzhangjin 1594531572
吴章金 2020-05-27 15:45 owner

Ubuntu toolchain support:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update

Ubuntu 20.04 / focal 下支持的交叉工具链已经非常全:

gcc-10-aarch64-linux-gnu
gcc-10-alpha-linux-gnu
gcc-10-arm-linux-gnueabi
gcc-10-arm-linux-gnueabihf
gcc-10-hppa-linux-gnu
gcc-10-hppa64-linux-gnu
gcc-10-i686-linux-gnu
gcc-10-m68k-linux-gnu
gcc-10-mips-linux-gnu
gcc-10-mips64-linux-gnuabi64
gcc-10-mips64el-linux-gnuabi64
gcc-10-mipsel-linux-gnu
gcc-10-mipsisa32r6-linux-gnu
gcc-10-mipsisa32r6el-linux-gnu
gcc-10-mipsisa64r6-linux-gnuabi64
gcc-10-mipsisa64r6el-linux-gnuabi64
gcc-10-powerpc-linux-gnu
gcc-10-powerpc64-linux-gnu
gcc-10-powerpc64le-linux-gnu
gcc-10-riscv64-linux-gnu
gcc-10-s390x-linux-gnu
gcc-10-sh4-linux-gnu
gcc-10-sparc64-linux-gnu
gcc-10-x86-64-linux-gnux32
5069540 wuzhangjin 1594531572
吴章金 2020-05-27 15:51 owner

作为对比,Debian 10支持的工具链如下:

gcc-8-aarch64-linux-gnu - GNU C compiler
gcc-8-alpha-linux-gnu - GNU C compiler
gcc-8-arm-linux-gnueabi - GNU C compiler
gcc-8-arm-linux-gnueabihf - GNU C compiler
gcc-8-hppa-linux-gnu - GNU C compiler
gcc-8-hppa64-linux-gnu - GNU C compiler (cross compiler for hppa64)
gcc-8-i686-linux-gnu - GNU C compiler
gcc-8-m68k-linux-gnu - GNU C compiler
gcc-8-mips-linux-gnu - GNU C compiler
gcc-8-mips64-linux-gnuabi64 - GNU C compiler
gcc-8-mips64el-linux-gnuabi64 - GNU C compiler
gcc-8-mipsel-linux-gnu - GNU C compiler
gcc-8-mipsisa32r6-linux-gnu - GNU C compiler
gcc-8-mipsisa32r6el-linux-gnu - GNU C compiler
gcc-8-mipsisa64r6-linux-gnuabi64 - GNU C compiler
gcc-8-mipsisa64r6el-linux-gnuabi64 - GNU C compiler
gcc-8-offload-nvptx - GCC offloading compiler to NVPTX
gcc-8-powerpc-linux-gnu - GNU C compiler
gcc-8-powerpc-linux-gnuspe - GNU C compiler
gcc-8-powerpc64-linux-gnu - GNU C compiler
gcc-8-powerpc64le-linux-gnu - GNU C compiler
gcc-8-riscv64-linux-gnu - GNU C compiler
gcc-8-s390x-linux-gnu - GNU C compiler
gcc-8-sh4-linux-gnu - GNU C compiler
gcc-8-sparc64-linux-gnu - GNU C compiler
gcc-8-x86-64-linux-gnux32 - GNU C compiler
5069540 wuzhangjin 1594531572
吴章金 2020-05-27 16:57 owner

如何在 Ubuntu 20.04 安装历史版本的编译器,包括交叉编译器,大部分历史编译器都能安装了,唯独 mipsel 的老版本编译器 Ubuntu 之前没提供:

$ cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ sed -i -e "s%archive.ubuntu.com%mirrors.aliyun.com%g;s%focal%trusty%g" /etc/apt/sources.list
$ apt-get -y update
// install the old gcc & cross gcc toolchains
$ apt-cache search gcc | grep arm
$ cp /etc/apt/sources.list.bak /etc/apt/sources.list

当前源里头能找到的最早版本是 precise,其次是 trusty (12.04,推荐),详细的可以看看这里:

http://mirrors.aliyun.com/ubuntu/dists/

5069540 wuzhangjin 1594531572
吴章金 2020-05-27 17:40 owner

更多工具链可参考,通过下述链接2可以找到老版本的 mipsel toolchain:

这里可以找到 2016 版本的 mipsel toolchain:

5069540 wuzhangjin 1594531572
吴章金 2020-05-29 20:57 owner

更多源自 Docker 镜像的工具链记录在 “Linux 知识星球” 上:

5069540 wuzhangjin 1594531572
吴章金 2020-06-05 20:12 owner

@robin329 帮您直接追加到这里了:

新增 ripgrep,fd,htop工具,强大的搜索工具可完全取代find和grep,功能更强大,可视化系统状态监视htop实时检测系统负载情况。

5069540 wuzhangjin 1594531572
吴章金 2020-06-07 18:32 owner

下述链接的 MIPS toolchain 过大,不适合直接导入镜像:https://codescape.mips.com/components/toolchain/2019.09-02/downloads.html

5069540 wuzhangjin 1594531572
吴章金 2020-06-14 14:49 owner

新的镜像base已经提交,下载:

$ docker pull tinylab/linux-lab:next

运行:

$ cd /path/to/cloud-lab
$ git checkout next
$ git pull
$ tools/docker/rerun linux-lab

当前镜像还需要解决不少兼容性问题,新问题将在这里持续更新:

  1. 桌面菜单

新的桌面菜单会弹出来一个提示框,需要右键勾选一下 Trust this Executables,需要避免弹出这个提示框

  1. 编译器版本兼容

之前 Linux Lab 中,部分老的内核,通过 GCC[LINUX_vx.y.z] = 4.4 这样指定了,但是新环境不一定有 4.4 了,需要迁移到新版的 4.9 和 9,需要同时确保在老环境也能用。

可以支持类似这样的语法,这个语法现在就是支持的,只需要验证并加上即可:

GCC[OS_trusty] = 4.4
GCC[OS_focal] = 4.9
GCC[LINUX_vx.y.z] = $(call __v,GCC,OS)

验证过程中,可能需要加内核 patch,加到对应板子 bsp 的 patch/kernel/<版本>/ 下即可。

另外一种兼容性设想,就是简单加:

GCC[LINUX_vx.y.z] = 4.4 4.9

然后 Linux Lab 自动去匹配,如果环境有就从左到右选其中第一个。

Sign in to comment

Assignees
Labels
Not set
Projects
Milestones
Branches
Planed to start
Not set
Planed to end
Not set
Top level
Priority
1
https://gitee.com/tinylab/cloud-lab.git
git@gitee.com:tinylab/cloud-lab.git
tinylab
cloud-lab
Cloud Lab

Search

231008 48f1a665 1899542 231017 9a6720c6 1899542