Saya memiliki dua (dan mungkin di masa depan, lebih banyak) perangkat serial USB yang identik (turun ke nomor seri, sayangnya) - mereka sebenarnya adalah penambang BTC. Saat ini mereka berakhir di ttyUSBX
mana X adalah 0, 1 atau 2, karena ada perangkat serial USB lain yang tidak terkait juga (yang tidak perlu khawatir di sini).
Saya ingin menulis aturan udev yang akan memberi mereka nama yang dapat diprediksi di dalam /dev
, seperti di /dev/miner0
mana nol adalah bilangan bulat yang bertambah. Saya tidak peduli yang mana dari mereka yang akhirnya, tetapi saya perlu mereka berada dalam kisaran yang dapat diprediksi yang tidak akan berubah.
Saat ini saya punya ini:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="miner%n"
Ini cukup dekat, karena saya berakhir dengan nama-nama seperti yang saya inginkan. Satu-satunya masalah adalah, karena penambang dan perangkat ketiga kadang-kadang dapat muncul dalam urutan acak, saya mungkin berakhir dengan dua miner0
, miner1
dan miner2
, tapi saya tidak pernah tahu yang dua (tanpa melihat secara manual). Jika saya menambahkan lagi perangkat serial non-penambang usb (yang kemungkinan), itu akan memperburuk masalah.
Saya telah menemukan referensi %e
yang sepertinya melakukan apa yang saya inginkan, tetapi sepertinya tidak ada lagi .
Bagaimana saya bisa memberikan perangkat ini nama yang dapat diprediksi? Saya lebih suka untuk tidak mengikat mereka ke lokasi mereka di bus USB juga jika memungkinkan.
Informasi / latar belakang lebih lanjut
Perlu disebutkan bahwa saya tidak terlalu peduli dengan namanya, hanya saja mereka dikenal dan tidak berubah bahkan jika / ketika perangkat terhubung ke soket USB yang berbeda. Saya hanya akan melupakan seluruh hal udev dan menggunakan entri /dev/serial/by-id
, tetapi karena mereka memiliki nomor seri yang sama, hanya ada satu di antaranya!
Perlu juga disebutkan bahwa alasan untuk melakukan ini adalah bahwa perangkat lunak penambangan perlu diberi tahu daftar perangkat untuk diselidiki dan ditemukan. Saya bisa saja melakukan semuanya (pada dasarnya hanya menemukan semua penambang yang valid dalam ttyUSB*
kisaran), tetapi itu mengganggu perangkat non-penambang. Jadi saya perlu nama-nama penambang yang sudah diketahui sebelumnya sehingga saya bisa mengkonfigurasinya untuk hanya menggunakan itu saja. Sayangnya itu tidak akan menerima wildcard (jadi hanya mengatakannya untuk menggunakan /dev/miner*
tampaknya tidak mungkin), maka masalah ini.
sumber
/dev/btcminer/*
) ke daftar seperti ini:-S /dev/btcminer/0 -S /dev/btcminer/1 <and so on if present>
yang merupakan parameter yang diambil oleh perangkat lunak.Jawaban:
Ini belum teruji dalam kombinasi:
Tambahkan aturan udev
IMPORT{program}="/usr/local/sbin/unique-num /run/miner-counter 0 MINER_NUM"
untuk penambang Anda.Maka Anda bisa menggunakan skrip shell sederhana, sesuatu seperti program yang agak teruji ini:
Kemudian Anda dapat menggunakan variabel lingkungan udev untuk memberi nama penambang Anda.
sumber
/dev/btcminer/0
dan/dev/btcminer/1
yang merupakan (versi yang sedikit tweak) apa yang saya cari. Terima kasih untuk ini! :-)#!/bin/bash
. Untuk beberapa alasan,sh
diklaim ada kesalahan sintaksis ("kata yang tidak terduga"). Entah mengapa atau apa yangsh
ada di bawah Ubuntu, tetapi itu menyelesaikannya.16
s ke9
s, maka itu akan berhasil/bin/sh
. Setidaknya dengan tanda hubung. (/ bin / sh pada sistem ini adalah bash untuk beberapa alasan)Pertanyaannya sudah memiliki jawaban yang diterima, tetapi saya memutuskan untuk membagikan variasi solusi yang disediakan oleh derobert .
Persyaratan saya sedikit berbeda - selain memberikan nomor indeks "tambahan" ke perangkat baru - saya ingin mendapatkan kembali nomor indeks yang diberikan oleh perangkat yang telah dihapus dari sistem.
Aturan udev untuk mengatur variabel lingkungan akan terlihat seperti ini:
Dalam solusi saya, saya tidak menggunakan file untuk melacak indeks, saya hanya mengulangi yang sudah ada symlink dan temukan indeks pertama yang tersedia:
/usr/local/sbin/unique-num
naskah:Ini tentu saja akan mencetak var-name dengan indeks pertama yang tersedia, misalnya jika ini symlink sudah ada:
dan kemudian
miner1
terlepas dari sistem - kita dibiarkan dengan:Menjalankan skrip akan kembali:
... karena sekarang ini adalah indeks pertama yang tersedia .
sumber