Ползвай dpkg -i само в краен случай. При наличие на gdebi, винаги инсталирай .deb пакетите с нея.
Схемата на инсталация на ядро от ubuntu kernel е следната.
Първо, инсталираш linux-headers_all.deb
След това, linux-headers за съответната архитектура (примерно linux-headers-amd64.deb)
Накрая, инсталираш самото ядро linux-image за съответната архитектура (linux-image-amd64.deb).
Не мисля. header-all пакетите са всъщност метапакети, които обикновено влачат освен пакета с хедърите и пакета със съответната gcc версия с която е билднато ядрото. Всичко това заради kernel versioning-а, който включва и версията на компилатора, нещо което лично според мен е по-скоро досадно, отколкото смислено в повечето случаи, но whatever, случаите в които има смисъл може и да оправдават заниманието, няма да споря с kernel developer-ите в крайна сметка, така или иначе това е реалността.
Хедърите не би трябвало изобщо да са ти необходими за инсталация на новия kernel. Те са необходими единствено когато билдваш модули за новата версия на ядрото и поради ред причини по дефолт няма да можеш да ги билднеш ако не си boot-нал новата версия. Сега идва супер интересния момент какво става ако модулите ти трябват заредени за да boot-неш, понеже инсталацията на image пакета ти създава и initrd-то, което вика depmod върху дървото с модулите от image пакета и не ебава нищо извън него. Отговорът е известни драми и сблъсък с това как GNU make функционира, след това сблъсък с това съответно как update-initramfs функционира.
Та в общият случай е достатъчно просто да инсталираш image пакета и да рестартираш. В по-лошият случай се налага постфактум след рестарта да инсталираш и хедърите за да можеш да си билднеш драйверите (като -all пакета би следвало да свърши работа, архитектурно-специфичния пакет всъщност се инсталира като зависимост на all нещото). Ако имаш много лош късмет, примерно крив RAID контролер от който бутваш, тогава се вкарваш в гореописаните приключения и няма да се спасиш просто с инсталацията на няколко пакета.
И между другото, няма различни архитектурно-специфични хедъри. Всичко архитектурно-зависимо е реализирано под формата на препроцесорни макроси. Всичките define-нати в един хедър файл. Тоя един файл е единствената разлика между kernel-headers-нещоси-amd64 и kernel-headers-нещоси-atmel примерно. Не съм толкова заапознат с дебианските решения и процеси, но според мен това можеше да се реализира изцяло с multiarch средствата без да се пръкват пакети с различни имена. Всъщност знам причината за раздуването на namespace-а, такива частни случаи като PAE, ама пак ми се вижда брутално, не може да няма по-интелигентен вариант. Батка, като напишеш apt-get install linux-image-версия-* и толкова пакети излизат, може да те заболи главата