构建自己的 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
原创粉丝点击