題:
在多個收音機中使用Direwolf嗎?
larsks
2018-08-29 07:54:18 UTC
view on stackexchange narkive permalink

我想玩ax.25連接。看來,如果我有多個無線電設備(以不同的頻率工作),則我希望擁有多個ax.25接口。 Direwolf將創建一個 / tmp / kisstnc 符號鏈接到KISS pty設備,並且此路徑是硬編碼的。這意味著您只能運行提供KISS pty接口的Direwolf的單個實例...並且由於 kissattach 似乎僅適用於字符設備,因此這似乎將系統限制為單個ax.25。

如果要運行多個由direwolf控制的ax.25接口,我有哪些選擇?我在想這個錯誤的方式嗎?有沒有辦法將ax.25接口連接到Direwolf的KISS網絡端口上,而不是使用pty設備?

我的第一個本能是編譯一個單獨的direwolf二進製文件,該二進製文件使用不同的文件名(或讓您傳入文件名)。然後,您可以同時運行兩個實例並與不同的聲卡通話。另一個選擇可能是chroot,以便每個狼人都運行自己的/ tmp-然後您可以從chroot監獄之外引用/ foo / bar / tmp / kisstnc。
一 回答:
larsks
2018-08-31 17:13:47 UTC
view on stackexchange narkive permalink

我整理了一些與@ user3486184的註釋在概念上相似的東西,但並未實際使用 chroot 。我利用SystemD來管理direwolf和隨後的激活ax.25接口所需的kissattach命令。

我創建了以下 Systemd模板單元並將其安裝到 /etc/systemd/system/direwolf@.service

  [Unit] Description = Direwolf%I聲卡調製解調器[Service] Type = simplePrivateTmp = trueExecStart = / usr / bin / direwolf -t 0 -p -c /etc/direwolf/%i.conf -qh -qd#將/ tmp / kisstnc符號鏈接重新定位到/ run / direwolf / <實例名稱>.ExecStartPost = / bin / timeout 10 / bin / sh -c'一會兒!測試-c / tmp / kisstnc;睡一覺完成cp -a / tmp / kisstnc / run / direwolf /%i'#在退出時清理符號鏈接。ExecStopPost= / bin / rm -f /run/direwolf/%i[Install]WantedBy=multi-user.target 

“模板單元”使您可以使用同一單元文件啟動服務的多個不同實例。要啟動模板單元,請運行 systemctl unitname @ instancename ,單元中的 instancename 值可以作為%i 使用。因此,在上面的示例中,我可以運行:

  systemctl start direwolf @ uhf  

或:

  systemctl start direwolf @vhf  

等等。這將啟動Direwolf指向以實例命名的配置。換句話說,給出後一個示例,它將運行:

  / usr / bin / direwolf -t 0 -p -c /etc/direwolf/vhf.conf -qh -qd  

該單元利用 PrivateTmp 偽指令,該偽指令在設置時意味著每個服務都將獲得自己的 / tmp 目錄,該目錄不與其他任何目錄共享。這允許每個Direwolf實例創建它自己的 / tmp / kisstnc 符號鏈接。

Direwolf啟動後,將運行一個 ExecStartPost 。它等待 / tmp / kisstnc 鏈接顯示,然後將其複製到 / run / direwolf / <instancename> 。如果我同時運行以上兩個 systemctlstart ... 命令,則最終會得到 / run / direwolf / uhf / run / direwolf / vhf

我創建了一個伴隨的 kisstnc @ .service 單元,如下所示:

  [Unit] Requires = direwolf @ %i.serviceAfter=direwolf@%i.service [Service] Type = simpleExecStart = / usr / sbin / kissattach / run / direwolf /%i%i [Install] WantedBy = multi-user.target  
>

有了這個,我可以簡單地運行 systemctl start kisstnc @ uhf 然後:

  • Systemd將啟動 direwolf @ uhf 服務,因為 kisstnc @ uhf 服務需要首先運行。
  • direwolf @ uhf 單元會創建 / run / direwolf / uhf symlink
  • kisstnc @ uhf 單元運行相應的 kissattach 命令

要執行此操作,您的 / etc / ax25 / axports 文件必須具有與您正在使用的實例名稱相匹配的端口名n以上命令。例如,類似這樣的東西:

  uhf TEST-0 0 128 2 Direwolf @ radio0vhf TEST-1 0 128 2 Direwolf @ radio1  


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...