diff --git a/aptpkginfo.cpp b/aptpkginfo.cpp
index de1a7fb..f766a4d 100644
--- a/aptpkginfo.cpp
+++ b/aptpkginfo.cpp
@@ -69,6 +69,14 @@ void AptPkgInfo::ReadAptData()
                         status = pkgDataStatus::UnContain;
                     }
                     break;
+                case PkgSearchOption::HeadInclude:
+                    if(pkgName.mid(0, this->pkgName.length()) == this->pkgName) {
+                        status = pkgDataStatus::IsContain;
+                    }
+                    else {
+                        status = pkgDataStatus::UnContain;
+                    }
+                    break;
                 }
                 // 解析为 QJsonObject
                 pkgData.insert("Package", pkgName);
@@ -87,7 +95,7 @@ void AptPkgInfo::ReadAptData()
 void AptPkgInfo::SetPkgName(QString pkgName)
 {
     this->pkgName = pkgName;
-    pkgInfo = GetPkgInfo(pkgName);
+    //pkgInfo = GetPkgInfo(pkgName);
 }
 
 QString AptPkgInfo::GetPkgInfo(QString pkgName) const
diff --git a/aptpkginfo.h b/aptpkginfo.h
index d75ddd4..8f4ad63 100644
--- a/aptpkginfo.h
+++ b/aptpkginfo.h
@@ -11,7 +11,8 @@ class AptPkgInfo: QObject
 public:
     enum PkgSearchOption {
         Include = 0,
-        Equal = 1
+        Equal = 1,
+        HeadInclude = 2
     };
 
     AptPkgInfo(QString pkgName, PkgSearchOption option = PkgSearchOption::Equal);
diff --git a/kernelinformation.cpp b/kernelinformation.cpp
index 13d8470..a552ea9 100644
--- a/kernelinformation.cpp
+++ b/kernelinformation.cpp
@@ -15,18 +15,53 @@ void KernelInformation::LoadInfo()
     /*for(QString i: data) {
 
     }*/
-    AptPkgInfo info = AptPkgInfo("linux-", AptPkgInfo::PkgSearchOption::Include);
+    AptPkgInfo info = AptPkgInfo("linux-", AptPkgInfo::PkgSearchOption::HeadInclude);
     QStringList list = info.GetAptPackageList();
     QJsonArray array;
     for(QString i: list) {
         QJsonObject object;
-        info.SetPkgName(i);
-        object.insert("Name", i);
+        bool isContinue = false;
+        for(QString j: unShowMap) {
+            if(i.contains(j)) {
+                isContinue = true;
+                break;
+            }
+        }
+        // 跳过此次循环
+        if(isContinue) {
+            continue;
+        }
+        isContinue = true;
+        for(QString j: showMap) {
+            if(i.contains(j)) {
+                isContinue = false;
+                break;
+            }
+        }
+        // 跳过此次循环
+        if(isContinue) {
+            continue;
+        }
+        QString strTemp = i;
+        strTemp.replace("-image", "");
+        strTemp.replace("-headers", "");
+        int alreadyIndex = -1;
+        if(indexMap.contains(strTemp)) {
+            // 如果已经存在
+            alreadyIndex = indexMap.value(strTemp);
+            QJsonArray pkgArray = array.at(alreadyIndex).toObject().value("PkgName").toArray();
+            pkgArray.append(i);
+            array.insert(alreadyIndex, array.at(alreadyIndex).toObject().insert("PkgName", pkgArray)->toObject());
+            //array.at(alreadyIndex).toObject().insert("PkgName", pkgArray);
+            continue;
+        }
+        info.SetPkgName(strTemp);
+        object.insert("Name", strTemp);
         object.insert("Author", info.get_maintainer(i));
         object.insert("Des", info.get_maintainer(i));
         object.insert("Arch", info.get_architecture(i));
+        object.insert("PkgName", QJsonArray::fromStringList(QStringList() << i));
         array.append(object);
-        qDebug() << object;
     }
     this->listData = array;
     emit loadFinished(NULL);
diff --git a/kernelinformation.h b/kernelinformation.h
index e57e335..9d28759 100644
--- a/kernelinformation.h
+++ b/kernelinformation.h
@@ -15,6 +15,7 @@
 #include <QProcess>
 
 #include <QFile>
+#include <QMap>
 
 class KernelInformation : public QObject
 {
@@ -47,6 +48,18 @@ private:
     QString url = "http://info.kernel.gxde.gfdgdxi.top/information.json";
     QJsonArray listData;
 
+    QStringList unShowMap = {
+        "-dbg"
+    };
+
+    QStringList showMap = {
+        "linux-headers",
+        "linux-image",
+        "linux-kernel"
+    };
+
+    QMap<QString, int> indexMap;
+
 
 };
 
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 023543c..c15aa8a 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -20,7 +20,6 @@ void MainWindow::RefreshKernelList()
 {
     ui->m_nowKernel->setText(tr("Kernel: ") + kernelInformation->localKernelName() + " " + tr("Arch: ") + kernelInformation->arch());
     connect(kernelInformation, &KernelInformation::loadFinished, this, [this](){
-        qDebug() << this->kernelInformation->get_listData();
         RefreshKernelListView(kernelInformation, ui->m_showLocalArchOnly->isChecked());
     });
     kernelInformation->LoadInfo();
@@ -54,7 +53,7 @@ void MainWindow::RefreshKernelListView(KernelInformation *info, bool showLocalAr
         model->setItem(line, 1, new QStandardItem(info->get_name(i)));
         model->setItem(line, 2, new QStandardItem(info->get_author(i)));
         model->setItem(line, 3, new QStandardItem(kernelArch));
-        //model->setItem(line, 4, new QStandardItem((QStringList() << "" << "Y").at(info->get_installedAlready(i))));
+        model->setItem(line, 4, new QStandardItem((QStringList() << "" << "Y").at(info->get_installedAlready(i))));
         line++;
     }
     ui->m_kernelShow->setModel(model);