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

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

4
新しいIntel i7-6500U CPUでLinuxカーネルが起動しないのはなぜですか?
CPUを分離するのは難しいと思いますが、私が目にしているエラーはそれが問題であることを示唆しています。 これは間違いなく、誤動作/故障したハードウェアの問題ではありません。私は過去数日間、Windows 10を終日実行してきましたが、これは高速です!クラッシュはありません。さらに重要なことに、私はWindowsのメモリチェッカーを実行しました。メモリはすべて良好です。 機械スペック マシンは、まったく新しいLenovo Yoga 710 15 "です。 x64 Intel i7-6500 CPU @ 2.50 GHz, 2601 Mhz, 2 Cores, 4 Logical Processors SMBIOS Version 2.8 BIOS Mode UEFI 16.0 GB DDR4 Ram 256 MB SSD Linuxカーネルへの分離(?) 私は両方で同じ問題を見てきました archlinux-2016.08.01-dual.iso ubuntu-gnome-16.04.1-desktop-amd64.iso Archの場合-問題は、USBスティックからの起動時に断続的にのみ発生していました。私はなんとかドライブの100GB ext4パーティションにArchをインストールしました。そのインストールでは、起動中に断続的に(時間の90%のように)同じ問題が発生します。ブートに成功した場合、最初に実行したターミナルコマンドのカップルの後に問題がランダムに発生し、最終的に完全なデッドロックが発生します。 Ubuntuの場合-USBスティックも起動しません。私はこれらの同じエラーによってすぐに止められます。デッドロック... 非常に多くのエラー... ジャーナルには、これが発生すると必ずメモリ関連のエラーが発生しますが、主なエラーは次のとおりです。 General protection fault 0000[#1] PREEMPT …

2
要求されたIPアドレスが別の(無効な)インターフェースに関連付けられている場合、LinuxはARP要求メッセージに応答しません
私はPC(カーネル3.2.0-23-generic)を持ってい192.168.1.2/24ますが、これはeth0インターフェイスするように構成されて192.168.1.1おり192.168.1.2、tun0インターフェイスのアドレスを使用しています。 root@T42:~# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:41:54:01:93 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 scope global …

1
Linuxカーネル仮想ブリッジのポート番号を理解する
私はインターフェイスが含まれていますLinuxカーネルの仮想ブリッジを持っているeth1とtap0: # brctl show br0 bridge name bridge id STP enabled interfaces br0 8000.00016c404fa3 no eth1 tap0 # 仮想スイッチのMACアドレステーブルを表示すると、ポート番号2(tap0インターフェース)と3(eth1インターフェース)が表示されます。 # brctl showmacs br0 port no mac addr is local? ageing timer 3 00:00:5e:00:01:c9 no 0.11 3 00:01:6c:40:2d:94 no 0.53 3 00:01:6c:40:4f:a3 yes 0.00 3 00:01:6c:55:3a:72 no 55.33 3 00:02:b3:8d:48:a7 no …


1
複数のマシンのハードウェアをサポートするlocalmodconfigでカスタムカーネルを構築する方法
アプライアンスのように単一のタスクを実行するようにサーバーを構成する場合、カスタムカーネルを構築する必要が生じる可能性があります。たとえば、ディスク領域を節約します。 Ubuntu Core 13.10 amd64ルートファイルシステムは38 MBのダウンロードで、必要な依存関係を含む「linux-image-generic」メタパッケージは79 MBのアーカイブをダウンロードし、kernel-image-xyz-genericパッケージのサイズは14 MBのままです。。 ハードウェアが使用しないモジュールから削除されたカーネルを構築する場合、make localmodconfigコマンドはジョブに適したツールです。ただし、ビルドおよびテスト環境を実行する仮想マシンは、ターゲットのデプロイメントハードウェアとは異なるモジュールをロードします。または、しばらくすると、展開ハードウェアが機能しなくなり、別のハードウェアが使用されます。また、カーネルの更新がリリースされる頻度では、ハードウェア構成ごとにカスタムカーネルを構築するのが面倒になる場合があります。 いくつかの異なるハードウェアボックスで動作するカスタムLinuxカーネルをすばやく構築する方法は?

2
カーネルのどのファイルがsys_clone()システムコールを使用するためにfork()、vfork()…を指定するか
ltraceを使用してシステムコールをトレースすると、fork()がsys_fork()ではなくsys_clone()を使用することがわかりました。しかし、それが定義されているLinuxソースを見つけることができませんでした。 私のプログラムは #include<stdio.h> main() { int pid,i=0,j=0; pid=fork(); if(pid==0) printf("\nI am child\n"); else printf("\nI am parent\n"); } そしてltraceの出力は SYS_brk(NULL) = 0x019d0000 SYS_access("/etc/ld.so.nohwcap", 00) = -2 SYS_mmap(0, 8192, 3, 34, 0xffffffff) = 0x7fe3cf84f000 SYS_access("/etc/ld.so.preload", 04) = -2 SYS_open("/etc/ld.so.cache", 0, 01) = 3 SYS_fstat(3, 0x7fff47007890) = 0 SYS_mmap(0, 103967, 1, 2, 3) …

1
カーネルの.configファイルを32ビットから64ビットに変換するにはどうすればよいですか?
で、このページあなたは、新しい32ビットのLinuxカーネルのコンパイル時に特定のノートブックのアーキテクチャを対象とすることができます設定ファイルをダウンロードすることができます。 64ビット版が必要です。 私は何をしなければなりませんか?私はカーネルを2〜3回コンパイルしましたが、設定ファイルには触れず、常にインタラクティブメニューを使用しました。

1
RHEL 6とRHEL 5でCPU使用率が高くなる原因を特定する
現在、システムをRHEL 5からRHEL 6に移動することを検討していますが、RHEL 6マシンでのCPU使用率が予想外に高いという問題に遭遇しました。これは、少なくとも一部selectは、割り込み可能なスリープを行うためにを使用したことが原因である可能性があります。次に、動作を示す簡単な例を示します。 #include <sys/select.h> int main() { timeval ts; for (unsigned int ii=0; ii<10000; ++ii) { ts.tv_sec = 0; ts.tv_usec = 1000; select(0, 0, 0, 0, &ts); } return 0; } RHEL 5マシンでは、CPU使用率は0%のままですが、RHEL 6がインストールされている同じハードウェアでは、CPUの約0.5%を使用selectするため、30〜50のプログラムを実行してスリープを実行すると、大量のCPUが不必要に。 Bugzillaを開いてOProfileを実行してみましたが、カーネルを見ると、アプリケーションのmainが100%で、poll_idleが99%を超えているだけです(grubオプションにidle = pollが設定されているため、すべてをキャプチャできます)。 CPU使用率が高くなる原因を特定するために私ができることについて、他に何か考えはありますか? 更新:私はperfツールを見つけ、次の出力を得ました: # Events: 23K cycles # # Overhead Command Shared …

1
システムのフリーズをデバッグする方法は?
ラップトップの蓋を閉じると、奇妙なバグが発生します-システムがフリーズし(キーに反応せず、sshからの応答もありません)、奇妙な色の効果が表示されます。カーネルログ(再起動後)には何も表示されません。私の質問は-それをデバッグする方法は?たぶん、最後に呼び出されたカーネル関数などを追跡する方法はありますか?


2
コンソールとカーネルのフォントをリストする方法は?
インストール済みのコンソールフォントがいくつかインストールさ/lib/kbd/consolefonts/れています。 どうやってそれらをリストアップするのですか(明らかに私ができることはファイル名を見ることだけですが、利用可能なフォントのリストではありません)。 コンソールのフォントを変更するにはどうすればよいですか? これらのフォントのユーザー操作可能なディレクトリを作成するにはどうすればよい/usr/local/lib/consolefonts/ですか? 現在、私のカーネルはSYSFONTパラメータを受け入れますSYSFONT=latarcyrheb-sun16。私のカーネルがサポートするフォントとそれらをどのように選択できるか(たとえば、カーネルでコンパイルされたフォントをリストする方法など)のリストが欲しいのですが。

2
2.6.30.5 Linuxカーネルのstruct task_struct定義はどこにありますか?
バージョン2.6.15カーネルではtask_struct、次のようにファイル(include / linux / sched.h)を書き換えることができます。 struct task_struct { unsigned did_exec:1; pid_t pid; pid_t tgid; ... char hide; } しかし、残念ながら、バージョン2.6.30.5にアップグレードしたときに同じファイルを調べたところtask_struct、次のようなの宣言が見つかりました。 struct task_struct; また、自分のファイルを指定するためにどのファイルを参照すればよいのtask_structかわかりません。誰かが私を助けてくれますか?

2
Linuxの最小TCP MSS
LinuxのTCP MSSは少なくとも88(include / net / tcp.h)でなければなりません: /* Minimal accepted MSS. It is (60+60+8) - (20+20). */ #define TCP_MIN_MSS 88U 私の質問は、「60 + 60 + 8」をどこで思いついたのか、そしてなぜですか?20 + 20は、IPヘッダー+ TCPヘッダーから取得されます。 編集:ヘッダーを詳しく見てみた後、式は次のように私を探します: (MAX_IP_HDR + MAX_TCP_HDR + MIN_IP_FRAG) - (MIN_IP_HDR + MIN_TCP_HDR) 問題はまだ残っています:なぜですか?なぜLinuxカーネルはこの公式を使用して、たとえば20バイトのTCPセグメント(の強制フロー)を禁止するのですか?ここでiperfを考えてください。 EDIT2:これが私のユースケースです。ソケット/接続のMSSを低く設定すると、スタックによって送信されるすべてのパケットのサイズが小さくなります。パケット/秒のテストでiperfを使用する場合、MSSを低く設定したいと思います。MSSのこの下限のため、128バイト(142バイトのイーサネットフレーム)より小さいIPパケットをワイヤで取得できません。RFC 2544に従って、64バイトのイーサネットフレームサイズにできるだけ近い値を取得したいと考えています。理論的には、18 + 20 + 20 <64が可能です。


1
Debian Stretchソースのtcpポートは*常に*です
Azureロードバランサーを使用していくつかの奇妙な動作をデバッグしているときに、ローカルのDebian Stretch TCPスタックが偶数番号のポートとのTCP接続しか確立していないことに気付きました。奇数のソースポートで単一のTCPハンドシェイクを開始しません。それは意図されていますか?

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