diff --git a/read_info.py b/read_info.py index 3ef95bf..d02365b 100644 --- a/read_info.py +++ b/read_info.py @@ -31,7 +31,9 @@ class Bootloader(): spi_rom = False class BaseInfo(): + linux_stamp = None linux_ver = None + linux_arch = None cpu_arch = None cpu_name = None spi_rom = False @@ -432,6 +434,12 @@ class DevInfo(): x = re.search(r'Linux version (.*?) ', self.dmesg) if x: ret.linux_ver = x.group(1).strip() + kernel_version = self.get_kernel_version(verbose = verbose) + if not ret.linux_ver: + if kernel_version: + ret.linux_ver = kernel_version + ret.linux_stamp = self.kernel_ver_stamp + ret.linux_arch = self.kernel_arch if verbose: print(' Linux version: {}'.format(ret.linux_ver)) fn_local = 'outdir/openwrt_release.txt' @@ -545,6 +553,34 @@ class DevInfo(): #self.kcmdline = type("Names", [object], self.kcmdline) return self.kcmdline + def get_kernel_version(self, verbose = None): + verbose = verbose if verbose is not None else self.verbose + self.kernel_ver_stamp = None + self.kernel_version = None + self.kernel_buildver = None + self.kernel_arch = None + fn = 'kver.txt' + cmd = f'uname -a > /tmp/{fn} ; ' # Linux XiaoQiang 5.4.213 #0 SMP PREEMPT Tue Feb 18 11:11:56 2025 armv7l GNU/Linux + cmd += f'uname -r >> /tmp/{fn} ; ' # 5.4.213 + cmd += f'uname -v >> /tmp/{fn} ; ' # #0 SMP PREEMPT Tue Feb 18 11:11:56 2025 + cmd += f'uname -m >> /tmp/{fn} ; ' # armv7l + cmd += f'uname -p >> /tmp/{fn} ; ' # + out_text = self.run_command(cmd, fn) + if not out_text: + return None + #if 'Linux' not in out_text: + # return None + out_lines = out_text.split('\n') + if len(out_lines) < 4: + return None + self.kernel_ver_stamp = out_lines[0].strip() + self.kernel_version = out_lines[1].strip() + self.kernel_buildver = out_lines[2].strip() + self.kernel_arch = out_lines[3].strip() + if verbose: + print(f" Kernel version: {self.kernel_ver_stamp}") + return self.kernel_version + def get_nvram(self, verbose = None, retdict = True): verbose = verbose if verbose is not None else self.verbose self.nvram = {} if retdict else None @@ -1110,6 +1146,7 @@ if __name__ == "__main__": file.write(f' {"%2d" % i} > addr: {addr} size: {size} ro: {ro} name: "{name}" \n') file.write("\n") file.write("_Base_info_:\n") + file.write(' Linux stamp: {}\n'.format(info.info.linux_stamp)) file.write(' Linux version: {}\n'.format(info.info.linux_ver)) file.write(' CPU arch: {}\n'.format(info.info.cpu_arch)) file.write(' CPU name: {}\n'.format(info.info.cpu_name))