首先,准备一个网络稳定的科学上网的工具,不然在下载源码中会出现很多问题,大部分都是网络不稳定,下载的源码依赖包缺少。
Ubuntu上面下载chromium OS源码步骤
- 准备安装开发工具
(1)如果您的系统没有安装兼容的 Python 版本,则需要安装 Python 3.8 或更高版本。检查自己的python版本
命令:python3 -V
如果返回错误或版本低于 3.8,要在系统上安装特定的 Python 版本
命令:sudo apt-get install python3
(2)需要一些主机操作系统工具来操作代码、引导开发环境以及稍后运行预上传挂钩。
安装 git 版本控制系统、curl 下载助手等。
命令:$ sudo add-apt-repository universe
命令:$ sudo apt-get install git gitk git-gui curl xz-utils \
python3-pkg-resources python3-virtualenv python3-oauth2client
(3) 安装depot_tools工具
命令:git clone
https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ 配置路径
命令:export PATH=/path/to/depot_tools:$PATH
2.配置git
命令: git config --global user.email "you@example.com"
git config --global user.name "Your Name"
3.检查电脑架构htt
命令: uname -m
看到结果:x86_64
如果看到其他内容(例如,i686,这意味着您在 32 位机器上或运行 32 位操作系统的 64 位机器上)那么无法构建 ChromiumOS;需要打补丁才能构建。
4.验证您的默认文件权限 (umask) 设置是否正确
命令:umask 022
5.下载repo工具
新建bin目录
Mkdir ~/bin
指定路径
PATH=~/bin:$PATH
命令:
curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
若报错:permission denied 权限缩进
解决方法:在bin目录下面创建一个repo目录
命令:sudo mkdir /bin/repo
或者在末尾的/bin/repo忘记添加~
或者在~/bin写成~bin
6.下载源码
(1)创建一个目录来存放源码:
命令:mkdir -p ~/chromiumos
(2)获取源代码
ChromiumOS 使用repo来同步源代码。是gitrepo的包装器,可帮助处理大量存储库。
命令:cd ~/chromiumos
获取源码: repo init -u https://chromium.googlesource.com/chromiumos/manifest -b main
如果获取过程中中断输入该命令:repo sync -j8
注:如果下载失败,问题最大可能是网络不稳定,导致源码中的部分文件没有下载成功。
可以继续使用repo sync 命令继续下载源码。
注:如果报错:/usr/bin/env:'python':No such file or directory
解决方法:python创建符号链接,可以创建符号链接‘python3’,执行以下命令:
sudo ln -s /usr/bin/python3 /usr/bin/python
此命令创建一个符号链接python,指向python3可执行文件,以此运行python3的脚本或命令。
编译Chromium OS步
1. 创建一个chroot
创建chroot,需要在~/chromiumos目录
命令:cros_sdk
注:如果报错命令不存在,那么就说明depot_tools目录没有添加到你的PATH中,请重新查看PATH。
查看PATH命令:$PATH
添加depot_tools的PATH命令:PATH=$PATH:’pwd’/to/depot_tools
注:pwd代表当前所在路径,在根目录添加PATH。
或者
是由于该命令未加入全局变量,下面详细介绍如何添加系统环境变量,步骤如下:
(1)查看所要添加的项是否在已经在环境变量里
命令:echo $PATH
(2)查找需要添加命令的绝对路径:
命令:find . -name "cros_sdk"
(3)在环境变量文件中添加该命令所在的路径
命令:CROS_SDK=/home/a/chromiumos/chromite/bin
export PATH=$PATH:$CROS_SDK
如图所示:
创建命令成功,那么下载时间需要一两个小时左右,显示页面如下:
注:因为连接的是外网,网络不稳定,所以可能会发生如下图所示的问题:
报错:
ncurl:(92) HTTP/2 stream 0 was not closed cleanly: INTERNAL_ERROR (err 2)\n
解决方法:
方法:增加git缓冲区大小
命令:git config --global http.postBuffer 54288888
还有可能出错的原因:系统或网络不支持HTTP/2协议,以下是一些可能会导致HTTP/2协议不可用的原因和解决方法:
(1) 旧版本的curl:如果你的系统上安装的curl版本较旧,则可能不支持HTTP/2协议。可以尝试 使用以下命令升级curl:
命令: sudo apt-get update
sudo apt-get install curl
(2)旧版本的openssl:如果您的系统上安装的openssl版本较旧,则可能不支持HTTP/2协议。 您可以尝试使用以下命令升级openssl:
命令: sudo apt-get update
sudo apt-get install openssl
(3) 远程仓库或者中间代理层未正确使用HTTP/2协议。为了创建chroot,可以先强制使用 HTTP/1.1,创建成功之后再修改为HTTP/2。
命令: 修改 git config --global http.version HTTP/1.1
git push
创建完之后修改回来:git config --global http.version HTTP/2
当然,如果网络稳定,会很少出现此类问题,所以最好找一个稳定高效的科学工具,这样会省很多事。
2. 输入chroot
如果创建chroot成功,继续输入以下命令,直接进入:
命令:cros_sdk
注:如果需要删除chroot,可以使用命令:cros_sdk --delete 来删除它,如果使用rm -rf可能会删不干净。
3. 选择主板类型
ChromiumOS 将不同类别的计算机称为不同的目标“板”。以下是一些示例板:
注:在Ubuntu中查看电脑CPU信息命令:
cat /proc/cpuinfo
根据自己想要安装chromium OS的电脑类型在chroot中选择相应的主板:
命令: export BOARD = <你选择的主板>
4. 初始化主板的构建
选定主板后,在你的chroot中(在目录~/chromiumos/src/scripts中)以下命令:
./setup_board --board=$ {BOARD}
注:如果执行命令报错:-bash: ./setup_board: No such file or directory,出现其他的错误,也可以使用以下方法
解决方法:
(1)输入 ./update_chroot更新工具链
(2)repo sync 重新同步代码
(3)退出chroot(按CTRL+D退出chroot),然后重新进入chroot(输
入cros_sdk重新进入) ,退出又重新进入chroot,会自动更新。
(4)重新构建:./setup_board --board=<你的主板类型>
5. 设定系统的用户密码
命令:./set_shared_user_password.sh
输出命令之后,系统会提示你输入密码,该密码以保密形式存储在 /etc/shared_user_passwd.txt中。
6. 构建开发包
命令:build_packages --board=${BOARD}
注:编译时间较长,需等待四五个小时,编译过程需要网络,下载软件包和依赖项,还需要从Google的代码仓库中拉取源代码。
7. 构建磁盘映像
构建开发包完成之后,在下列目录中运行以下命令来构建磁盘映像:
目录:~/chromiumos /src/scripts
命令: build_image --board=${BOARD} --no-enable-rootfs-verification test
构建的镜像有三种类型:
(1)test(测试版)
命令:build_image --board=${BOARD} --no-enable-rootfs-verification test
注:如果使用test镜像,那么前面设置的密码会被忽略,密码变成“test0000”
(2)dev(开发者)
命令:build_image --board=${BOARD} --no-enable-rootfs-verification dev
(3)base(原始版,最接近ChromeOS但不完全相同)
命令:build_image --board=${BOARD} --no-enable-rootfs-verification base
8. 将生成的镜像放入USB磁盘
命令:cros flash usb://${BOARD}/latest
usb:U盘所在路径
${BOARD}:image镜像所在路径
整个过程就是这样了,编译时间会很长,而且中间因为网络问题或者其他问题会出现很多错误,我遇到的问题就是整理的这些,如有不足之处,还请大家指出。