手机运行Docker: 从修改内核到刷入原生Linux

这篇具有很好参考价值的文章主要介绍了手机运行Docker: 从修改内核到刷入原生Linux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文地址:https://yzddmr6.com/posts/android-run-docker/

背景

最近收拾东西翻出了抽屉里吃灰的小米6。小米6当年可以说是神机一部,最好的835遇到了最好的MIUI9。如今放在抽屉里吃灰实在可惜,想着拿来做点什么让它继续发挥余热。

随后就萌生了一个想法:在手机上跑Docker,这样的话就可以用到很多打包好的Docker应用了。后来发现有这个想法的人不止我一个,有很多大佬已经实现了。原生安卓无法直接运行Docker的原因是:安卓虽然基于Linux,但是内核阉割了很多东西,很多Docker相关的的内核选项没有开启,所以需要通过刷机来进行修改。

本人总共尝试了两种方案:一种是重新编译安卓内核,开启对应选项。不过在本人的小米6,Linux内核4.4版本,LineageOS 19.1上失败了;另一种是直接刷入原生的Linux系统,成功启动了Docker。在这里跟大家分享一下刷机的过程。

方案一:重新编译安卓内核

如果可以通过修改安卓内核来开启Docker应该是最理想的方案:这样可以在保留手机原有功能架构的基础上来提高我们的可玩性。老外写过一篇详细的教程,可以按照这个来:https://gist.github.com/FreddieOliveira/efe850df7ff3951cb62d74bd770dce27

不过很遗憾,最后这种方案失败了,一直出现报错。找了半天也没有找到解决办法,希望知道原因的小伙伴告知我一下。

准备工作

首先要找一份第三方维护的你的手机内核的源码,如lineageOS,PixelExperience等。这些内核代码热度较高,更新频繁,有什么bug马上就被修复了,编译的时候成功率较大。

另外注意,如果是小米手机,最好不要用小米官方github上的内核。本人亲身体会,编译过程不仅一堆BUG,刷入系统后还开不了机。后来看到看雪的帖子,很多人也遇到了同样的情况:https://bbs.pediy.com/thread-262263.htm

经过一番查找对比,最后选择以lineageOS维护的小米6(sagit)的内核源码作为基础:https://github.com/LineageOS/android_kernel_xiaomi_msm8998

git clone https://github.com/LineageOS/android_kernel_xiaomi_msm8998 --depth=1

sagit是小米6的手机代号,这个代号独一无二,可以百度搜一下自己手机的对应代号。

修改内核

我们首先不做修改,编译一次看报不报错。

cd ./android_kernel_xiaomi_msm8998
sudo apt install build-essential openssl pkg-config libssl-dev libncurses5-dev pkg-config minizip libelf-dev flex bison  libc6-dev libidn11-dev rsync bc liblz4-tool  
sudo apt install gcc-aarch64-linux-gnu dpkg-dev dpkg git

export ARCH=arm64
export SUBARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-

make O=out sagit_defconfig
make O=out -j$(nproc)
error:CROSS_COMPILE_ARM32 not defined or empty
anykernel3,linux,docker,运维,服务器,容器
img

kernel config 里面删掉 CONFIG_COMPAT_VDSO

error: statement with no effect [-Werror=unused-value]
../drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_cfg.c: In function ‘hdd_cfg_print’:
../drivers/staging/qcacld-3.0/core/hdd/src/wlan_hdd_cfg.c:6896:43: error: statement with no effect [-Werror=unused-value]


 error: ‘staid’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
  911 |         hdd_dhcp_indication(pAdapter, staid, skb, QDF_RX);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CC      drivers/soc/qcom/early_random.o
  CC      drivers/video/fbdev/msm/mdss_mdp_ctl.o
  CC      drivers/video/fbdev/msm/mdss_mdp_pipe.o

临时解决办法: 增加 -Wno-error=unused-value -Wno-error=maybe-uninitialized,见一种加一种。最后觉得太麻烦了,直接Makefile里增加-w选项,屏蔽所有警告。

开启内核支持

安装termux。这里为了控制方便我开启了ssh,用电脑连接上去操作。然后下载check脚本看缺少哪些内核选项。文章来源地址https://www.toymoban.com/news/detail-520115.html

pkg install tsu
pkg install wget
wget https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh
chmod +x check-config.sh
sed -i '1s_.*_#!/data/data/com.termux/files/usr/bin/bash_' 

到了这里,关于手机运行Docker: 从修改内核到刷入原生Linux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小米4手机刷入linux系统

    首先刷入开发版miui系统,参考https://www.miui.com/download.html,刷完系统后需要通过recovery清楚所有数据。 第二步申请小米miui系统解锁,申请解锁参考https://www.miui.com/unlock/index.html,然后如果解锁失败,可以从https://miuiver.com/miunlock/下载不同的版本去尝试解锁。 第三步解锁后,可

    2024年02月11日
    浏览(43)
  • 安卓手机刷入面具Magisk

    magisk APP 当前版本完整官方系统包(MIUI) MT管理器 APP 1… 手机解锁BL (注意备份数据) 以 红米note9 4G版 为例 小米官方手机解锁工具(其它手机自行搜索) 参考:https://miuiver.com/how-to-unlock-xiaomi-phone/ 2. 安装magisk软件并刷入magisk 下载最新版magisk软件安装到手机上 下载官方系统

    2024年02月09日
    浏览(65)
  • 刷入twrp_twrp刷入面具&进入recovery(twrp)的方式&获取root&刷入第三方rom&获取第三方rom包&类原生rom包的网络连接受限问题

    以redmi 4x为例 下面的教程中,有些步骤不是必须要的,但是可以开阔思路 Install LineageOS on santoni | LineageOS Wiki Xiaomi Redmi 4X (twrp.me) Download and Install Lineage OS 19 for Redmi 4X (Android 12) (getdroidtips.com) 已经解锁的android手机(譬如小米/redmi手机) 解锁小米手机 - Magisk中文网 (magiskcn.com) 同时,在

    2024年02月08日
    浏览(63)
  • 【云原生 | 27】Docker部署运行开源消息队列实现RabbitMQ

    作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅 ✒️个人主页:小鹏linux 💊个人社区:小鹏linux(个人社区)欢迎您的加入! 目录 1. 关于MQ 1.1 什么是MQ? 1.2 MQ是干什么用的?  1.3 MQ衡量标准  1.4 主流竞品分析  2. 关

    2024年01月20日
    浏览(46)
  • iptables 添加,删除,查看,修改,及docker运行时修改端口

    [root@linux ~]# /etc/init.d/iptables start   当我们用iptables添加规则,保存后,这些规则以文件的形势存在磁盘上的,以centos为例,文件地址是/etc/sysconfig/iptables,我们可以通过命令的方式去添加,修改,删除规则,也可以直接修改/etc/sysconfig/iptables这个文件就行了。 1,添加filter表

    2024年02月15日
    浏览(48)
  • 【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch

    作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅 ✒️个人主页:小鹏linux 💊个人社区:小鹏linux(个人社区)欢迎您的加入! 目录 1. 关于 Elasticsearch 1.1 Elasticsearch是什么  1.2 Elasticsearch的核心概念  2. Elasticsearch的优

    2023年04月09日
    浏览(37)
  • 修改Docker的运行时数据存储位置

    Docker的运行时数据,包括镜像、容器、网络和存储卷等默认存储在/var/lib/docker目录下,如果硬盘容量有限我们则需要修改这个存储位置 修改步骤如下: 停止Docker服务: sudo systemctl stop docker 创建一个新的目录来存储Docker运行时数据: sudo mkdir /new/docker/image/path 将Docker默认的运

    2024年02月09日
    浏览(44)
  • 安卓端免root免内核编译运行容器&udocker基本使用教程【nethunter】【termux】【docker替代方案】【udocker】

    【最后一次更新: 2023.4.15 】 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任~ 「下列操作不需要使用docker作为依赖实现」 1.前言 2.简介 3.安装 0最新添加

    2024年02月05日
    浏览(38)
  • android 手机获取root权限(刷入magisk面具方式)_获取刷入模块_MIUI_android7/android12实践

    Magisk安装教程 - Magisk中文网 (magiskcn.com) android12: How to Root Xiaomi Redmi Note 11T Pro / 11T Pro+ using Magisk without TWRP (getdroidtips.com) 视频教程 ★ bigstar ★ 玩机必看!带你入坑安卓刷机,小白也能看懂的ROOT基础指南来啦!_哔哩哔哩_bilibili 将前面列出的参考都看一遍 最好把文章结尾的基

    2024年02月06日
    浏览(89)
  • XiaoMi手机MIX 2S线刷固件和刷入Recovery、Root

    mix 2s 固件下载地址 https://web.vip.miui.com/page/info/mio/mio/detail?postId=4865868app_version=dev.20051 miflash线刷工具下载地址 https://miuiver.com/miflash/ 安装miflash线刷工具 点击安装驱动 打开miflash 手机关机按音量下加开机键进入bootloader,用数据线连接电脑 点击刷新,我手机bootloader界面出现pr

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包