modified: README.md

modified:   README_CN.md
	renamed:    chr.png -> image/chr.png
	renamed:    install.png -> image/install.png
	renamed:    routeros.png -> image/routeros.png
	renamed:    x86.png -> image/x86.png
	deleted:    mikrotik.ico
	modified:   netinstall.py
	modified:   patch.py
This commit is contained in:
zyb 2024-07-15 12:46:45 +08:00
parent 96515d2333
commit 7324df7744
9 changed files with 9 additions and 50 deletions

View File

@ -6,13 +6,13 @@
### CHR image is both support BIOS and UEFI boot mode. ### CHR image is both support BIOS and UEFI boot mode.
### Support online upgrade. ### Support online upgrade.
![](install.png) ![](image/install.png)
![](routeros.png) ![](image/routeros.png)
### license RouterOS for x86. ### license RouterOS for x86.
![](x86.png) ![](image/x86.png)
### license RouterOS for chr, Support online renew license. ### license RouterOS for chr, Support online renew license.
![](chr.png) ![](image/chr.png)
## How to use shell ## How to use shell
install option-{version}.npk package install option-{version}.npk package

View File

@ -6,13 +6,13 @@
### CHR镜像文件同时支持BIOS和UEFI启动模式 ### CHR镜像文件同时支持BIOS和UEFI启动模式
### 支持在线升级 ### 支持在线升级
![](install.png) ![](image/install.png)
![](routeros.png) ![](image/routeros.png)
### x86模式授权许可 ### x86模式授权许可
![](x86.png) ![](image/x86.png)
### chr模式授权许可支持在线授权许可 ### chr模式授权许可支持在线授权许可
![](chr.png) ![](image/chr.png)
## 如何使用Shell ## 如何使用Shell
安装 option-{version}.npk 包 安装 option-{version}.npk 包

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

Before

Width:  |  Height:  |  Size: 607 KiB

After

Width:  |  Height:  |  Size: 607 KiB

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -1,15 +1,4 @@
import struct,lzma import struct,lzma
# ROUTEROS_BOOT = {
# 129:{'arch':'power','name':'Powerboot','filter':lzma.FILTER_POWERPC},
# 130:{'arch':'e500','name':'e500_boot'},
# 131:{'arch':'mips','name':'Mips_boot'},
# 135:{'arch':'400','name':'440__boot'},
# 136:{'arch':'tile','name':'tile_boot'},
# 137:{'arch':'arm','name':'ARM__boot','filter':lzma.FILTER_ARMTHUMB},
# 138:{'arch':'mmips','name':'MMipsBoot'},
# 139:{'arch':'arm64','name':'ARM64__boot','filter':lzma.FILTER_ARMTHUMB},
# 143:{'arch':'x86_64','name':'x86_64boot'}
# }
def find_7zXZ_data(data:bytes): def find_7zXZ_data(data:bytes):
offset1 = 0 offset1 = 0

View File

@ -71,38 +71,8 @@ def patch_squashfs(path,key_dict):
data = data.replace(old_url,new_url) data = data.replace(old_url,new_url)
open(file,'wb').write(data) open(file,'wb').write(data)
def patch_elf(data: bytes,key_dict:dict):
def find_7zXZ_data(data:bytes):
offset1 = 0
_data = data
while b'\xFD7zXZ\x00\x00\x01' in _data:
offset1 = offset1 + _data.index(b'\xFD7zXZ\x00\x00\x01') + 8
_data = _data[offset1:]
offset1 -= 8
offset2 = 0
_data = data
while b'\x00\x01\x59\x5A' in _data:
offset2 = offset2 + _data.index(b'\x00\x01\x59\x5A') + 4
_data = _data[offset2:]
offset2
return data[offset1:offset2]
initrd_xz = find_7zXZ_data(data)
initrd = lzma.decompress(initrd_xz)
new_initrd = initrd
for old_public_key,new_public_key in key_dict.items():
if old_public_key in new_initrd:
print(f'initramfs public key patched {old_public_key[:16].hex().upper()}...')
new_initrd = new_initrd.replace(old_public_key,new_public_key)
filters=[{"id": lzma.FILTER_LZMA2, "preset": 9,}]
new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=filters)
assert len(new_initrd_xz) <= len(initrd_xz),'new initrd xz size is too big'
new_initrd_xz = new_initrd_xz.ljust(len(initrd_xz),b'\0')
new_data = data.replace(initrd_xz,new_initrd_xz)
return new_data
def patch_kernel(data:bytes,key_dict): def patch_kernel(data:bytes,key_dict):
from netinstall import patch_elf
if data[:2] == b'MZ': if data[:2] == b'MZ':
print('patching EFI Kernel') print('patching EFI Kernel')
if data[56:60] == b'ARM\x64': if data[56:60] == b'ARM\x64':