批量下载Linux Kernel版本,并对本地的Kernel进行比较

自己写的一个批量下载Kernel.org版本,并对本地的Kernel进行比较的脚本。记录一下吧。

自己部门6年前维护的一个kernel版本,只知道是基于kernel 2.6版本,却不知道是基于2.6.x版的。于是乎,写了这么个脚本,批量把2.6.x的所有版本全部下载回来,使用diff一一进行比对(导出到conclusion/diff-2.6.x-and-k2.txt文件中),并将所有版本的diff结果进行分析,再将分析数据导出到conclusion/all.txt中。

在conclusion/all.txt中,第一列是diff时官方的版本号,第二列是diff结果(conclusion/diff-2.6.x-and-k2.txt)的行数。重点在于第二列,这些数字中最小的那一个所对应的版本号,应该就是我部门维护的kernel的详细版本号了。

#!/bin/bash
for i in `seq 0 39`
do
    echo donwloading https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.tar.bz2
    wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.tar.bz2
    for a in `seq 1 57`
    do
        echo downloading https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.$a.tar.bz2
        wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.$i.$a.tar.bz2
    done
done

if [ ! -d conclusion ]; then
    mkdir conclusion
fi

for file in `ls linux-2.6.*.tar.bz2`
do
    dirname=${file%.tar*}
    version=${dirname##*-}
    echo $dirname
    echo $version
    tar -jxvf $file
    diff -r $dirname k2_os-kernel-2.6.28.10 > conclusion/diff-$version-and-k2.txt
    rm -rf $dirname

    stat=`cat conclusion/diff-$version-and-k2.txt | wc -l`
    echo $version '        ' $stat >> conclusion/all.txt
done

count=`awk -F ' ' '{print $2}' conclusion/all.txt | sort -n | head -1`
version=`cat conclusion/all.txt | grep $count$ | awk -F ' ' '{print $1}' $line`
echo '' >> conclusion/all.txt
echo The shortest diff is $count, which kernel version is $version >> conclusion/all.txt

发表评论

您的电子邮箱地址不会被公开。