最新記事

KBUILD_CFLAGS_MODULEを使用してカーネルモジュールをコンパイルすることはできません。
linux-kernel
compiling
kernel-modules

KBUILD_CFLAGS_MODULEを使用してカーネルモジュールをコンパイルすることはできません。

KBUILD_CFLAGS_MODULE新しいカーネルでカーネルモジュールをコンパイルするのに問題があります。コンパイラは私に奇妙なエラーを示しています。このタイプのビルドは以前のカーネル(5.5)で動作しましたが、5.16カーネルでは機能しなくなりました。 以下は、再現可能な最小限の例です。 仮想モジュール: #include #include #include MODULE_LICENSE("GPL"); static int __init lkm_example_init(void) {return 0;} static void __exit lkm_example_exit(void){} module_init(lkm_example_init); module_exit(lkm_example_exit); ファイル生成: TARGET ?= test obj-m += ${TARGET}.o KBUILD_CFLAGS_MODULE := "-O1" "-mcmodel=medium" # Examples .PHONY: all all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean その行をコメントアウトすると、KBUILD_CFLAGS_MODULEビルドが機能します。 ただし、コメントアウトを削除すると、次のエラーメッセージでコンパイルが失敗します。 make TARGET=test make -C /lib/modules/5.16.0/build M=/home/user/test modules make[1]: Entering directory '/home/user/linux' CC [M] /home/user/test/test.o In file included from ./include/linux/module.h:22, from /home/user/test/test.c:2: ./include/linux/module.h:183:39: error: expected ',' or ';' before 'KBUILD_MODFILE' 183 | #define MODULE_FILE MODULE_INFO(file, KBUILD_MODFILE); | ^~~~~~~~~~~~~~ ./include/linux/moduleparam.h:26:47: note: in definition of macro '__MODULE_INFO' 26 | = __MODULE_INFO_PREFIX __stringify(tag) "=" info | ^~~~ ./include/linux/module.h:183:21: note: in expansion of macro 'MODULE_INFO' 183 | #define MODULE_FILE MODULE_INFO(file, KBUILD_MODFILE); | ^~~~~~~~~~~ ./include/linux/module.h:230:34: note: in expansion of macro 'MODULE_FILE' 230 | #define MODULE_LICENSE(_license) MODULE_FILE MODULE_INFO(license, _license) | ^~~~~~~~~~~ /home/user/test/test.c:4:1: note: in expansion of macro 'MODULE_LICENSE' 4 | MODULE_LICENSE("GPL"); | ^~~~~~~~~~~~~~ make[2]: *** [scripts/Makefile.build:287: /home/user/test/test.o] Error 1 make[1]: *** [Makefile:1846: /home/user/test] Error 2 make[1]: Leaving directory '/home/user/linux' make: *** [Makefile:6: all] Error 2 この問題の根本原因が何であるかを知っていますか?

Admin

kpartx:マッピングを削除した後にディスクをマウント解除できません。
shell
mount
lsof
loop-device
kpartx

kpartx:マッピングを削除した後にディスクをマウント解除できません。

マッピングを作成して削除したパーティションをマウント解除できませんkpartx。 # mount /dev/sdb1 usb/ # cd usb/ # kpartx -a -p sda -r -s -v sda.img add map loop0sda1 (254:5): 0 16777216 linear 7:0 2048 add map loop0sda2 (254:6): 0 16777216 linear 7:0 16779264 add map loop0sda3 (254:7): 0 440401920 linear 7:0 33556480 add map loop0sda4 (254:8): 0 26159792 linear 7:0 473958400 # kpartx -dv /dev/loop0 del devmap : loop0sda4 del devmap : loop0sda3 del devmap : loop0sda2 del devmap : loop0sda1 # cd .. #umount usb/ target is busy. 私が知っている限り、このコマンドは kpartx -dv /dev/loop0マッピングを正しく削除してから削除されたものを見ることができます/dev/mapper/。ただし、次のレポートのため、ディスクをマウント解除できません。target is busy. lsofこのディスクには開いているファイルがないと表示されます。 # lsof +D すべてのマッピングを解除した後にディスクをマウント解除できないのはなぜですか?

Admin

最初の単語に特定の文字セットを含む行を見つける
command-line
grep
regular-expression
pcre

最初の単語に特定の文字セットを含む行を見つける

入力ファイルは、複数の10文字の組み合わせを含む行の外側にあります。 NGNAEAREAX EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM NCNREDEEEQ EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM 最初の単語に「REGEX」という単語を構成する文字を含むすべての行を見つけるには、正規表現(PCREまたはBRE / ERE)が必要です。したがって、行の最初の単語には少なくともR 1、E 2、G 1、X 1が含まれている必要があります。 したがって、上記の結果は次のようになります。 NGNAEAREAX EAHVSELYCI FNWGNLACQM AWKLRMDHIT PRYMFNYMVM

Admin

終了式が存在する場合は、2つの式の間にテキストを印刷します(sed -n)。
shell-script
sed

終了式が存在する場合は、2つの式の間にテキストを印刷します(sed -n)。

それで、ファイルの2つの式の間にあるすべてのテキストを表示したいと思います。 文書 ddd eee aaa vvv bbb nnn cdn dds aaa xxx xxx xxx したがって、次のコマンドを使用してください cat $file |sed -n "/aaa/,/cdn/p" わかりました。 aaa vvv bbb nnn cdn aaa xxx xxx xxx どちらが正しいですか? しかし、私は開始式と終了式「間」のテキストだけが欲しいです。だから、閉じた表現なしでテキストを表示したくありません... だから私はこの結果を得る方法を探しています。 aaa vvv bbb nnn cdn

Admin

Linuxでは、ハブとシリアルデバイスドライバはどこにありますか?シリアルTTLアダプタが一定時間後にデータを壊すのを見たことがありますか?
ubuntu
drivers
serial-port
usb-device

Linuxでは、ハブとシリアルデバイスドライバはどこにありますか?シリアルTTLアダプタが一定時間後にデータを壊すのを見たことがありますか?

この質問は完全に説明するのが難しいです。事前にお詫び申し上げます。完全な説明を読んでください。ありがとうございます。 注:主に文書化するためにこの記事を公開しており、この問題を解決するために更新する必要があるLinuxイメージの一部を識別する方法について提案を求めています。たぶん誰かがそれを見て解決策を見つけるかもしれません。 30年以上にわたってシリアルTTL通信を使用してきましたが、この問題は一度も経験したことがありません。 セキュリティ/帯域幅の問題により簡単に更新できない内蔵ボードがあります。小さなアップデートは可能ですが、目標ではありません。問題を解決することに加えて、システムのどの部分に教育用にこれらのドライバが含まれているかを知りたいです。私は問題を解決したいのではなく、問題を理解したい。 ボードにはさまざまなデバイスを接続できるUSBコネクタがあり、通常は機能します。キーボード、Wi-Fiアダプタなど 外部シリアルデバイス(Arduinoや他のデバイスなど)と通信しようとしたときによく使用されるデバイスの1つは、シリアルTTLアダプタです。 このアダプタをUSBポートに直接接続すると、完全に機能します。私は通常CP210x、最も一般的にはCP2102/2104を使用していますが、CH340、FTDIなども使用しました。問題ありません。 最近、2つのUSBデバイスを同時に接続する必要があるアプリケーションがあり、小さなUSBハブを追加しました。 HUBを介してシリアルTTLアダプタを接続した後、約678uS以降に送信されるデータがすべて失われることがわかりました。 (!?) たとえば、オシロスコープトレースのスクリーンショットセットは、シリアルTTLアダプタに直接接続したときに灰色のトレースを示し、ハブを介して接続したときに青いトレースを示します。 問題を示す範囲追跡スクリーンショット ご覧のとおり、データの中間バイトが切り捨てられています。後で測定した結果、データ長や伝送速度に関係なく、時間が約20uS程度一貫したことがわかりました。 これは x3 ハブと x3 アダプタで発生します。 ハブに電源を供給してみました。 1つは独自のアダプタに付属し、もう1つは標準的な電源接続を持ち、3つ目はベンチ電源に接続する電源ピンを持っています。違いはありません。 これはRS232ではないため、チャージポンプの故障はありません。チップの電源を監視しましたが、停電が発生しませんでした。 同じハブとアダプタは、PC x2 OS(Ubuntu 20.04、Windows 11)に接続すると完全に機能します。 私の仮説は、埋め込み画像のUSBドライバに問題があるということです。繰り返しますが、小規模以外には更新できませんが、とにかく私の本当の目標は問題を理解することです。 実際の質問は、Linuxスタックのどの部分がそれを制御するのかということです。 ボーナスポイント:そのセクションのみをどのように更新しますか? ボーナス追加クレジット:以前に見たことがありますか?

Admin

Pulseaudion: DLNAプレーヤーにストリーミング
pulseaudio
dlna

Pulseaudion: DLNAプレーヤーにストリーミング

私のコンピュータのサウンドをDLNA対応プレーヤーに転送したいと思います。 したがって、インストールpulseaudio-dlnaとすべてのコンポーネント、依存関係などがあります。 サウンドはネットワーク経由で送信できますが、1.5秒の遅延が大きく、映画を見ることができません。 pacmd list-sinks * index: 18 name: driver: flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY state: IDLE suspend cause: (none) priority: 1000 volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB balance 0.00 base volume: 65536 / 100% / 0.00 dB volume steps: 65537 muted: no current latency: 20.32 ms max request: 6 KiB max rewind: 6 KiB monitor source: 18 sample spec: s16le 2ch 44100Hz channel map: front-left,front-right Stereo used by: 0 linked by: 3 configured latency: 40.00 ms; range is 0.50 .. 2000.00 ms module: 46 properties: device.description = "cocktailAudio-N25 MediaRenderer (DLNA)" device.class = "abstract" device.icon_name = "audio-card" このラインで特に興味深い点は次のとおりです。 configured latency: 40.00 ms; range is 0.50 .. 2000.00 ms どのように変更できますか? これまでに試したこと: フラグメントを次に設定します/etc/pulse/daemon.conf。 default-fragments = 2 default-fragment-size-msec = 5 役に立ちません。 どういうわけか遅延を排除するためにパルスオーディオを使用できますか?それともプレイヤーはこれを別の方法で処理する必要がありますか?

Admin

行末に曜日を追加する方法を探しています。
ubuntu
text-processing
command-line
date

行末に曜日を追加する方法を探しています。

Ubuntu 16.04では、テキストファイルの各行の末尾に曜日を追加する方法を見つけようとしています(フィールド4に日付が指定されています)。 サンプル: Server ID,Make,"Server Room",Datestamp,Timestamp,Distance,Ping,Download,Upload,Payload,"Src IP Address",Hour,DOW x6883101,HP,"Server Room A",2019-07-14,04:50:02,26.444,11.521,49193480,41904833,,192.168.1.1,4, s3398577,Dell,"Server Room B",2019-09-21,10:50:02,56.574,37.608,48955461,45858381,,192.168.1.1,10, x6883551,Dell,"Server Room A",2019-08-16,02:00:04,26.444,17.921,86551957,88775986,,192.168.1.1,2, s1555023,HP,"Server Room C",2018-02-06,04:50:01,516.574,402.527,907658,608152,,192.168.1.1,4, s3398023,HP,"Server Room B",2019-01-17,10:50:01,56.574,40.233,48484827,45620028,,192.168.1.1,10, s1555098,IBM,"Server Room C",2018-11-18,02:00:03,516.514,404.671,819027,601233,,192.168.1.1,2, x6883582,Dell,"Server Room A",2019-05-19,04:50:02,26.444,12.506,88871436,84360552,,192.168.1.1,4, たとえば、データライン#1と#2の場合: x6883101,HP,"Server Room A",2019-07-14,04:50:02,26.444,11.521,49193480,41904833,,192.168.1.1,4,Sunday s3398577,Dell,"Server Room B",2019-09-21,10:50:02,56.574,37.608,48955461,45858381,,192.168.1.1,10,Saturday 様々なSEDとAWKを試してみましたが、何の役にも立ちません。 DATEコマンドを試しましたが、入力が気に入らないようです。実際の日付と比較してみました。 grep -w -o "20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]*" しかし、私はそれを変換し、行の最後にDOWを追加するのを見ませんでした。 各データ行の最後に曜日を追加できるようにするために私が見逃しているのは何ですか?また、CRONTAB 操作でこの操作を実行できる必要があります。

Admin

アップデート後に起動時に暗号化されたOSが表示されない
dual-boot
disk-encryption

アップデート後に起動時に暗号化されたOSが表示されない

私のコンピュータにUbuntu 18.04が2つインストールされています。 個人の/dev/sda1 ジョブ(フルディスク暗号化)/dev/sda3 昨夜、プライベートパーティションにいくつかのアップデートをインストールしました(pastebinのログ参照:https://pastebin.com/9sv2epHK)、今ブートローダはどのパーティションから起動するか尋ねません。 (過去には、グラフィックが表示される前にディスクを復号化するためにパスワードを入力する必要がありました。それからどのオペレーティングシステムを起動するかを尋ねられますか? ) この問題を解決する方法を知っていますか? (マシンをセットしてから古くて実力が足りません。) TMI 両方のインストールには以下が含まれます/etc/lsb-release。 DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS" fdisk -l /dev/sda次の結果を提供します。 Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x0002928e Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 132708952 132706905 63.3G 83 Linux /dev/sda2 176494590 250068991 73574402 35.1G 5 Extended /dev/sda3 132710400 175677439 42967040 20.5G 83 Linux /dev/sda5 225544192 250068991 24524800 11.7G 82 Linux swap / Solaris /dev/sda6 201019392 225544191 24524800 11.7G 82 Linux swap / Solaris /dev/sda7 176494592 201017343 24522752 11.7G 82 Linux swap / Solaris

Admin

microSDカードの名前が変わるのはなぜですか?
linux
removable-storage

microSDカードの名前が変わるのはなぜですか?

マイコンピュータには、内部eMMC(mmcblk0)を含むmicroSDカードが永久に挿入されています。 コンピュータの電源を入れたときにmicroSDカード名が指定されている場合、そうでないmmcblk1場合、またはmmcblk2そうでない場合がありますmmcblk3。 mmcblk3存在感なしにmmcblk1または存在感のある名前を付けることはmmcblk2奇妙です。他のストレージデバイスが接続されていません。 名前がなぜこんなにランダムに変わったのですか?

Admin