最新記事

Linuxページキャッシュを無効にする方法
linux-kernel
cache

Linuxページキャッシュを無効にする方法

Linuxカーネルは、I / Oの操作を高速化するためにページキャッシュを実装します。 研究とテストのためにページキャッシュをオフまたはオンにすることができれば役立ちます。 Linuxページキャッシュを無効にする方法は? アップデート1:ページキャッシュをグローバルにオフにできない場合は、Linuxファイルシステムを連続書き込みモードでマウントできます。私が正しく理解した場合、EXT2、EXT4、およびXFSのマウントオプションはdaxwrite-throughモードを実装します。ページキャッシュを防ぐための有効なオプションですか(少なくともファイルシステムの場合)。 https://www.kernel.org/doc/Documentation/filesystems/dax.txt アップデート2:明らかにDAXはやや死んでおり、ページキャッシュを適切にオフにすることはできません(グローバルには、まったくオフにせず、個々のアプリケーションに対して限られた方法でのみ)。しかし、実際にLinuxファイルシステム(たとえば、mountパラメータを介して)を連続書き込みモードに設定する方法はありませんか? アップデート3:このツールは、ddLinuxカーネルページキャッシュを簡単にバイパスできるアプリケーションの一例ですoflag=direct。 https://man7.org/linux/man-pages/man1/dd.1.html アップデート4:明らかに、FUSE(ユーザー空間のファイルシステム)モジュールを使用するファイルシステムは、ページキャッシュへの読み取りと書き込みが完全にバイパスされる直接IOモードで使用できます。 https://www.kernel.org/doc/Documentation/filesystems/fuse-io.txt アップデート5:マウントオプションを-o sync使用すると、一部のファイルシステム(ext2、ext3、FAT、VFAT、UFS)に対して連続書き込みモードとページキャッシュバイパスが可能です。 https://linux.die.net/man/8/mount

Admin

カーネルインストールとFUSEインストールexfatファイルシステム
linux-kernel
mount
documentation
fuse
exfat

カーネルインストールとFUSEインストールexfatファイルシステム

exfatカーネルバージョン5.4が2019年末から2020年初めにリリースされてから、ファイルシステムのサポートがLinuxカーネルにマージされたことを読んでいます。これがパッケージで何を意味するのか混乱していますexfat-fuse。 AFAIK、このexfat-fuseパッケージはカーネルバージョン5.4以前に存在していました。アドホックパーティションをインストールする方法exfat。 ファイルシステムのマージサポートは、パッケージが不要になったことexfatを意味しますか?逆に、必要に応じてexfat-fuseカーネルにexfat-fuseサポートを追加することは何を意味/実行しますか?exfat 関連する質問は、これに関する文書、特にman mountそのFILESYSTEM-SPECIFIC MOUNT OPTIONSセクションです。ファイルシステム固有のマニュアルへの言及もなく、exfat「exfatインストールオプション」のサブセクションもありません。これにより私はこう尋ねる。「exfatのインストールオプションはどこに適用されますか?」 ユーザーは「FATインストールオプション」のサブセクションを使用する必要がありますか、それとも別のものをman mount使用する必要がありますか?man mount.exfat-fuse

Admin

TermuxとAlpine Linux QEMU間のブリッジ
linux
networking
linux-kernel
ip
android

TermuxとAlpine Linux QEMU間のブリッジ

私はAndroid携帯電話を持っていますテモックス。私がダウンロードしたTermuxを使用してください。Alpine Linux x86 QEMU。 質問:ネットワーク上の他のデバイスはAlpine Linux QEMUとpingおよび通信できません。そのため、TermuxからAlpine Linux QEMUへのブリッジを作成し、Alpine Linuxをネットワーク上の他のデバイスに表示してアクセスできるようにしたいと思います。 用語: lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) wlan0: flags=4163 mtu 1500 inet 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 3000 (UNSPEC) qemu.shを起動します。 qemu-system-x86_64 -machine q35 -m 1024 -smp cpus=2 -cpu qemu64 \ -drive if=pflash,format=raw,read-only,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \ -netdev user,id=n1,hostfwd=tcp::2222-:22,net=192.168.50.0/24,hostfwd=tcp::9000-:9000 -device virtio-net,netdev=n1 \ -nographic alpine.img 私はこれらすべてについて非常に新しいですが、誰でも設定するのに役立ちますか?

Admin

Linuxでpid_maxとthread-maxの両方が必要なのはなぜですか?
linux-kernel
process
sysctl
thread

Linuxでpid_maxとthread-maxの両方が必要なのはなぜですか?

/proc/sys/kernel/pid_maxの違いを理解してください/proc/sys/kernel/threads-max。答えに良い説明があります pid_max、ulimit -u、thread_maxの違いを理解する: /proc/sys/kernel/pid_max特定の時間に実行できるプロセスの最大数とは関係ありません。実際、これはカーネルが割り当てることができる最大の数値プロセス識別子です。 Linuxカーネルでは、プロセスとスレッドは同じです。カーネルはこれを同じ方法で処理します。これらはすべてtask_structデータ構造のスロットを占有します。一般的に言えば、スレッドは他のプロセスとリソースを共有するLinuxのプロセスです(スレッドグループIDも共有します)。 Linuxカーネルのスレッドは、スケジューラに関する限り、概して概念的な構成です。 カーネルがスレッドとプロセスを大幅に区別しないことを理解したので、 /proc/sys/kernel/threads-max実際にはtask_structデータ構造に含まれる要素の最大数を示すことがより理解されます。これは、プロセスリスト(またはタスクリストとも呼ばれる)を含むデータ構造です。 ただし、実際には両方ともホスト上の同時スレッドの最大数を制限します。私が知っているのは、この数字がpid_max合計の最小値になることですthreads-max。それでは、なぜ両方が必要ですか? 私が知っている限り、デフォルトpid_maxは次のとおりです。可能なCPUの数に応じてマシンのデフォルト値はthreads-max以下から派生します。ページ数。しかし、どちらも同じ効果を持っているので、Linuxは2つの最小値である1つの値しか持てませんか?

Admin

uname -r は、署名されていない Linux イメージのバージョンを表示します。
ubuntu
kernel
linux-kernel
initramfs

uname -r は、署名されていない Linux イメージのバージョンを表示します。

sudo dpkg --purge linux-image-...私の起動メニューがいっぱいで、以前のバージョンのLinuxカーネルをいくつか削除するコマンドを試してみました。 initram-fsがエラーを引き続き発生させなかったため、いくつかのオンラインソリューションも試しました。私が何かを台無しにしたかどうかはわかりません。現在使用されているカーネルを確認すると、バージョン名がデフォルトで署名されていないことがわかります。問題が発生しますか?この混乱からどのように外れますか?私はこのようなハードコアな仕事に初めて触れました。助けてくれてありがとう。まず、ありがとうございます。

Admin

WM8650(armv5te)用のLinuxカーネルをコンパイルするのに役立ちます。
linux
linux-kernel
compiling
arm

WM8650(armv5te)用のLinuxカーネルをコンパイルするのに役立ちます。

私はWonderMedia 8650 CPUを搭載した安価なノートパソコンを持っています。 256MB DDR3メモリと4GBオンボードNANDフラッシュメモリを備えています。このノートブックには、工場出荷時にAndroid 2.2がプリインストールされています。公開しても役に立ちません。その後、彼らはWindowsCEと一緒にリリースし始めた。 問題は私が見つけたものです。子Linuxカーネルを構築するために必要なすべてを備えています。残念ながら、最新のカーネルでも安定したLinux 3.13-rc8でもありません。それでも一度やってみたかったのですが、どこから始めるべきか全く知りませんでした。 githubページのWikiには「ソースコードの構築「タイトルがありますが、次のエラーのため、手順2を完了できませんでした。 fpp@FPP-PC:~/Documentos/linux-vtwm$ make ARCH=arm zImage CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/timeconst.h CC kernel/bounds.s gcc: error: unrecognized argument in option ‘-mabi=aapcs-linux’ gcc: note: valid arguments to ‘-mabi=’ are: ms sysv gcc: error: unrecognized command-line option ‘-mlittle-endian’ gcc: error: unrecognized command-line option ‘-mapcs’ gcc: error: unrecognized command-line option ‘-mno-sched-prolog’ gcc: error: unrecognized command-line option ‘-mno-thumb-interwork’ gcc: error: unrecognized command-line option ‘-mfpu=vfp’ make[1]: *** [Kbuild:21: kernel/bounds.s] Error 1 make: *** [Makefile:1064: prepare0] Error 2 私はLinuxカーネルのコンパイルについてはよくわかりませんが、さまざまな「独自のLinuxカーネルを作成する」ガイド(x86用)の多くに従い、プロセスにある程度慣れていると思いますが、そうではありません。倒れたときにどうすればいいかわかります転倒したとき

Admin

非常に古いLinuxカーネルを維持すると、どのような利点がありますか?
linux
kernel
linux-kernel
vulnerability

非常に古いLinuxカーネルを維持すると、どのような利点がありますか?

私が訪れるときhttps://www.kernel.org/さまざまなカーネルバージョンが見えます。文章を書く時点にはメインライン1本、屋台2本、ジャンライン最大6本があります。最大のものは4.9です。このように古いカーネルを使い続ける理由はありますか?古いカーネルにはさらに脆弱性がありませんか?

Admin

net.ipv4.conf.all.forwardingとnet.ipv4.ip_forwardの違い
networking
linux-kernel
forwarding
kernel-parameters

net.ipv4.conf.all.forwardingとnet.ipv4.ip_forwardの違い

~によるとhttps://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt conf/all/* is special, changes the settings for all interfaces forwarding - BOOLEAN Enable IP forwarding on this interface. This controls whether packets received _on_ this interface can be forwarded. ip_forward - BOOLEAN 0 - disabled (default) not 0 - enabled Forward Packets between interfaces. This variable is special, its change resets all configuration parameters to their default state (RFC1122 for hosts, RFC1812 for routers) したがって、すべてのインターフェイスでIPv4パケット転送を無効にすることは、net.ipv4.conf.all.forwarding=0すべてのインターフェイスでIPv4パケット転送を無効にすることと同じです。net.ipv4.ip_forward=0 net.ipv4.conf.all.forwardingカーネルパラメータとカーネルパラメータの違いを説明できる人はいますかnet.ipv4.ip_forward?

Admin

拡大し続けるサイズに画像を適応させるDRAMの問題
linux-kernel
embedded
u-boot
yocto

拡大し続けるサイズに画像を適応させるDRAMの問題

Zynq700 SoCを搭載した専用ボードには512MiBのメモリがあります。これはアドレス範囲[0x00000000,0x20000000]に対応します。 私はRAMベースのOSを実行しており、次のように変更するまでは正常に動作しました。 追加の変更なしでrootfsにvalgrind、gdb、gdbserver、およびstraceパッケージを追加しました。 ついに: 私のピット画像が大きくなりました(〜x2)。 JTAGを介してclobstartからこのitbをロードします(アドレス0x10000000で定義しました)。 イメージに適したホストでcrc32を計算し、u-boot crc32ユーティリティを使用して対応するRAMアドレスからファイルサイズに移動しましたが、crcは同じです。 ブートを続けましたが、以下のメッセージが表示され、カーネルがハングします。 おそらく、DRAMの対応する領域にすでにロードされているものが重なっている可能性があると思いました。詳細については、以下にfitImageの詳細を残してください。 ==> bootm $clobstart ## Loading kernel from FIT Image at 10000000 ... Using 'conf@1' configuration Verifying Hash Integrity ... OK Trying 'kernel@1' kernel subimage Description: Linux kernel Type: Kernel Image Compression: uncompressed Data Start: 0x100000cc Data Size: 46423824 Bytes = 44.3 MiB Architecture: ARM OS: Linux Load Address: 0x00008000 Entry Point: 0x00008000 Hash algo: crc32 Hash value: 3d108223 Verifying Hash Integrity ... crc32+ OK ## Loading fdt from FIT Image at 10000000 ... Using 'conf@1' configuration Trying 'fdt@1' fdt subimage Description: Flattened device tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x12c460c0 Data Size: 16036 Bytes = 15.7 KiB Architecture: ARM Hash algo: crc32 Hash value: 15b17b33 Verifying Hash Integrity ... crc32+ OK Booting using the fdt blob at 0x12c460c0 Loading Kernel Image ... OK Loading Device Tree to 07ff9000, end 07fffea3 ... OK Starting kernel ... Uncompressing Linux... done, booting the kernel. Error: unrecognized/unsupported machine ID (r1 = 0x00000000). Available machine support: ID (hex) NAME ffffffff Generic DT based system ffffffff ARM Versatile Express ffffffff Xilinx Zynq Platform Please check your kernel config and/or bootloader.

Admin

Linuxは、マルチタスクをサポートしていないCPUでマルチタスクをどのように実装しますか?
linux
linux-kernel

Linuxは、マルチタスクをサポートしていないCPUでマルチタスクをどのように実装しますか?

私はLinuxがマルチタスクをサポートしていないCPUで実行できると聞きました。 しかし、コアが1つだけでマルチタスクがサポートされていない場合、Linuxはどのようにマルチタスクを実装しますか? それぞれ終了するのに1時間かかる2つのプログラムを実行したいとしましょう。 Linuxで約100ミリ秒後に最初のプログラムを一時停止して2番目のプログラムに切り替えるには? 次の2つの状況を考えることができます。 複数のジョブを同時に実行することはできません。 Linuxはハードウェアタイマーを使用して実行中のプロセスを停止します。

Admin