打开/关闭搜索
搜索
打开/关闭菜单
通知
打开/关闭个人菜单
查看“为手机安装Linux”的源代码
来自Uotan Wiki · 刷机百科
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
为手机安装Linux
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 该章节将引导你为一些手机安装主线Linux操作系统 == 注意:本教程中,操作环境为64位Ubuntu,目标机器为OnePlus6T,我们将尝试利用UEFI在OnePlus6T上启动Archlinux * 不同于Windows, Linux的安装过程可能具有一定的复杂性,步骤繁杂,方案多样,如果你使用不同的机型,请先仔细阅读本文和搜索资料;此外,主线Linux的开发(内核驱动移植,制作dts等)不在本文讨论范畴内。 [[文件:Archlinux-neofetch-op6t.png|缩略图]] === 1 编译内核 === sdm845成品: [Releases · silime/kernel-builder (github.com)](https://github.com/silime/kernel-builder) ==== 1.1 安装相关依赖 ==== 对于Ubuntu 22.04 LTS: 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 git ==== 1.2 克隆内核源码 ==== 你可以在“-b”参数后选择其他分支 mkdir ~/workspace cd ~/workspace git clone --depth=1 https://gitlab.com/sdm845-mainline/linux.git -b sdm845/6.8-dev 可用分支可在gitlab网页查看 ==== 1.3 生成 .config ==== make ARCH=arm64 defconfig sdm845.config # generate .config ==== 1.4 进行编译 ==== make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) 生成deb包供Debian系得GNU/Linux使用 make -j$(nproc) ARCH=arm64 KBUILD_DEBARCH=arm64 KDEB_CHANGELOG_DIST=mobile CROSS_COMPILE=aarch64-linux-gnu- deb-pkg # This will generate several deb files in ../ === 2 制作rootfs === ==== 2.1 下载 ==== 对于Archlinux,从http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz下载 cd ~/workspace wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz 对于Ubuntu,从 [Index of /ubuntu-base](https://cdimage.ubuntu.com/ubuntu-base/)选择自己想要的版本 ==== 2.2 制作 ==== ===== 2.2.1 进入chroot ===== 由于rootfs为ARM64,所以安装qemu-user-static sudo apt install qemu-user-static 创建img并挂载 dd if=/dev/zero of=archlinux.img bs=1G count=6 mkfs.ext4 archlinux.img mkdir arch sudo mount archlinux.img arch 解压 cd arch sudo tar -xpvf ../ArchLinuxARM-aarch64-latest.tar.gz 进入chroot环境 cd .. sudo mount --bind /dev arch/dev sudo mount -t devpts devpts arch/dev/pts -o gid=5,mode=620 sudo mount -t proc proc arch/proc sudo mount -t sysfs sysfs arch/sys sudo mount -t tmpfs tmpfs arch/run sudo rm -rf arch/etc/resolv.conf && sudo cp /etc/resolv.conf arch/etc/ sudo chroot arch ===== 2.2.2 初始化pacman keyring ===== pacman-key --init pacman-key --populate archlinuxarm ===== 2.2.3 换源 (可选) ===== 详见 https://mirrors.tuna.tsinghua.edu.cn/help/archlinuxarm/ pacman -Syyu # upgrade ===== 2.2.4 卸载旧的内核和firmware ===== pacman -Q | grep -i linux pacman -R linux-aarch64 linux-firmware linux-firmware-whence exit # exit chroot environment ===== 2.2.5 安装新的内核 ===== * 确保已经退出`chroot`环境 然后: cd ~/workspace/linux sudo make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=~/workspace/arch modules_install sudo make ARCH=arm64 INSTALL_PATH=~/workspace/arch/boot install 如果是`debian`系也可以直接chroot环境中用dpkg安装deb:<code>dpkg -i *.deb</code> ===== 2.2.6 安装新的firmware ===== * 可以尝试从PostmarketOS<ref>https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)</ref>中提取 进入chroot环境 sudo chroot ~/workspace/arch 移动解压得到的文件 mv * /usr/lib/firmware/ ldconfig 修改/etc/mkinitcpio.conf nano /etc/mkinitcpio.conf 找到 # BINARIES # This setting includes any additional binaries a given user may # wish into the CPIO image. This is run last, so it may be used to # override the actual binaries included by a given hook # BINARIES are dependency parsed, so you may safely ignore libraries BINARIES=() 在`BINARIES=()`填入`xxxx_zap.mbn/ipa_fws.mbn`的路径 这两个固件的来源一般是手机提取并放在特殊的位置加载(具体由`dts/dtsi`指定) 对于fajita,改为: BINARIES=(/usr/lib/firmware/qcom/sdm845/oneplus6/a630_zap.mbn /usr/lib/firmware/qcom/sdm845/oneplus6/ipa_fws.mbn) 生成initrd.img ls /usr/lib/modules # get kernel version mkinitcpio --generate /boot/initrd.img-5.18.0-sdm845-00109-gf7ad1e5036bb-dirty --kernel 5.18.0-sdm845-00109-gf7ad1e5036bb-dirty ===== 2.2.7 安装软件包和基本配置<ref>https://archlinuxstudio.github.io/ArchLinuxTutorial/#/</ref> ===== ====== 2.2.7.1 设置时区 ====== ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # Shanghai ====== 2.2.7.2 设置locale ====== 参考:https://wiki.archlinux.org/title/Locale nano /etc/locale.gen # uncomment en_US.UTF-8 UTF-8 # uncomment zh_CN.UTF-8 UTF-8 locale-gen ====== 2.2.7.3 自定义主机名 ====== # For example echo 'OnePlus6T' > /etc/hostname ====== 2.2.7.4 alarm(Archlinuxarm内置非root用户)配置 ====== 更改alarm密码,并添加到wheel用户组 passwd alarm # Change its password. Default is "alarm" usermod -aG wheel alarm 添加sudo,设置sudo权限 pacman -S sudo EDITOR=nano visudo 找到下面这样的一行,把前面的注释符号 `#` 去掉 #%wheel ALL=(ALL:ALL) ALL
返回
为手机安装Linux
。