質問: VirtualBoxにインストールしたKali LinuxにGuest Additionsをインストールしたいのにですが、 `apt install virtualbox-guest-x11`を実行するとパッケージが見つからないと出てきます。 ![端末画面](https://i.stack.imgur.com/uRtec.png) 色々と調べて見たのですが、`sources.list`の設定がおかしいような気がします。 ![sorces.list中身](https://i.stack.imgur.com/y4d98.png) 中身が写真のようになっているのですがどのようにしたらようでしょうか? CDに設定ファイルをマウントしてインストールする方法があると知ったのですが、実行すると linux-headers-4.13.0-kali1-amd64のインストールが必要だみたいなことを言われるのでapt-getでインストールしようとするとパッケージが見つかりません。と表示されます。 **試したこと** `apt-get install linux-headers-$(uname -r)`も以下と同じで見つからないと表示されます。 `apt-get install linux-headers-4.13.0`を試して見たのですがパッケージが見つからないと表示されます。 ![linux-headers-4.13.0](https://i.stack.imgur.com/5y1UG.png) 勉強会で必要なので使えるようにしたいのですが、次から次に問題が起きて全然使えないです。 詳しいエンジニアの方々お力を貸して頂けると幸いです。 **気になること** インストールする際にミラーの設定が上手く行かなかったのかダウンロードするファイルをせずに無視して続行してしまった箇所があります。それが今のエラーが頻繁に起きる原因な気もします。 どうやら現在、kali linuxのサーバーの調子が悪いらしい。 ![virtual-guestインストールエラー](https://i.stack.imgur.com/fF5Az.png)
回答: いくつかの前置き ### VirtualBox VirtualBoxのゲストOSとしてLinuxを使用している場合、Guest AdditionsをインストールするにはゲストOSで使用中のカーネルバージョンに対応したヘッダーファイル(=パッケージ)が必要になります。 ディストリビューションによってパッケージ名が異なりますが、Debian系だと "linux-image" がカーネルイメージ、"linux-headers" がカーネルヘッダになります。 (参考までに、RHEL/CentOSなどは "kernel-headers" がカーネルヘッダのパッケージ名) ### Kali Linux Kali Linuxに関してはローリングリリースを採用しており、パッケージの更新頻度が頻繁に行われるため、古いパッケージはリポジトリから随時削除されている可能性があります。 ### apt-get (apt) `apt-get install`する前に、まず`apt-get update`でパッケージ情報を更新しましょう。 パッケージが見つからない場合には、`apt-cache `でパッケージを検索しましょう。 なお、`apt-get`は現在`apt`コマンドに置き換えられています。 Kali Linuxの場合、`/etc/apt/sources.list`に以下のエントリが含まれているかを確認してください。 ``` deb http://http.kali.org/kali kali-rolling main contrib non-free ``` 実際の作業 まずはOSを最新の状態に更新しましょう。 ``` apt update apt upgrade apt dist-upgrade # カーネル更新 reboot # 一旦変更を反映 ``` 最新のカーネルイメージで動作している状態で、対応するバージョンのカーネルヘッダ(パッケージ)をインストールします。 ``` apt install linux-headers-$(uname -r) apt autoremove # 不要になったパッケージ(古いカーネル)を削除 ``` 以上の手順が済んだら、Guest Additionsのインストールに取り掛かりましょう。 参考: Headers For 4.12.0-kali1-amd64 or Location of Kali 4.13 Installer - UNIX & Linux Stack Exchange