• 版块
    • 热门
    • 最新
    • 标签
    • 关于
    • 捐赠
    • 注册
    • 登录

    SailfishOS移植到Redmi 5Plus的一些记录

    已定时 已固定 已锁定 已移动 教程
    5 帖子 4 发布者 2.3k 浏览
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
      回复
      • 在新帖中回复
      登录后回复
      此主题已被删除。只有拥有主题管理权限的用户可以查看。
      • BirdZhangB 在线
        BirdZhang 船长
        最后由 编辑

        准备工作

        • 一台红米5p手机,解锁过并且刷了lineageos
        • 有梯子
        • 一台内存起码8G的电脑,Ubuntu 系统,硬盘起码40GB大小,或者更高。
        • SailfishOS-HardwareAdaptationDevelopmentKit-2.0.1 HADK文档
        • https://wiki.merproject.org/wiki/Adaptations/faq-hadk
        • 用于求助的IRC频道,#sailfishos-porters频道,或者来#jolla-cn
        • 最关键的,一颗善于折腾的心和善于搜索的你

        搭建环境

        Android编译环境(HADK 第4章)

        需要先配置一下hadk的环境变量,一共三个文件,可以参考这里: https://github.com/CancroSailors/sailfish-build-environment

        然后source ~/.hadk.env一下

        1. 安装git等

        sudo apt-get install git

        2. 同步CM的代码

        配置git的用户名跟邮箱,填自己的就行,随便填也行
        git config --global user.name "Your Name"
        git config --global user.email "[email protected]"
        
        创建检出代码的目录,所在的盘空间要足够
        sudo mkdir -p $ANDROID_ROOT
        sudo chown -R $USER $ANDROID_ROOT
        cd $ANDROID_ROOT
        repo init -u git://github.com/mer-hybris/android.git -b hybris-14.1
        
        配置你的设备的仓库,这里是vince
        mkdir $ANDROID_ROOT/.repo/local_manifests
        cat <<'EOF' >> $ANDROID_ROOT/.repo/local_manifests/vince.xml
        <?xml version="1.0" encoding="UTF-8"?>
        <manifest>
          <project path="device/xiaomi/vince" name="Sailfish-On-Vince/device_xiaomi_vince" revision="cm-14.1" />
          <project path="vendor/xiaomi/vince" name="Sailfish-On-Vince/vendor_xiaomi_vince" revision="cm-14.1" />
          <project path="kernel/xiaomi/vince" name="Sailfish-On-Vince/kernel_xiaomi_msm8953" revision="cm-14.1" />
          <project path="hybris/droid-hal-version-vince" name="Sailfish-On-Vince/droid-hal-version-vince" revision="master" />
          <project path="hybris/droid-config-vince" name="Sailfish-On-Vince/droid-config-vince" revision="master" />
          <project path="rpm" name="Sailfish-On-Vince/droid-hal-vince" revision="master" />
        </manifest>
        EOF
        
        同步代码

        repo sync --fetch-submodules

        出错就多同步几次

        Mer编译环境

        参见官方教程: https://sailfishos.org/wiki/Platform_SDK_Installation

        安装Platform SDK

        export PLATFORM_SDK_ROOT=/srv/mer
        curl -k -O http://releases.sailfishos.org/sdk/installers/latest/Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2 ;
        sudo mkdir -p $PLATFORM_SDK_ROOT/sdks/sfossdk ;
        sudo tar --numeric-owner -p -xjf Jolla-latest-SailfishOS_Platform_SDK_Chroot-i486.tar.bz2 -C $PLATFORM_SDK_ROOT/sdks/sfossdk  ;
        echo "export PLATFORM_SDK_ROOT=$PLATFORM_SDK_ROOT" >> ~/.bashrc
        echo 'alias sfossdk=$PLATFORM_SDK_ROOT/sdks/sfossdk/mer-sdk-chroot' >> ~/.bashrc ; exec bash ;
        echo 'PS1="PlatformSDK $PS1"' > ~/.mersdk.profile ;
        echo '[ -d /etc/bash_completion.d ] && for i in /etc/bash_completion.d/*;do . $i;done'  >> ~/.mersdk.profile ;
        sfossdk
        

        另开一个终端,输入sfossdk,进入mer下

        安装targets,官方教程:https://sailfishos.org/wiki/Platform_SDK_Target_Installation

        其实就是执行下面的命令,要下载这三个包,过程有些慢

        sdk-assistant create xiaomi-vince-latest http://releases.sailfishos.org/sdk/latest/Jolla-latest-Sailfish_SDK_Tooling-i486.tar.bz2
        sdk-assistant create xiaomi-vince-armv7hl http://releases.sailfishos.org/sdk/latest/Jolla-latest-Sailfish_SDK_Target-armv7hl.tar.bz2
        sdk-assistant create xiaomi-vince-i486 http://releases.sailfishos.org/sdk/latest/Jolla-latest-Sailfish_SDK_Target-i486.tar.bz2
        

        更新到最新(Update to latest)

         sudo ssu re 2.2.0.29
         sudo zypper ref
         sudo zypper dup
        

        安装打包的工具

        sudo zypper in android-tools createrepo zip
        

        修改fixup-mountpoints

        文件在hybris/hybris-boot/fixup-mountpoints,添加你的设备的,这里是vince。
        adb到手机上,输入ls -l /dev/block/platform/*/by-name/, 获取分区信息

        Camera支持

        cd $ANDROID_ROOT/external/droidmedia
        echo 'DROIDMEDIA_32 := true' >> env.mk #针对64位的系统
        echo 'FORCE_HAL:=1' >> env.mk
        

        编译hybris-hal

        cd $ANDROID_ROOT
        source build/envsetup.sh
        export USE_CCACHE=1
        breakfast $DEVICE
        make -j8 hybris-hal
        

        期间可能会报错,谷歌搜一下

        验证Kernel

        cd $ANDROID_ROOT
        hybris/mer-kernel-check/mer_verify_kernel_config ./out/target/product/$DEVICE/obj/KERNEL_OBJ/.config
        

        出现WARNING或者ERROR,将提示的加入到你的defconfig中,我的在kernel/xiaomi/vince/arch/arm64/configs/vince_defconfig中
        然后执行make hybris-root后重新验证。没有出现ERROR后可以执行make hybris-recovery

        打包dhd(HADK 第7章)

        再开一个终端(我们这里称终端2),输入sfossdk,进入mer打包环境下

        cd $ANDROID_ROOT
        rpm/dhd/helpers/build_packages.sh
        

        打包droidmedia与audioflingerglue

        如果你的机器是32位的话那么下面的命令去掉_32,下面的也一样

        在终端1中

        make -j4 libcameraservice_32
        make -j4 libdroidmedia_32 minimediaservice minisfservice libminisf_32
        

        在终端2中

        DROIDMEDIA_VERSION=$(git --git-dir external/droidmedia/.git describe --tags | sed -r "s/\-/\+/g")
        rpm/dhd/helpers/pack_source_droidmedia-localbuild.sh $DROIDMEDIA_VERSION
        mkdir -p hybris/mw/droidmedia-localbuild/rpm
        cp rpm/dhd/helpers/droidmedia-localbuild.spec \
        hybris/mw/droidmedia-localbuild/rpm/droidmedia.spec
        sed -ie "s/0.0.0/$DROIDMEDIA_VERSION/" \
        hybris/mw/droidmedia-localbuild/rpm/droidmedia.spec
        mv hybris/mw/droidmedia-$DROIDMEDIA_VERSION.tgz hybris/mw/droidmedia-localbuild
        rpm/dhd/helpers/build_packages.sh --build=hybris/mw/droidmedia-localbuild
        

        在终端1中

        make -j4  libaudioflingerglue_32 miniafservice 
        

        在终端2中

        rpm/dhd/helpers/pack_source_audioflingerglue-localbuild.sh
        mkdir -p hybris/mw/audioflingerglue-localbuild/rpm
        cp rpm/dhd/helpers/audioflingerglue-localbuild.spec \
        hybris/mw/audioflingerglue-localbuild/rpm/audioflingerglue.spec
        mv hybris/mw/audioflingerglue-0.0.1.tgz hybris/mw/audioflingerglue-localbuild
        rpm/dhd/helpers/build_packages.sh --build=hybris/mw/audioflingerglue-localbuild
        

        然后重新打包dhd

        rpm/dhd/helpers/build_packages.sh --droid-hal
        

        上传到obs打包

        将droid-local-repo/vince下 droid-hal-vince/.rpm 跟audioflingerglue.rpm 、 droidmedia*.rpm 上传到obs的droid-hal-vince下

        例如这些包:https://build.merproject.org/package/show/nemo:devel:hw:xiaomi:vince/droid-hal-vince

        obs打包还需要dhc,dhv等等几个包,此处不详细说明了,可以到 https://github.com/mer-hybris 看其他机型的

        Jolla-@RELEASE@-$DEVICE-@[email protected]

        obs打包完之后,将droid-config-vince-kickstart-configuration-0.2.4*.armv7hl.rpm 下载下来,解压获得Jolla-@RELEASE@-$DEVICE-@[email protected]
        放到$ANDROID_ROOT下面

        镜像制作

        cd $ANDROID_ROOT
        RELEASE=2.1.4.14
        EXTRA_NAME=-alpha1
        hybris/droid-configs/droid-configs-device/helpers/process_patterns.sh
        sudo mic create fs --arch=$PORT_ARCH \
        --tokenmap=ARCH:$PORT_ARCH,RELEASE:$RELEASE,EXTRA_NAME:$EXTRA_NAME \
        --record-pkgs=name,url \
        --outdir=sfe-$DEVICE-$RELEASE$EXTRA_NAME \
        --pack-to=sfe-$DEVICE-$RELEASE$EXTRA_NAME.tar.bz2 \
        $ANDROID_ROOT/Jolla-@RELEASE@-$DEVICE-@[email protected]
        

        刷机

        参考 https://wiki.merproject.org/wiki/Adaptations/libhybris/Install_SailfishOS_for_Vince

        ———扬帆起航🚢

        1 条回复 最后回复 回复 引用 0
        • 肥 离线
          肥鲢鱼
          最后由 编辑

          技术贴,谢谢了

          1 条回复 最后回复 回复 引用 0
          • 1 离线
            123我也想
            最后由 编辑

            持续关注中

            1 条回复 最后回复 回复 引用 0
            • S sandylaw 在 中 引用了 这个主题
            • XG520X 离线
              XG520
              最后由 编辑

              构建其他手机型号的镜像怎么弄啊

              BirdZhangB 1 条回复 最后回复 回复 引用 0
              • BirdZhangB 在线
                BirdZhang 船长 @XG520
                最后由 编辑

                @XG520 上telegram来讨论吧

                ———扬帆起航🚢

                1 条回复 最后回复 回复 引用 0
                • 1 / 1
                • 第一个帖子
                  最后一个帖子
                Copyright © 2017-2024 旗鱼俱乐部 旗鱼系统交流论坛
                🐟🐠🐡论坛客户端下载🐟🐠🐡
                友情链接 SailfishOS.org | Jolla | 官方论坛 | 移植wiki| 第三方商店 | BirdZhang的博客| Securest
                除非另有声明,本网站采用知识共享“署名 4.0 中国大陆”许可协议授权。
                根据相关法律法规,本站不对欧盟用户提供服务。
                Powered by NodeBB