Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

bbvirt - Trực tuyến trên đám mây

Chạy bbvirt trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh bbvirt có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


bbvirt - cắm nóng các thiết bị BitBabbler vào miền được quản lý bằng libvirt

SYNOPSIS


váy ngắn hoạt động [lựa chọn]

váy ngắn đính kèm|tách ra thiết bị [lựa chọn]

váy ngắn đính kèm tất cả|tách ra tất cả [miền] [lựa chọn]

MÔ TẢ


Sản phẩm váy ngắn chương trình là một nỗ lực để giải quyết một số nỗi đau từ những gì hiện tại
cần thiết để phân phối nhiều thiết bị USB giữa máy chủ và máy ảo khách.
Mặc dù có một số cách có thể được định cấu hình và quản lý điều này, nhưng hiện tại thì không
trong số họ thực sự tự cung cấp một giải pháp hoàn chỉnh và mạch lạc, tất cả đều rơi vào
thiếu nhãn hiệu theo một cách nào đó đáng kể và gây khó chịu. Mục đích ở đây là để ghép lại với nhau
đủ những lần tấn công đó để thực sự có được tất cả các chức năng mà chúng ta muốn bây giờ, cho đến khi
libvirt hỗ trợ bản địa cho điều này đủ cải thiện để không cần nó nữa.

Hiện tại, điều này liên quan đến các máy ảo QEMU / KVM được quản lý bằng libvirt.

Điều gì do we muốn?
Hành vi lý tưởng ở đây là khá đơn giản. Đưa ra một số BitBabbler tùy ý
thiết bị, chúng tôi sẽ có thể gán chúng cho máy chủ hoặc cho một máy ảo khách
chạy trên nó và một khi chúng tôi làm điều đó, chúng sẽ hoạt động theo cách bình thường được mong đợi của bất kỳ
Thiết bị USB.

- Nếu chúng được cắm khi máy khách khởi động, chúng sẽ được nhìn thấy bằng cách đó
máy như chúng sẽ là của máy chủ.

- Nếu chúng được cắm sau khi máy khởi động, chúng phải được cắm nóng vào đó
máy như chúng sẽ ở trên máy chủ.

- Nếu chúng được rút phích cắm trong khi máy đang chạy, chúng nên được loại bỏ sạch sẽ khỏi
nó, như chúng sẽ ở trên máy chủ.

Tại sao không thể we nó?
Ngay bây giờ, libvirt cung cấp cho chúng tôi hai cách để chúng tôi có thể gán thiết bị USB từ máy chủ cho
miền khách.

- Chúng tôi có thể chỉ định chúng theo nhà cung cấp USB và ID sản phẩm của họ. Nhưng điều đó chỉ hoạt động khi ở đó
chỉ là một thiết bị duy nhất thuộc loại đó trong máy chủ. Điều này khá vô dụng trong hầu hết các
các trường hợp mà chúng tôi quan tâm ở đây, nơi chủ nhà và mỗi khách có khả năng
có một hoặc nhiều thiết bị BitBabbler của riêng chúng được gán cho chúng.

- Chúng ta có thể gán chúng theo địa chỉ logic của chúng trên bus USB. Nhưng đó không phải là một hằng số
mà chúng tôi có thể định cấu hình tĩnh cho miền. Mỗi khi một thiết bị được cắm vào, hoặc
replugged, hoặc reset, hoặc máy chủ được khởi động lại, địa chỉ đó có thể thay đổi
vì nó được cấp phát động khi thiết bị được liệt kê trên bus.

Có một cách thứ ba, nhưng nó dựa vào việc bỏ qua cấu hình libvirt bình thường để thực hiện
sử dụng trực tiếp khả năng QEMU để gán một thiết bị theo địa chỉ vật lý của nó trên bus.
Loại nào tốt hơn, nhưng vẫn không phải là một viên đạn ma thuật vì nó dựa vào việc cắm giống hệt nhau
các thiết bị vào cùng một cổng mọi lúc (và khi các cổng đó được liệt kê trong
theo cách tương tự của máy chủ lưu trữ trong mỗi lần khởi động lại, điều này cũng không được đảm bảo). Nó cũng buộc
chúng tôi nhảy qua các vòng khác, vì sau đó chúng tôi cần thêm sự phức tạp để quản lý
truy cập các quyền của thiết bị theo cách thủ công bên ngoài libvirt, nhưng vẫn được điều phối
với nó.

Thất bại thậm chí còn lớn hơn, mà tất cả các phương pháp đó đều có điểm chung, là tất cả chúng đều phụ thuộc vào
thiết bị đã được cắm trước khi bắt đầu khách. Nếu nó được đưa vào sau
khách được bắt đầu, hoặc bị xóa và nhập lại trong khi khách đang chạy hoặc nếu máy chủ
xe buýt hoặc một trung tâm bị trả lại gây ra kết nối lại, khi đó thiết bị sẽ không được gắn (lại) với
khách. Cách duy nhất để khắc phục điều đó nếu nó xảy ra là gắn lại thiết bị theo cách thủ công với
câu thần chú phức tạp trong XML (dựa vào việc bạn biết địa chỉ mới của thiết bị) hoặc
để tắt nguồn hoàn toàn và khởi động lại khách. Không phải là đỉnh cao của sự thân thiện với người dùng
hoạt động mà chúng tôi đang tìm kiếm ở đây.

Điều gì có thể we do về nó?
Có một bản vá được gửi tới libvirt vài năm trước, nó sẽ cho phép một thiết bị
được chỉ định bởi cả ID sản phẩm USB và số sê-ri của nó, nhưng điều đó có một số đẩy-
trở lại, và cho đến nay vẫn chưa được áp dụng ngược dòng. Đó sẽ là một chặng đường dài
hướng tới việc làm cho việc này trở nên dễ dàng và sạch sẽ, chỉ để lại cho chúng tôi khía cạnh phích cắm nóng để giải quyết
với. Chúng tôi sẽ để lại câu nói gắt gỏng về điều đó như một bài tập cho người đọc ...

Một giải pháp thay thế khác là chúng tôi có thể ủy quyền việc tìm kiếm địa chỉ logic của thiết bị cho một phích cắm nóng
quản lý như udev(7). Điều này hấp dẫn theo nghĩa là chúng ta có thể biết khi địa chỉ
của một thiết bị thay đổi và những gì nó thay đổi, nhưng udev bản thân nó không thân thiện lắm với
ý tưởng về tùy chỉnh quản trị viên cục bộ (mặc dù có thể làm được nhưng dường như đang nhận được
ngày càng không được khuyến khích mạnh) và việc sử dụng nó vẫn cần một ít keo bên ngoài để
dịch các sự kiện của nó thành thứ gì đó mà libvirt có thể hoạt động để định cấu hình khách
máy móc.

Sản phẩm váy ngắn chương trình cung cấp keo đó và một phương pháp chỉ định thân thiện với người dùng
thiết bị phải thuộc về miền khách nào và giao diện người dùng có thể được gọi theo cách thủ công
hoặc bởi các tác vụ do quản trị viên khác kiểm soát để thêm hoặc xóa các thiết bị BitBabbler một cách nhanh chóng và dễ dàng
từ bất kỳ máy khách nào đang chạy.

Nhưng hạn chế của phương pháp này là không thể dễ dàng biết khi nào máy khách
đã bắt đầu mà phải thêm các thiết bị đã được cắm vào. Về lý thuyết, chúng tôi
có thể thêm chúng vào định nghĩa miền liên tục của nó, nhưng điều đó có vấn đề riêng vì
chúng tôi chỉ có thể thêm các thiết bị theo địa chỉ logic tạm thời của chúng và chúng tôi không thể đảm bảo rằng chúng tôi
sẽ được gọi để xóa chúng khỏi miền một lần nữa khi địa chỉ đó trở nên không hợp lệ
(chẳng hạn như nếu máy chủ bị tắt nguồn đột ngột hoặc nó không được tắt hoàn toàn), vì vậy chúng tôi
có thể kết thúc với nhiều mục cũ tích lũy trong cấu hình miền liên tục,
mà sau này có thể khớp một số thiết bị hoàn toàn khác với những gì chúng tôi muốn gắn vào
nó. Có nghĩa là cho đến khi điều đó bằng cách nào đó được khắc phục, chỉ có thể an toàn khi thêm họ vào một khách mời trực tiếp
miền, do đó chúng sẽ luôn bị xóa lại khi nó bị tạm dừng, bất kể nó như thế nào
cuối cùng đã bị dừng lại.

Rõ ràng là chúng ta vẫn còn một số cách để đi đến lý tưởng của chúng ta ở đây.

Điều gì if we đánh it với *hai* búa?
Có vẻ như chỉ có hai cách để chúng tôi có thể nhận được thông báo về việc một máy khách đang
bắt đầu từ hiện tại. Một liên quan đến việc chạy một quy trình daemon khác, điều này sẽ làm
nhiều hơn là chỉ ngồi xung quanh đợi ai đó bắt đầu có khách để họ có thể cho chúng tôi biết
về điều đó. Nhưng sau đó chúng tôi sẽ có một thứ khác để định cấu hình, một quy trình khác
đang chạy và còn nhiều vấn đề hơn với việc tìm ra cách đảm bảo chúng ta không thua cuộc đua khi
máy chủ được khởi động, từ khi nhận được tập hợp các sự kiện thiết bị ban đầu, quá trình đó đang
sẵn sàng và hoạt động, và bất kỳ khách nào sẽ được khởi động lại khi khởi động thực sự bắt đầu.

Cách khác là sử dụng móc váy. Đến lượt nó, có vấn đề là không thực sự
cho phép chúng tôi chạy bất kỳ chức năng libvirt nào từ nó, mà chúng tôi cần thực hiện để đính kèm
thiết bị cho máy chủ. Và chúng tôi không thể đảm bảo rằng chúng tôi có thể cài đặt theo mặc định,
bởi vì chỉ có thể có một hook như vậy trên hệ thống, mà quản trị viên cục bộ có thể đã
đang sử dụng ...

Có một cách thứ ba, nhưng điều đó sẽ liên quan đến việc yêu cầu quản trị viên cục bộ bắt đầu tất cả khách
máy móc thông qua một trình bao bọc của riêng chúng ta, thay vì thông qua bất kỳ cơ chế nào mà chúng đã biết
Và sử dụng. Điều này không mở rộng quy mô để hỗ trợ các thiết bị USB khác trong tình huống tương tự, trong số
nhiều cách mà sẽ là một giải pháp khủng khiếp để gây ra cho mọi người.

Nhưng có một kẽ hở mà chúng ta có thể khai thác. Chúng ta có thể sử dụng móc libvirt qemu để kích hoạt
thay đổi sự kiện cho udev, đến lượt nó có thể gọi váy ngắn theo cùng một cách sẽ
xảy ra nếu thiết bị thực sự được cắm nóng, điều này mang lại cho chúng tôi thêm lớp chuyển hướng
chúng ta cần có thể làm điều đó một cách an toàn từ móc câu. Rube Goldberg sẽ tự hào, và
một số mảnh có thể yêu cầu lắp ráp bằng tay, nhưng với tất cả những điều này tại chỗ, chúng tôi có thể có
một cái gì đó tương tự như chức năng USB bình thường trong các máy khách.

Nó không đẹp, nhưng nó sẽ phù hợp với những gì chúng ta phải làm việc.

Ok, chỉ nói me Ở đâu đến đánh nó.
Để xâu chuỗi điều này lại với nhau, bạn cần đảm bảo tất cả những điều sau:

- Các udev(7) các quy tắc từ gói bit-babbler được cài đặt. Nếu bạn đã cài đặt cái này
từ các gói Debian đã được thực hiện. Nếu bạn không, bạn sẽ cần phải
cài đặt các quy tắc được tìm thấy trong debian / bit-babbler.udev từ gói nguồn sang một
vị trí phù hợp trên hệ thống của bạn (có thể là /etc/udev/rules.d).

- Các váy ngắn(1) tập lệnh được cài đặt ở nơi udev quy tắc sẽ tìm thấy nó. nếu bạn
đã không cài đặt cái này từ các gói Debian và nó không có trong / usr / bin, sau đó bạn sẽ cần
để điều chỉnh udev các quy tắc cho phù hợp.

- Các thiết bị bạn muốn sử dụng trong máy khách và máy bạn muốn sử dụng chúng,
được chỉ định trong váy ngắn tập tin cấu hình. Vị trí mặc định cho điều đó là
/etc/bit-babler/vm.conf. Nếu bạn muốn sử dụng một tệp khác, bạn sẽ cần phải chuyển
vị trí với --config tùy chọn trong udev quy tắc và cập nhật tập lệnh hook sử dụng
cả tệp nữa. Chi tiết về những gì bạn có thể đưa vào tệp đó được mô tả trong
CẤU HÌNH LỰA CHỌN phần bên dưới.

- Tập tin hook libvirt đã được cài đặt. Nếu tất cả những điều trên được thực hiện, thì các thiết bị sẽ
được thêm vào các máy khách đang chạy nếu chúng được cắm trong khi khách đang chạy.
Bước cuối cùng này đảm bảo các thiết bị đã được cắm vào sẽ được thêm vào
khách đã bắt đầu cũng vậy (bao gồm cả những khách được bắt đầu tự động khi người tổ chức
khởi động máy).

Cho đến khi có một số cách an toàn, chúng tôi có thể cài đặt cái này mà không bị xung đột hoặc ghi đè
một hook hiện có, mọi người sẽ cần thực hiện bước này theo cách thủ công. Nếu bạn đã cài đặt
các gói Debian, thì tập lệnh hook ví dụ mà chúng tôi đã cung cấp cho việc này có thể là
tìm thấy trong / usr / share / doc / bit-babbler / example / qemu-hook. Nếu bạn không, nó có thể được tìm thấy
in libvirt / qemu-hook của gói nguồn.

Bạn sẽ cần cài đặt tệp đó dưới dạng / etc / libvirt / hooks / qemuhoặc hợp nhất nội dung của nó với
hiện tại Ái chà tập tin ở đó nếu bạn đã có bộ móc đó. Nếu tệp đó không
đã tồn tại trước đó, bạn sẽ cần phải khởi động lại libvirtd(8) để bắt đầu sử dụng nó.

Điều đó sẽ bao gồm tất cả các tự động hóa cần thiết, nhưng bạn cũng có thể gắn và tháo các thiết bị
thủ công bất cứ lúc nào. Chi tiết của việc làm điều đó sẽ được mô tả trong phần sau
phần. Nếu không, với tất cả những điều trên được thực hiện, không có lý do gì khác để cần gọi
váy ngắn trực tiếp.

LỰA CHỌN


Có hai chế độ hoạt động chính cho váy ngắn được chọn bởi ban đầu
tùy chọn hành động. Nếu hành động cần thực hiện là đính kèm or tách ra sau đó chỉ một thiết bị duy nhất
sẽ được thực hiện và thiết bị nào phải được chỉ định rõ ràng, ngay cả khi
chỉ có một thiết bị hiện diện trên máy chủ tại thời điểm đó. Khi gọi váy ngắn thủ công,
các thiết bị có thể được chỉ định bởi số sê-ri của nó, địa chỉ logic của nó trên bus (trong
hình thức số lượng lớn:devnum, được cung cấp dưới dạng số nguyên thập phân), hoặc địa chỉ thực của nó trên xe buýt (trong
hình thức số lượng lớn-cổng[.Hải cảng ...]).

Nếu hành động cần thực hiện là đính kèm tất cả or tách ra tất cả, sau đó (các) thiết bị để hoạt động
được chọn bởi miền thay vào đó là hiệp hội. Nếu một miền được chỉ định rõ ràng, sau đó tất cả
các thiết bị được chỉ định cho miền khách đó trong tệp cấu hình sẽ được hoạt động
theo cùng một cách như thể váy ngắn đã được gọi cho từng người trong số họ với
đính kèm or tách ra hoạt động. Nếu không miền được cung cấp, sau đó tất cả khách được định cấu hình
miền sẽ được thực hiện theo cách này.

Các tùy chọn bổ sung sau có sẵn:

-NS, --config
Chỉ định một tệp cấu hình thay thế để nhập các chỉ định thiết bị từ đó.
Nếu đường dẫn đến tệp không được cung cấp rõ ràng, thì nó sẽ được tìm kiếm trong
các / etc / bit-babbler thư mục (với một .conf hậu tố).

-NS, --connect =URI
Xác định đầm lầy(1) kết nối URI để sử dụng. Điều này sẽ ghi đè DOMAIN_URI định
cho miền trong tệp cấu hình. Nếu điều đó không được đặt bằng cách sử dụng một trong hai
các phương pháp sau đó đầm lầy mặc định cho người dùng đang chạy váy ngắn sẽ được sử dụng.

-NS, - miền =tên
Chỉ định miền libvirt để hành động. Điều này có thể được sử dụng để ghi đè thiết bị
phân bổ từ tệp cấu hình khi váy ngắn được gọi theo cách thủ công hoặc để hành động
trên thiết bị hoặc miền hiện không được chỉ định trong tệp cấu hình.

-NS, --busnum =num
Chỉ định số bus USB mà thiết bị được gắn vào. Tùy chọn này chủ yếu là
được sử dụng để tránh váy ngắn cần phải tra cứu điều này khi nó đã được biết trước (chẳng hạn như khi
nó được gọi từ một udev luật lệ). Thường không có nhiều lý do để vượt qua điều này nếu
kêu gọi váy ngắn theo cách thủ công, vì bạn chỉ có thể chỉ định thiết bị theo lôgic của nó hoặc
địa chỉ thực để thay thế.

-NS, --devnum =num
Chỉ định số thiết bị USB mà thiết bị hiện được gán. Cùng với
số xe buýt, điều này tạo thành địa chỉ logic của thiết bị. Tùy chọn này là
chủ yếu được sử dụng để tránh váy ngắn cần phải tra cứu điều này khi nó đã được biết (chẳng hạn
như khi nó được gọi từ một udev luật lệ). Thường không có nhiều lý do để vượt qua
cái này nếu đang kêu gọi váy ngắn theo cách thủ công, vì bạn chỉ có thể chỉ định thiết bị bằng
địa chỉ logic thay thế.

-N, - chạy thử
Không đính kèm hoặc tháo rời bất kỳ thiết bị nào, chỉ hiển thị những gì sẽ được cố gắng nếu đây là
chạy trực tiếp. Tùy chọn này ngụ ý mức tối thiểu là --dài dòng, nhưng độ dài có thể
được tăng thêm bằng cách chuyển tùy chọn đó một cách rõ ràng.

-v, --dài dòng
Làm ồn ào hơn về những gì đang thực sự diễn ra. Nó có thể được chuyển nhiều lần đến
tăng độ dài hơn nữa.

- ?, --Cứu giúp
Hiển thị một bản tóm tắt ngắn gọn về các tùy chọn có sẵn.

CẤU HÌNH LỰA CHỌN


Sản phẩm váy ngắn tệp cấu hình chứa các phép gán biến bằng cách sử dụng bash(1) vỏ
cú pháp. Nó có nguồn gốc là một đoạn mã shell, vì vậy về nguyên tắc, bạn có thể tạo
cấu hình động cho từng miền, nhưng thông thường nhất là một phép gán tĩnh đơn giản
trong số các thiết bị cho các miền sẽ đủ. Nếu bạn chọn chạy mã trong đó, bạn phải rất
phòng thủ về không gian tên bất kỳ biến nào khác mà bạn sử dụng hoặc bất kỳ tác dụng phụ nào khác mà bạn
có thể xảy ra. Bất kỳ số lượng miền khách nào cũng có thể được định cấu hình trong đó.

Đối với mỗi miền khách, hai biến kiểm soát hành vi của váy ngắn:

DOMAIN_URI_miền=URI
Biến này là tùy chọn và đặt đầm lầy(1) kết nối URI sử dụng khi
gắn hoặc tách các thiết bị ra khỏi miền. Nếu --liên kết Tùy chọn là
rõ ràng được chuyển cho váy ngắn nó sẽ ghi đè những gì được thiết lập ở đây. Nếu kết nối
URI không được đặt bằng cách sử dụng một trong hai phương pháp này thì đầm lầy mặc định cho người dùng
chạy váy ngắn sẽ được sử dụng (thường sẽ là root nếu chạy từ udev).

MIỀN_RNG_miền=( thiết bị nối tiếp số hữu ích. Cảm ơn ! )
Biến này là bắt buộc nếu tự động chuyển thiết bị đến một miền
mong muốn. Nó là một mảng bash, được điền với một danh sách được phân tách bằng dấu cách gồm tất cả
số sê-ri thiết bị mà bạn muốn gán cho miền. Nó không phải là một lỗi cho
thiết bị được liệt kê ở đây hiện không được cắm vào. Điều quan trọng là
đảm bảo rằng các thiết bị chỉ được gán cho một miền mặc dù, và các thiết bị đó
được chỉ định cho các miền khách sẽ không được sử dụng bởi hạt giống(1) phiên bản chạy trên
máy chủ (có nghĩa là hạt giống cấu hình cần được thông qua một danh sách rõ ràng
các thiết bị mà nó cũng có thể sử dụng).

Số sê-ri của thiết bị phải luôn được sử dụng ở đây. Bạn không thể chỉ định một thiết bị bằng
địa chỉ logic hoặc địa chỉ thực của nó trên xe buýt (giống như bạn có thể làm ở hầu hết các nơi khác, nơi
chúng tôi lấy một ID thiết bị).

Sử dụng bbvirt trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

  • 1
    wxPython
    wxPython
    Một tập hợp các mô-đun mở rộng Python
    bọc các lớp GUI đa nền tảng từ
    wxWidgets.. Đối tượng: Nhà phát triển. Người dùng
    giao diện: X Window System (X11), Win32...
    Tải xuống wxPython
  • 2
    góifilemanager
    góifilemanager
    Đây là trình quản lý tệp gói Total War
    dự án, bắt đầu từ phiên bản 1.7. Một
    giới thiệu ngắn về Warscape
    mod: ...
    Tải xuống packfilemanager
  • 3
    IPerf2
    IPerf2
    Một công cụ lưu lượng mạng để đo lường
    Hiệu suất TCP và UDP với các chỉ số
    xung quanh cả thông lượng và độ trễ. Các
    các mục tiêu bao gồm duy trì một hoạt động
    cá tuyết iperf ...
    Tải xuống IPerf2
  • 4
    fre: ac - công cụ chuyển đổi âm thanh miễn phí
    fre: ac - công cụ chuyển đổi âm thanh miễn phí
    fre:ac là một công cụ chuyển đổi âm thanh và đĩa CD miễn phí
    trình trích xuất cho các định dạng và bộ mã hóa khác nhau.
    Nó có tính năng MP3, MP4/M4A, WMA, Ogg
    Định dạng Vorbis, FLAC, AAC và Bonk
    ủng hộ, ...
    Tải xuống fre:ac - trình chuyển đổi âm thanh miễn phí
  • 5
    Matplotlib
    Matplotlib
    Matplotlib là một thư viện toàn diện
    để tạo tĩnh, động và
    trực quan hóa tương tác bằng Python.
    Matplotlib giúp mọi thứ trở nên dễ dàng và
    điều khó ...
    Tải xuống Matplotlib
  • 6
    người máy
    người máy
    Viết logic chatbot của bạn một lần và
    kết nối nó với một trong những cái có sẵn
    dịch vụ nhắn tin, bao gồm cả Amazon
    Alexa, Facebook Messenger, Slack,
    Telegram hoặc thậm chí yo ...
    Tải xuống BotMan
  • Khác »

Lệnh Linux

Ad