无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 328|回复: 25
打印 上一主题 下一主题

kaihongX86,有搞的没?

[复制链接]
跳转到指定楼层
1#
发表于 昨天 09:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 窄口牛 于 2026-3-3 09:39 编辑


我下载下来了。先找AI看看这个安装脚本和启动菜单脚本
初步尝试,用安卓X86的解包打包命令就能修改其system.img
其余的img还不知道如何解包打包。

2#
 楼主| 发表于 昨天 09:38 | 只看该作者
  1. set timeout=10
  2. set default=0
  3. set fallback=1

  4. # 新增的KaihongOS启动项(代码生成)
  5. menuentry 'KaihongOS' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-xxxxxx' {
  6.         recordfail
  7.         load_video
  8.         gfxmode $linux_gfx_mode
  9.         insmod gzio
  10.         insmod part_gpt
  11.         insmod ext2
  12.         set root='hd0,gpt2'
  13.         if [ x$feature_platform_search_hint = xy ]; then
  14.           search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  15.         else
  16.           search --no-floppy --fs-uuid --set=root xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  17.         fi
  18.         linux    /boot/bzImage init=/bin/init console=tty0 console=ttyS0,115200 default_boot_device=nvmeOn1 hardware=x86_64 rw rootwait selinux=0 vga=0x035c ohos.required_mount.system=/dev/block/nvme0n1p2@/usr@ext4@ro,barrier=1@wait,required ohos.required_mount.vendor=/dev/block/nvme0n1p3@/vendor@ext4@ro,barrier=1@wait,required
  19.         initrd    /boot/ramdisk.img
  20. }
复制代码
回复

使用道具 举报

3#
 楼主| 发表于 昨天 09:42 | 只看该作者
  1. 这个 os_install.sh 脚本是一个用于安装 / 部署 x86 架构操作系统镜像的 Shell 脚本,主要完成从指定路径(本地 / 远程 UNC 路径 / 开发代码路径)获取系统镜像,并将镜像写入目标机器(本地 PC 或远程 PC)的指定磁盘分区,同时配置系统挂载文件(fstab),可选重启目标机器。以下是其核心功能拆解:
  2. 一、脚本核心流程与功能
  3. 1. 初始化与参数解析

  4.     基础配置:开启脚本错误终止(set -e)、定义调试模式、当前目录 / 脚本名等基础变量。
  5.     参数解析:支持多种命令行参数,核心参数包括:
  6.     表格
  7.     参数        作用
  8.     --local_pc/-l        安装到本地 PC(与--ip互斥)
  9.     --ip        目标远程 PC 的 IP(与--local_pc互斥)
  10.     --image_path/-i        镜像文件路径(支持 Windows UNC 路径,需单引号包裹,自动挂载为 CIFS)
  11.     --code_path/-c        开发代码根路径(自动拼接镜像路径:code_path/out/x86_64/packages/phone/images/)
  12.     -t/-o        UNC 路径挂载类型(如 cifs)和挂载选项(如用户名 / 密码)
  13.     --disable_reboot/-r        安装完成后不重启目标机器
  14.     --quiet/-q        静默模式(无需手动确认安装)
  15.     --debug/-d        调试模式(打印更多日志)
  16.     参数校验:
  17.         必须指定--local_pc或--ip(二者互斥);
  18.         必须指定--image_path或--code_path(二者互斥);
  19.         远程 IP 需确保 SSH 可达(自动生成 / 拷贝 SSH 公钥免密登录)。

  20. 2. 镜像路径处理

  21.     代码路径自动拼接:若指定--code_path,自动拼接镜像路径并检查目录是否存在;
  22.     UNC 路径挂载:若image_path是 Windows UNC 路径(以\\开头),自动:
  23.         规范化路径(\\替换为/);
  24.         创建临时目录,以 CIFS 方式挂载 UNC 路径到临时目录;
  25.         校验挂载后的镜像目录是否存在;
  26.     镜像文件校验:检查image_path下是否存在核心镜像文件(system.img/vendor.img/ramdisk.img/bzImage/sys_prod.img/chip_prod.img)。

  27. 3. 磁盘分区信息获取

  28.     调用lsblk(本地)或ssh root@ip lsblk(远程)获取磁盘分区信息(路径、大小、类型、分区标签、文件系统);
  29.     根据分区标签(system/vendor/data/sys_prod/chip_prod)筛选出对应分区的设备路径(如/dev/sda1)。

  30. 4. 安装确认

  31.     打印核心配置信息(调试模式、目标机器、镜像路径、分区路径等);
  32.     非静默模式下,提示用户确认是否继续安装(选择 Yes/No)。

  33. 5. 生成 fstab 挂载文件

  34.     创建临时 fstab 文件,模板包含各分区的挂载点、文件系统类型、挂载选项;
  35.     替换模板中的分区路径(将/dev/xxx替换为/dev/block/xxx),适配系统挂载规则。

  36. 6. 镜像写入(核心步骤)
  37. 根据目标机器类型(本地 / 远程),执行镜像写入逻辑:
  38. (1)远程机器(--ip)

  39.     在远程机器创建临时目录,通过scp将镜像文件拷贝到远程临时目录;
  40.     远程挂载镜像文件和目标分区,将镜像内容覆盖到分区(核心命令):
  41.     bash
  42.     运行

  43.     mount $tmp_img_dir/system.img $src && mount ${part_system} $dst && rm -rf $dst/* && cp -ardf $src/* $dst/ && umount $src && umount $dst

  44.     (对vendor/sys_prod/chip_prod分区执行相同操作);
  45.     清空data分区(挂载后删除所有内容);
  46.     将生成的 fstab 文件拷贝到远程/vendor/etc/fstab.x86_64;
  47.     清理远程临时目录,可选重启远程机器。

  48. (2)本地机器(--local_pc)

  49.     直接挂载本地镜像文件和目标分区,覆盖分区内容(逻辑同远程,但无需 scp/ssh);
  50.     拷贝ramdisk.img和bzImage到/boot/目录;
  51.     清空data分区;
  52.     将 fstab 文件拷贝到本地/vendor/etc/fstab.x86_64;
  53.     清理本地临时目录,可选重启本地机器。

  54. 7. 收尾工作

  55.     若挂载了 UNC 路径,卸载并删除临时挂载目录;
  56.     打印安装成功提示。

  57. 二、关键注意事项

  58.     权限要求:脚本需以sudo运行(操作磁盘分区、/boot 目录、SSH 免密登录等需 root 权限);
  59.     数据风险:脚本会清空目标分区(如data/system/vendor)的所有内容,执行前需确认分区正确性;
  60.     网络依赖:远程安装需确保目标 IP 可达、SSH 端口开放,且本地能免密登录远程 root;
  61.     镜像依赖:必须包含指定的 6 个核心镜像文件,否则脚本会终止;
  62.     分区标签:依赖lsblk输出的partlabel(分区标签)匹配system/vendor等,需目标磁盘分区标签符合预期。

  63. 三、典型使用场景

  64.     本地安装:sudo bash os_install.sh --local_pc --code_path /home/code
  65.     远程安装(UNC 路径镜像):sudo bash os_install.sh --ip 10.10.10.10 --image_path '\\\\10.10.10.1\\daily_build\\image' -o username=root,password=123456
  66.     远程安装(本地镜像路径):sudo bash os_install.sh --ip 10.10.10.10 --image_path /home/code/out/x86_64/packages/phone/images

  67. 综上,该脚本是一个自动化的 x86 系统镜像部署工具,覆盖了 “路径处理 - 分区识别 - 镜像写入 - 配置更新 - 重启” 全流程,适配本地 / 远程、普通路径 / UNC 路径等多种场景。
复制代码
回复

使用道具 举报

4#
发表于 昨天 09:47 | 只看该作者
支持折腾
回复

使用道具 举报

5#
 楼主| 发表于 昨天 09:48 | 只看该作者
本帖最后由 窄口牛 于 2026-3-3 10:09 编辑

需要六个分区,并且会清空它们,不会清空esp分区。
这么多分区,我这里不好搞了,以为可以向安卓86那样直接用img,只有use-data是文件夹。
这种东西,要啥没啥的,占领这么多分区,不值。

点评

杨长顺拆鸿蒙PC版,有60+个分区  详情 回复 发表于 昨天 10:46
回复

使用道具 举报

6#
发表于 昨天 10:06 | 只看该作者
来看看
回复

使用道具 举报

7#
发表于 昨天 10:07 | 只看该作者
支支持持
回复

使用道具 举报

8#
发表于 昨天 10:45 | 只看该作者
谢谢!
回复

使用道具 举报

9#
发表于 昨天 10:46 | 只看该作者
窄口牛 发表于 2026-3-3 09:48
需要六个分区,并且会清空它们,不会清空esp分区。
这么多分区,我这里不好搞了,以为可以向安卓86那样直 ...

杨长顺拆鸿蒙PC版,有60+个分区

点评

安卓和Linux的分区有好多“缝儿”,特别宽大。这次bug11什么nvme特性就显示出了win的分区里的“缝儿”。  详情 回复 发表于 昨天 10:54
回复

使用道具 举报

10#
 楼主| 发表于 昨天 10:54 来自手机 | 只看该作者
本帖最后由 窄口牛 于 2026-3-3 11:08 编辑

bilvnet 发表于 2026-3-3 10:46
杨长顺拆鸿蒙PC版,有60+个分区


安卓和Linux的分区有好多“缝儿”,特别宽大。这次bug11什么nvme特性就显示出了win的分区里的“缝儿”。把这些个“缝儿”都算做分区,那就会非常多了,自己安装都要无损分区的,完全去除这些个“缝儿”。
回复

使用道具 举报

11#
发表于 昨天 10:54 | 只看该作者
有安装说明,太复杂,要先安装ubuntu,立即放弃。

点评

SH是linux脚本,任何Linux都行,它就是建立引导会需要乌班图的cfg,在上面改。 不知道这个派森脚本是linux下也行还是win下的。  详情 回复 发表于 昨天 14:26
回复

使用道具 举报

12#
发表于 昨天 12:49 | 只看该作者
学习一下
回复

使用道具 举报

13#
发表于 昨天 13:42 | 只看该作者
学习一下
回复

使用道具 举报

14#
 楼主| 发表于 昨天 14:26 | 只看该作者
Herofmd 发表于 2026-3-3 10:54
有安装说明,太复杂,要先安装ubuntu,立即放弃。

SH是linux脚本,任何Linux都行,它就是建立引导会需要乌班图的cfg,在上面改。
不知道这个派森脚本是linux下也行还是win下的。
回复

使用道具 举报

15#
发表于 昨天 15:24 | 只看该作者
语言有编程型语言和解释性语言,虽然说python语言是解释性语言,但明显这个python脚本是在linux运行的,看到文件目录结构使用/开始的,还有看到了lsblk这一行我猜是调用lsblk命令,这个命令是linux的命令。
linux下的/etc/fstable文件是告诉系统启动时自动挂载的分区或者设备挂载到那个目录下,原来android也有这个文件,只是目录位置和名称不同而已?
回复

使用道具 举报

16#
发表于 昨天 15:48 | 只看该作者
感谢分享
回复

使用道具 举报

17#
发表于 昨天 16:05 | 只看该作者
不明觉厉,前排膜拜
回复

使用道具 举报

18#
发表于 昨天 16:31 | 只看该作者
在命令行中使用file命令查看文件类型,发现是img磁盘镜像,其实看名字也可以,但linux下扩展名其实可有可无。使用mount命令挂载能查看里面的文件。userdata.img挂载到当前目录的123目录,img里面我新建了个123目录,卸载,在挂载查看里面123目录存在,说明可写挂载可行。


点评

它是分区安装的话,就没必要修改img了,释放以后修改就是了。  详情 回复 发表于 昨天 16:35
回复

使用道具 举报

19#
 楼主| 发表于 昨天 16:35 来自手机 | 只看该作者
my9823 发表于 2026-3-3 16:31
在命令行中使用file命令查看文件类型,发现是img磁盘镜像,其实看名字也可以,但linux下扩展名其实可有可无 ...

它是分区安装的话,就没必要修改img了,释放以后修改就是了。
回复

使用道具 举报

20#
发表于 昨天 16:55 | 只看该作者
有生成启动img内核命令,可以试试  dracut
回复

使用道具 举报

21#
发表于 昨天 17:09 | 只看该作者
学习一下
回复

使用道具 举报

22#
发表于 昨天 21:27 | 只看该作者
下午搞了三个小时,没进到桌面,安装脚本执行后自动重启。第一次在一个地方卡住不动了,我等了几分钟重启了,然后第二次进入无限跑码。跑了20多分钟还没结束,我感觉跑码的东西是一样,懒得等就下班了。
它那个安装文档太啰嗦了。其实可以大量精简:(1台电脑)
1、Ubuntu我Ventoy盘自带,直接省去一大步,而且直接安装LTS版,又省掉它Mini版没桌面以及完整终端
    安装时可以直接一次性把7个分区建好。Ubuntu只需2个即可:EFI+ROOT,其它5个分区按WORD中的要求给开鸿用
2、安装Ubantu后,根据教程命令通过终端在root文件夹下建立文件夹。然后把解压好的那堆镜像复制过去。
3、修改那个python脚本(写引导项用的),因为我是sata硬盘,把其中的nvmeOn1改成sataOn1
4、运行Python脚本创建引导
5、终端运行安装命令,这里安装都是正常的,没有报错。
至于网络的IP地址完全用不上,因为是本地安装。
然而不知道什么原因,重启后进不到桌面
回复

使用道具 举报

23#
 楼主| 发表于 昨天 21:39 | 只看该作者
sataOn1,没有这种描述,应该是sda1或者sdb1。
我怀疑的就是这个,靠卷标挂载,和别的linux没有冲突吗?

点评

应该不是这原因,因为后面这5个分区还是有写入东西。如果选错盘,应该会写入别的分区吧。明天我把脚本改下试试  详情 回复 发表于 半小时前
回复

使用道具 举报

24#
发表于 昨天 22:28 来自手机 | 只看该作者
sata接口在linux中设备表示是sda,sdb表示第一个和第二个硬盘,以此类推。至于分区第一个硬盘的第一个分区sda1这种表示。至于安卓不知道会不会和linux一样?
回复

使用道具 举报

25#
发表于 昨天 22:32 来自手机 | 只看该作者
本帖最后由 my9823 于 2026-3-3 22:35 编辑

看了下nvme0n1应该是第一个nvme硬盘,而nvmen0p1是这个硬盘的第一个分区。所以应该是改为sda,如果是安装到第二个硬盘就是sdb
回复

使用道具 举报

26#
发表于 半小时前 | 只看该作者
窄口牛 发表于 2026-3-3 21:39
sataOn1,没有这种描述,应该是sda1或者sdb1。
我怀疑的就是这个,靠卷标挂载,和别的linux没有冲突吗?

应该不是这原因,因为后面这5个分区还是有写入东西。如果选错盘,应该会写入别的分区吧。明天我把脚本改下试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2026-3-4 01:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表