构建自己的 LINUX 系统(四)
来源:互联网 发布:xls导入数据库 编辑:程序博客网 时间:2024/04/19 15:44
这次我们要为 mylinux 预装应用程序了,考虑到 TinyCore 没有预装 wifi 模块,
所以我们在 mylinux 上安装一下吧!
准备 TC 的 wifi 模块包及所需要的依赖库
首先准备 wifi 模块和依赖库的安装包列表(你也可以自己去准备,不过我这里已经准备了一个了)
cd mylinux/mkdir extends/wifi_modulewget -O extends/wifi_module/wifi.lst http://git.oschina.net/bxtkezhan/TCLinux-DEP/raw/master/wifi.lst?dir=0&filepath=wifi.lst&oid=d3486be12b4c6d5ce8a02b088962d859b25b0d8f&sha=552f7598cc915fdb0f8b713f653d60c33a675294
这个列表其实只是从 TC 的安装软件中直接获取的,并不方便我们使用,于是我们构建如下 Python 工具来调整它
mkdir toolstouch tools/make_good_lst.py
代码如下:
#! /usr/bin/env python3def calc_space(line): for i in range(len(line)): if line[i] != ' ': return idef calc_levels(lines): levels = list(set(map(calc_space, lines))) levels.sort() return levelsdef calc_indexs(lines, level): indexs = [] levels = list(map(calc_space, lines)) for i in range(len(levels)): if levels[i] == level: indexs.append(i) return indexsdef sort_lines(lines): levels = calc_levels(lines) outlines = [] if len(levels) <= 1: return lines top_indexs = calc_indexs(lines, levels[0]) for i in range(len(top_indexs)-1): newlines = lines[top_indexs[i]+1:top_indexs[i+1]] sections = sort_lines(newlines) outlines.extend(sections) outlines.append(lines[top_indexs[i]]) else: newlines = lines[top_indexs[-1]+1:] sections = sort_lines(newlines) outlines.extend(sections) outlines.append(lines[top_indexs[-1]]) return outlinesdef to_sort_set(lines): lines = list(map(str.lstrip, lines)) outlines = [] for line in lines: if line not in outlines: outlines.append(line) return outlinesdef load_lst(filename): try: with open(filename, 'r') as f: return f.readlines() except IOError as e: print('Read Faild, Error: {}'.format(e)) return Falsedef dump_lst(lines, filename): try: with open(filename, 'w') as f: for line in lines: f.write(line) except IOError as e: print('Write Faild, Error: {}'.format(e))def make_good_lst(input_lst, output_lst): lines = load_lst(input_lst) if lines != False and len(lines) > 0: lines = sort_lines(lines) lines = to_sort_set(lines) dump_lst(lines, output_lst)if __name__ == '__main__': import sys if len(sys.argv) != 3: print('Bad CMD!') else: make_good_lst(sys.argv[1], sys.argv[2])
现在我们来使用它生成我们需要的包列表
python3 tools/make_good_lst.py extends/wifi_module/wifi.lst extends/wifi_module/wifi.lst
下载表单中包文件并批量生成校验文件
cd extends/wifi_modulefor tcz in $(cat wifi.lst); do wget "http://tinycorelinux.net/7.x/x86/tcz/$tcz"; donefor tcz in *.tcz; do md5sum $tcz > "$tcz.md5.txt"; donelscd ../..
重构我们的 mylinux
编写 mylinux 下的 Makefile
QEMU:=qemu-system-i386out.iso: boot/ cde/ extends/ mkdir build/ cp boot/ build/ -af cp cde/ build/ -af cp extends/tcz_lib/* build/cde/optional/ -af cp extends/wifi_module/*.tcz* build/cde/optional/ -af cat extends/wifi_module/wifi.lst >> build/cde/copy2fs.lst cat extends/wifi_module/wifi.lst >> build/cde/onboot.lst cat extends/wifi_module/wifi.lst >> build/cde/xbase.lst mkisofs -D -r -V "mylinux v0.10" -cache-inodes -J -l \ -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table -o out.iso build/ isohybrid out.iso cp -fv out.iso release/mylinux.isorun: out.iso ${QEMU} -cdrom out.iso -boot d -m 256clean: rm -rf out.iso build/
重构并运行测试
sudo make cleansudo makemake run
0 0
- 构建自己的 LINUX 系统(四)
- 构建自己的Linux系统记录(四)
- 构建自己的 LINUX 系统(一)
- 构建自己的 LINUX 系统(二)
- 构建自己的 LINUX 系统(三)
- 构建自己的Linux系统记录(一)
- 构建自己的Linux系统记录(二)
- 构建自己的Linux系统记录(三)
- 构建自己的Linux系统反思(一)
- 构建自己的Linux系统记录(五)
- 构建自己的Linux系统反思(二)
- 从头构建自己的Linux系统 -转
- 从头构建自己的Linux系统
- Linux内核构建系统之四
- Linux内核构建系统之四
- 为Cubieboard2构建自己的的Debian Linux的步骤(3)(分色排版)下载并配置debian系统
- 构建自己的博客系统的技术
- Linux From Scratch 构建自己的 Linux
- Linux环境redis集群搭建
- Hard 301题 Remove Invalid Parentheses
- (九)XML之DOM4J详解
- Cocos2d-x游戏引擎开发[3]----建立锚点 (重建了一个类)
- 【 Makefile 编程基础之二】Makefile 书写规划以及语法规则
- 构建自己的 LINUX 系统(四)
- spring 4.3.3和hibernate 5.2.3整合 关于报“unable to load class org.hibernate.cfg.Configuration”异常
- MasterPageFile 模板页使用总结
- 关于oracle的boolean问题
- Android Wi-Fi Display(Miracast)介绍
- Java中的注解是如何工作的?
- HDFS 原理、架构与特性介绍
- 设计模式Java
- 关于ExpandableListView刷新的解决办法