タグ付けされた質問 「linux-kernel」

Linuxカーネルお​​よびLinuxカーネル関連のトピックに関する質問。システムコール、カーネルのカスタマイズなどの実装の詳細。カーネルの詳細を含まないLinuxユーザー空間のトピックには、[linux]または配布タグの方が適しています。

1
Linuxコンテキストスイッチの頻度を変更する方法は?
Linux(linaro、ubuntu、debian)のコンテキスト切り替え頻度を変更するにはどうすればよいですか? 応答性の低いシステムをより効率的なシステムにトレードオフしても大丈夫です。 EDIT1:可能な限り高速に実行するメインプロセス(1秒あたりの最大クロックサイクル)があるため、コンテキストスイッチの頻度を減らす(=タイムスライスを増やす)と考えました。問題はそれをどのように行うかであり、重大な効果があるでしょう。コンテキストスイッチのコストを計算できますか?つまり、タイムスライスを2ずつ増やした場合、推定できるのは、関心のあるメインプロセスのパフォーマンスの向上(%)です。


2
BFQスケジューラを有効にして使用する方法
Ubuntu 17.04にukuu(Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility)を使用してLinuxカーネルバージョン4.12をインストールしました。 問題は、使用可能なI / Oスケジューラーを確認したときに、BFQもKyber I / Oスケジューラーも見つからないように見えることです。 cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq] それでは、このLinuxバージョンで新しいスケジューラの1つを使用する方法は?


2
Linuxカーネルがカスタムキーボードスキャンコードを削除する
私は現代のコンピューターでの使用に適応しているビンテージIBM 122キーモデルMキーボードを持っています。私は、Teensy 2.0を使用してエンコードを行い、USB側を処理しています。Humble Hackerキーボードプロジェクト(https://github.com/humblehacker/keyboard)からファームウェアを借用し、ビルド構成に追加のキーを追加しました。ここまでは順調ですね。 「通常の」キーはすべて機能しますが、カーネルは余分なキー(F13- F24など)を削除しているようです。 実行/lib/udev/keymap -i input/event0すると、すべての通常キーのスキャンコードが表示されますが、追加キーのスキャンコードは表示されません。 wiresharkUSBポートのパケットキャプチャを実行すると、キーボードがスキャンコードを送信していることがわかりますが、カーネルは原則としてスキャンコードをドロップしているようです。 これはカーネルドライバーに含まれているもので、予期しないスキャンコードを配信していないだけだと思います。 .hカーネルソースのどこかのファイルにある種の「マスター」キーマップがあると思いますが、これまでのところ、それを見つける努力は成功していません。 Xの余分なキーのマッピングについて尋ねているのではないことを強調しておく必要があります。これは、カーネルに関連する低レベルの問題です。今のところ、Xをまったく使用しないと仮定します。必要なのは、実行時にスキャンコードが表示されるようにすることで/lib/udev/keymap -i、そこから残りを実行できます。


2
GRUB2およびカーネルvga =パラメーター
ドキュメントによると、vga=カーネルパラメーターの使用はGRUB2で非推奨になりました。一部の新しいカーネルが特定のアダプターでサポートしていないように見えるという事実は、私が持っているグラフィックスカードが7〜8年前のものであるため、問題ではありません。 問題は、デフォルトの80x25文字ではなく、80x50などの高解像度テキストモードを使用したいということです。どうやらすべてのグラフィックス(VBE / VESA)モードはこのグラフィックスカード(ATI Rage XL)の対象外です-利用可能なモードのリストは0を通してのみ表示され6ます。6でも80x60恐ろしいように見えるので、1(80x50)にしたいと思います。 デフォルトモードがサポートされていない場合(デフォルトはコメントアウトGRUB_TERMINAL=console)、使用可能なモードのリストを取得した後、80x50および80x60が動作するのを確認し、選択するように求められました。 カーネルコマンドラインですべての使用GRUB_GFXMODE(プリロードvbeモジュールの有無にかかわらず)を設定して、GRUB_GFXPAYLOAD_LINUX=keep失敗する場合、モードを設定するにはどうすればよいですか?このように失敗します:このマシンにあるカードのグラフィックモードが無効であるため、画面が空白のままになりますか? 私の考えはnomodesetまだカーネルに渡すことですが、ブートローダーはグラフィックモードを設定する必要があります。そして、それvga=を行うためのカーネルパラメーター以外のオプションは表示されません。 注:vbetestとvideotestGRUB2コンソール意志の空白のコマンド画面と、画面には何のビデオ入力がないと主張した後、スリープモードに切り替わります。vbeinfoそしてvideoinfo上記以外のいくつかの利用可能なモードを示したが、これは設定されるべきところのない言及はありません。また、カーネルコマンドラインでvga=1(なしでnomodeset)を渡すと、廃止されることについて非常に短い警告が表示されますが、完全に読むには長すぎdmesgます。出力はに表示されません。

5
グラフィックカードのパススルー用にカーネルでIOMMUを有効にする
短い質問: intel_iommuLinuxカーネルの設定を有効にするにはどうすればよいですか?grub2ブートローダーを使用して、Debianホストを実行します。私が見たドキュメントは編集/boot/grub/menu.lstするように言っていますが、それはgrub 1.xにのみ関連しているようです、私はそのファイルを持っていないので。 このブートオプションを変更すると、次のエラーメッセージが表示されなくなる可能性があることを理解しています(そして最後に考えられるオプション)。 /var/log/kern.log vboxpci: No IOMMU domain (attach) 長い質問: ゲストOSにグラフィックカードへの直接アクセスを許可する 最近、PCI Expressデバイスを介してVirtualboxで実行されているゲストOSに渡すことができることに気付きました。かっこいい!2枚のNVIDIA Quadro FXグラフィックカード(SLIブリッジ接続があり、悲しみを引き起こさないことを願っています)があり、2番目のグラフィックカードをゲストOS専用にして、OpenGL機能を使用できるようにします。 Photoshopなど。 NVIDIAは、この「SLI Multi-OS」構成を販売しています。これは基本的に私が長年設定したかったものですが、仮想化ソフトウェア(Parallelsワークステーションエクストリーム)に大金をかけたくありません。 VirtualBoxを何年も使用して非常に満足しています。 ホストシステム Debianリポジトリからlinux-3.5.0-19を非常にハイエンドのワークステーション機器(Asus P6T7 WSスーパーコンピューターmobo w / Intel ICH10RチップセットおよびXeon W3680 CPU)で実行しており、カーネルでIOMMUサポートを有効にしたいできれば自分でコンパイルする必要はありません。 BIOS BIOS設定で、VT-xおよびVT-dサポートが有効になっています。ただし、IOMMUについて具体的に言及しているものは見当たりませんでした。 PCIデバイスの接続 これは驚くほど簡単でした!VirtualBoxの公式ドキュメントはこちらです。私がやったことは、あまり曖昧ではなかったが、開いてnvidia-settings、セカンダリグラフィックカードを選択し、バスID(私の場合は「PCI:5:0:0」)をメモすることでした。次に、ホストのコマンドラインから: VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0 (最初にこれを実行したとき、VirtualBoxがPIIXチップセットをエミュレートしているためエラーが発生しました。PCIパススルーはICH9チップセットでのみ機能すると述べました。したがって、VirtualBox VM System設定で必要な新しいドライバーをインストールします。後で再起動するとすべてが正常に機能したので、ゲストをシャットダウンしてコマンドを再実行しました。 出力がなかったため、ほぼすぐにコマンドラインに戻りました。 ゲストからホストGPUを使用する ゲストをオンにする前に、virtualbox-dkmsによって、カーネルで文書化されていないことが発生する場合に備えて、最初にホストマシンを再起動しました。sudo特権なしで前のコマンドを実行したため、変更が行われたのではないかと思います。 次にゲストを起動したときに、Windows Updateがその動作を開始し、正しいNVIDIAドライバーを自動的に検出してインストールしました。これまでのところ、すべてがよさそうだ。デバイスを使用する前に、ゲストを再起動する必要がありました... 問題 ゲストにグラフィックカードドライバーがインストールされ、PCIデバイスが接続されたため、Windowsデスクトップにアクセスできません。Windowsのログイン画面が表示されます。ログイン後、画面がフリーズし、「ようこそ」と言って、横に回転するはずの青い円が表示されません。 …

1
カーネルをコンパイルしようとすると、認証エラーが発生します
現在、Kali LinuxデスクトップにGrsecurityを使用して4.5.7カーネルをインストールするために、このガイドに従うことを試みています。私は4.5.7カーネルにGrsecurityのテストパッチを使用しようとしており、ストレートなDebianの代わりにKali Linuxを実行しているという事実を除いて、その命令のリストを逐語的にフォローしています。しかし、カーネルをコンパイルしようとするたびに、「CC certs / system_keyring.o」という行に続いてこのエラーが発生します。 CC certs/system_keyring.o make[2]: *** No rule to make target 'debian/certs/benh@debian.org.cert.pem', needed by 'certs/x509_certificate_list'. Stop. Makefile:951: recipe for target 'certs' failed make[1]: *** [certs] Error 2 make[1]: Leaving directory '/home/jc/Downloads/linux-4.5.7' debian/ruleset/targets/common.mk:295: recipe for target 'debian/stamp/build/kernel' failed make: *** [debian/stamp/build/kernel] Error 2 私が見つけたように、パッチや修正を適用しなくてもすべてのカーネルでこのエラーが発生するため、カーネルをコンパイルするために使用しているツール(明らかに何らかのシステムキーチェーン)と関係があります。誰かが私のOSを修正してカーネルをコンパイルする方法を教えてもらえますか? PSこれは次の出力ですcat /proc/version。 Linux …

1
「memfd」を「ファイルを所有するプロセス」に説明されていると考えるのは間違っていますか?
https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/ 理論的には、次のmemfd_create()ような新しいsyscallを導入せずに[ ]動作を実現できます。 int fd = open("/tmp", O_RDWR | O_TMPFILE | O_EXCL, S_IRWXU); (ここでtmpfsをより移植可能に保証するには、「/dev/shm」の代わりに「/tmp」を使用できます)。 したがって、最も重要な質問は、なぜ地獄には第三の方法が必要なのかということです。 [...] バッキングメモリは、ファイルを所有するプロセスに割り当てられ、mount-quotasの影響を受けません。 ^この文の最初の部分は信頼できないと思うのは正しいですか? memfd_create()コードは、文字通り「として実装されているカーネル内部でなければならない[A] TMPFSにリンクされていないファイル・リビング」。コードをトレースすると、LSMチェックを実装していない点が異なることを理解しています。また、ブログ投稿で説明しているように、「シール」をサポートするためにmemfdsも作成されています。ただし、me​​mfdsが原則としてtmpfileとは異なる方法で説明されることは非常に懐疑的です。 具体的には、OOM-killerがノッキングを起こすと、memfdsが保持しているメモリを考慮しないと思います。これは、RAMの最大50%(tmpfsのsize =オプションの値)になります。カーネルは内部tmpfsに異なる値を設定しないため、デフォルトサイズの50%を使用します。 したがって、一般に、大きなmemfdを保持するプロセスを期待できるが、他の重要なメモリ割り当てはOOMで強制終了されないでしょう。あれは正しいですか?

4
CentOS 7で古いカーネルバージョンを安全に削除するにはどうすればよいですか?
CentOS 7で競合するカーネルに起因する奇妙な症状に遭遇する可能性があります。それでは、古いカーネルを安全に削除するにはどうすればよいですか?そして、どのカーネルが最新のものであるかをどのようにして知ることができますか? 以下は、問題のサーバーでこれを調査するときに得られる端末出力です。パッケージのクリーンアップを試みましたが、同じ2つのカーネルが残っていることに注意してください。 このチュートリアルの手順では、次の2つのコマンドの出力は一致するはずですが、再起動後でも一致しないことがわかります。 [root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1 kernel-3.10.0-229.el7.x86_64 [root@localhost ~]# uname -r 3.10.0-229.14.1.el7.x86_64 残りのコマンドは、2つのカーネルがあることを確認し、古いカーネルを削除する試みを示しています。 [root@localhost ~]# cd /usr/src/kernels [root@localhost kernels]# ls -al total 16 drwxr-xr-x. 4 root root 4096 Oct 2 12:55 . drwxr-xr-x. 4 root root 4096 Oct 2 13:15 .. drwxr-xr-x. …

1
kworkerスレッド名をどのように解釈しますか?
デュアルソケットXeon X5650ヘキサコアボード上で実行されているLinux 3.11.0-13-genericでは、htop異なるkworkerスレッドが表示されます。名前順に並べ替えます(ここで示した結果を少し調整して、コア2のスレッドをコア10のスレッドの前に配置しました)。結果​​は次のとおりです。 kworker/0:0H kworker/0:1 kworker/0:2 kworker/1:0 kworker/1:0H kworker/1:1 kworker/2:0 kworker/2:0H kworker/2:1 ..... kworker/11:0 kworker/11:0H kworker/11:1 kworker/u48:0 kworker/u49:4 kworker/u49:5 kworker/u50:1 kworker/u50:2 ....... 名前が数字で始まるスレッドは、同じ数字でコアに固定されます。だから最初の数字はスレッドを実行しているコアであり、これらのスレッドの記号:(0または0Hor 1)は何ですか? また、uXX:Yシンボルの意味は何ですか? 私はkworkerスレッドが何をするかについて漠然とした知識しか持っていません。I/ Oを実行するシステムコールによって引き起こされる非同期イベントを処理します。どこかに文書化されていますか?

3
カーネル:名前空間のサポート
Linuxカーネルの「ネームスペースサポート」機能の正確な意味を知りたい。カーネル3.11.1(現時点で最新の安定したカーネル)を使用しています。 無効にすることにした場合、システムの変更に気付きますか? 誰かが名前空間を使用することに決めた場合NAMESPACES=Y、カーネルでコンパイルするだけで十分ですか、それともユーザースペースツールも必要ですか?

3
Linuxカーネルのメーリングリストアーカイブを検索するにはどうすればよいですか?
Linuxカーネルのメーリングリストを検索して、このテーマに関する最近の議論について、Linuxカーネルの機能がLinuxインストールから欠落しているように見える理由を調査したいと思います。メーリングリストアーカイブの検索を提供している唯一のサイトはgmaneです。ただし、gmaneで引用符付きの用語(たとえば、「/ usr / firmware」)を検索しても、結果が引用符付きのフレーズのみを含むように制限されるわけではありません。Linuxカーネルメーリングリストのより高度な検索はありますか?

9
286上のLinux?
私は286を所有しておらず、Linuxを実行するつもりもありません。ただし、286にはプロテクトモードがあるため、Linuxには386 CPU以上が必要であると頻繁に述べられているのはなぜですか? http://tuxmobil.org/286_mobile.htmlから、LinuxのELKSバージョンは286で実行できるようですが、これは正しいですか?286 CPUでカーネルを実行できるようにするために、(もしあれば)何を変更しましたか? 現在、386用にコンパイルされたカーネルは286 CPU(16ビット)で実行できないことを理解しています。私の質問は、なぜ標準Linuxカーネルを286用にコンパイルしてから286で実行できないのかということです。LinuxにはハードウェアVM86サポートが必要ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.