คำถามติดแท็ก udev

Udev เป็นกระบวนการ Linux ที่จัดการรายการไฟล์อุปกรณ์ภายใต้ / dev

5
Udev: เปลี่ยนชื่ออินเทอร์เฟซเครือข่ายของฉัน
ฉันเพิ่งติดตั้งRHEL 6.3บนเซิร์ฟเวอร์ Dell 1950 เซิร์ฟเวอร์นี้เป็นพอร์ตสอง GBit, Gb0 และ Gb1 ด้วยเหตุปิดบังบางส่วนudevเลือกที่จะตั้งชื่อGb0 eth1และgB1 eth0นี่ไม่ใช่สิ่งที่ดีสำหรับฉันและทำให้เกิดความสับสน ดังนั้นฉันจึงปรับเปลี่ยนการกำหนดค่าใน/etc/udev/rules.d/70-persistent-net.rules: # PCI device 0x14e4:0x164c (bnx2) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ ATTR{address}=="00:20:19:52:d3:c0", \ ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" # PCI device 0x14e4:0x164c (bnx2) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ ATTR{address}=="00:20:19:52:d3:be", \ ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" ฉันเพิ่งเปลี่ยนฟิลด์ "NAME" ในไฟล์เพื่อสะท้อนสิ่งที่ฉันต้องการ ฉันรีบูทเซิร์ฟเวอร์และมันไม่ทำงาน ในdmesgบันทึกที่ฉันสามารถอ่านต่อไปนี้: udev: renamed network interface …
20 linux  rhel  udev 

1
ความแตกต่างระหว่าง / dev และ / sys
ความแตกต่างระหว่างdevfsและsysfsคืออะไร ทั้งสองดูเหมือนจะรักษารายชื่อของ hardwares ที่แนบมากับระบบ ถ้าอย่างนั้นทำไมต้องแยกกัน 2 เอฟเอส? เท่าที่ฉันจะได้รับ/ sysรักษารายการอุปกรณ์ "แบบดิบ" (เช่น "ser0") Udev ทำหน้าที่ในอุปกรณ์เหล่านั้นรับข้อมูลต่าง ๆ และใช้กฎต่าง ๆ เพื่อแสดงเป็นชื่อที่รู้จักซึ่งจะถูกแมปลงบน/ dev (เช่น "กล้อง") นี่เป็นเหตุผลเดียวหรือไม่ จากนั้นเราติดอุปกรณ์ที่เกี่ยวข้องจาก/ dev fs (เราไม่สามารถทำเช่นนั้นจาก/ sys fs) ลงใน/ media fs ฉันได้อ่านคำตอบที่แตกต่างระหว่าง / dev และ / sys / class? . แต่ฉันไม่สามารถรับส่วน sys fs ที่มันกล่าวว่า Sysfs มีลำดับชั้นของอุปกรณ์ตามที่แนบมากับคอมพิวเตอร์ ไฟล์ใน / sys ไม่ใช่ไฟล์โหนดอุปกรณ์หรือไม่ …
19 linux  mount  devices  udev  sysfs 


6
`dd if = / dev / zero of = / dev / sda` ทำอะไร
แก้ไข: อย่าเรียกใช้สิ่งนี้เพื่อทดสอบเว้นแต่ว่าคุณต้องการทำลายข้อมูล มีคนช่วยฉันเข้าใจสิ่งที่ฉันได้หรือไม่ dd if=/dev/zero of=/dev/sda bs=4096 count=4096 Q: ทำไมเฉพาะสำหรับ 4096 count? dd if=/dev/zero of=/dev/sda bs=512 count=4096 seek=$(expr blockdev --getsz /dev/sda - 4096) ถาม: สิ่งนี้ทำอะไรกันแน่
19 udev  dd  disk 

3
การเมานต์จะไม่ถูกเรียกใช้งานเมื่อถูกเรียกโดย udev
ฉันพยายามสร้างกฎ udev เพื่อเมานต์และยกเลิกการต่อเชื่อมแฟลชไดรฟ์ USB ของฉัน กฎสำหรับช่วงเวลานั้นง่ายมาก: ACTION=="add",KERNEL=="sd[b-z]",RUN+="/root/scripts/plug_flash_drive.sh %k" ACTION=="remove",KERNEL=="sd[b-z]",RUN+="/root/scripts/unplug_flash_drive.sh %k" plug_flash_drive.sh นั้นง่ายมาก: device_name=$1 mount_options="umask=000,utf8" if [ ! -e "/media/$device_name" ]; then mkdir "/media/$device_name" fi sleep 1 /usr/bin/mount "/dev/$device_name" "/media/$device_name" -o "$mount_options" unplug_flash_drive.sh: device_name=$1 umount "/dev/$device_name" rmdir "/media/$device_name" ฉันได้ทำการทดสอบบางอย่างเพื่อให้แน่ใจได้ว่า: เมื่อเสียบปลั๊กแฟลชไดรฟ์ของฉันจะตรวจจับ ไฟล์ถูกสร้างขึ้นใน / dev plug_flash_drive.sh ถูกเรียกโดย udev ส่วน mkdir ของสคริปต์ทำงาน อย่างไรก็ตามดูเหมือนว่าส่วน "เมานท์" …
17 mount  udev  usb-drive 

4
มีทางเลือกอื่นในการใช้ `udev 'หรือไม่
ในขณะที่ฉันเข้าใจความยิ่งใหญ่ของ udev และชื่นชมความพยายามของนักพัฒนาฉันก็แค่สงสัยว่ามีทางเลือกอื่นหรือไม่ ตัวอย่างเช่นฉันอาจจินตนาการว่าควรมีวิธีในการสร้างสคริปต์เริ่มต้นที่สร้างโหนดอุปกรณ์ส่วนใหญ่ซึ่งในระบบของฉัน (ไม่มีฮาร์ดแวร์ที่เปลี่ยนแปลง) จะเหมือนกันที่สุด ประโยชน์หรือเหตุผลที่ฉันต้องการข้ามudevจะเหมือนกับการข้ามdbusคือลดความซับซ้อนและเพิ่มการเปลี่ยนแปลงในการตั้งค่าระบบให้ปลอดภัยยิ่งขึ้น
16 linux  devices  udev 

4
วิธีแก้จุดบกพร่องกฎ udev (ใน/etc/udev/rules.d/…)
ฉันกำลังสร้างกฎพื้นฐานใหม่ /etc/udev/rules.d/10-myrule.rules ที่มี: KERNEL!="sdb*", GOTO="auto_mount_end" ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media" LABEL="auto_mount_end" ฉันบันทึกรีบูทและใส่การ์ด SD (ยอมรับโดย/dev/sdb1ฉันเห็นด้วยdmesg) แต่ไม่มีอะไรเกิดขึ้น เมื่อฉันทำด้วยตนเองmount /dev/sdb1 /mediaมันทำงานได้ ฉันจะแก้ไขปัญหา / แก้ไขข้อบกพร่องดังกล่าวได้udevอย่างไร หมายเหตุ: ฉันใช้ ArchLinux แต่ควรจะเหมือนกันใน distro ใด ๆ
15 arch-linux  mount  udev 

3
วิธีการสร้าง 70-persistent-net.rules โดยไม่ต้องรีบู๊ต?
ไฟล์/etc/udev/rules.d/70-persistent-net.rulesถูกสร้างขึ้นโดยอัตโนมัติบนระบบ Linux ที่มี udev หากไม่มีอยู่ในระหว่างการรีบูต แต่ฉันต้องการทราบวิธีสร้างไฟล์กฎนี้ (ด้วยคำสั่ง) โดยไม่ต้องรีบูตเซิร์ฟเวอร์ ฉันใช้ Googling ไประยะหนึ่งแล้วพบว่าไฟล์กฎนี้สร้างขึ้นโดยสคริปต์นี้: /lib/udev/write_net_rules อย่างไรก็ตามมันเป็นไปไม่ได้ที่จะเรียกใช้สคริปต์นี้จากบรรทัดคำสั่งเนื่องจาก (ฉันถือว่า) มันต้องการที่จะเริ่มต้นโดย udev ด้วยการตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างอย่างเหมาะสม เริ่มต้นด้วยตนเองพิมพ์ข้อความผิดพลาด "ขาดหายไป $ INTERFACE" แม้ว่าฉันจะตั้งค่าตัวแปร env INTERFACE = eth0 ก่อนการเริ่มต้นของสคริปต์ก็ยังพิมพ์ข้อผิดพลาด "ขาดการจับคู่ที่ถูกต้อง" ไม่ต้องพูดถึงฉันมีสองอินเตอร์เฟส ( eth0และeth1) และฉันต้องการไฟล์กฎที่สร้างขึ้นสำหรับทั้งสอง ฉันยังคิดที่จะเรียกเหตุการณ์ udev เช่นนี้หวังว่ามันจะเริ่มต้นสคริปต์จาก udev เอง แต่ไม่มีอะไรเปลี่ยนแปลง: udevadm trigger --type=devices --action=change ดังนั้นใครรู้วิธีการสร้างกฎสุทธิถาวรในไฟล์/etc/udev/rules.d/70-persistent-net.rulesโดยไม่ต้องรีบูต?
14 linux  udev 

1
มีวิธีการเปลี่ยนชื่ออุปกรณ์ในไดเรกทอรี / dev หรือไม่?
ฉันเขียนกฎนี้เพื่อวัตถุประสงค์ในการทดสอบ: SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Kingston", ATTRS{serial}=="001CC0EC34A2BB318709004B", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1642", SYMLINK+="pen", NAME="pendrak" ตามข้อมูลต่อไปนี้: # udevadm info --name=/dev/sdb --attribute-walk Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule …
13 devices  udev 

3
โทรแจ้ง - ส่งจากกฎ udev
ฉันใช้ Linux Mint 13 MATE และฉันพยายามตั้งค่าการแจ้งเตือนเมื่อฉันเสียบ / ถอดปลั๊กอุปกรณ์ ก่อนอื่นฉันพบแพ็คเกจudev-alertแต่น่าเสียดายที่มันใช้งานไม่ได้สำหรับฉัน: มันใช้งานได้ในเวลาน้อยมาก (1-2 นาที) จากนั้นถ้าฉันเชื่อมต่อ / ตัดการเชื่อมต่ออุปกรณ์ใด ๆ ก็เกิดปัญหา: Traceback (most recent call last): File "./udev-notify.py", line 319, in <module> notification.show() glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files ฉันไม่พบวิธีแก้ไขปัญหาดังนั้นฉันจึงต้องลบมันออก (ยื่นรายงานข้อบกพร่องด้วย) น่าแปลกที่ไม่มีสาธารณูปโภคที่คล้ายกันที่ฉันพบมา จากนั้นฉันพยายามเขียนกฎ udev ที่ควรตรงกับอุปกรณ์ทั้งหมด ฉันได้เพิ่มไฟล์ใหม่/etc/udev/rules.d/notify.rules: ACTION=="add", RUN+="/bin/bash …

4
วิธีเปิดใช้งาน“ ชื่อเครือข่ายอินเตอร์เฟสที่คาดการณ์ได้”
ฉันตัดสินใจที่จะตรวจสอบสิ่งที่ชื่ออุปกรณ์อีเธอร์เน็ตของฉันจะจบลงด้วย แต่ตรงกันข้ามกับคนอื่น distrosเดเบียนดูเหมือนจะไม่ได้เปิดใช้งานการเปลี่ยนแปลงนี้ (หรือถือมันกลับมา?), รักษารูปแบบการตั้งชื่ออินเทอร์เฟซเครือข่ายแบบต่อเนื่องเดิมไว้และทำการเลือกใช้ใหม่ผ่าน net.ifnames = 1 บนบรรทัดคำสั่งเคอร์เนล ปัญหาคือว่าผมจะต้องแก้ไขด้วงสายเคอร์เนลและดูเหมือนว่า overkill สำหรับสิ่งที่สามารถใช้งานได้โดยการแก้ไขไฟล์ มีวิธีอื่นอีกไหม?
12 debian  systemd  udev 

6
รับโหนดอุปกรณ์โดยการจับคู่หมายเลขหลัก / รอง
แต่ละโหนดอุปกรณ์ภายใต้/devมีคู่หลัก / รองหมายเลขของตัวเอง ฉันรู้ว่าเราสามารถดึงหมายเลขคู่นี้จากโหนดอุปกรณ์โดยวิธีstatดังนี้: stat -c 'major: %t minor: %T' <file> หรือls -lแสดงตัวเลขเหล่านี้ด้วย แต่เราจะได้รับโหนดอุปกรณ์โดยการระบุหมายเลขหลักและรองได้อย่างไร วิธีเดียวที่ฉันรู้คือเคล็ดลับls -l+ บางอย่างawkแต่ฉันหวังว่าจะมีวิธีแก้ปัญหาที่ดีกว่า
12 udev 

2
เหตุใดกฎ udev นี้จึงไม่เรียกใช้เมื่อนำอุปกรณ์ออก
ฉันมีเมาส์สองตัวตัวหนึ่งซึ่งมีปัญหาที่ปุ่มกลางของเมาส์และ button6 ถูกทริกเกอร์พร้อมกัน ดังนั้นฉันจึงกำหนดค่า~/.Xmodmapให้ปิดใช้งานปุ่มนี้ อย่างไรก็ตามในเวลาเดียวกันฉันต้องการที่จะยังคงสามารถใช้ปุ่มนี้กับเมาส์ตัวอื่นของฉันได้ ดังนั้นฉันจึงเขียนudevกฎที่เรียกว่าxmodmapเปลี่ยนเค้าโครงปุ่มขึ้นอยู่กับเมาส์ที่เชื่อมต่อ ติดตั้ง นี่คือการตั้งค่าปัจจุบันของฉัน: /etc/udev/rules.d/logitech-g7.rules : # deactivate MB 6 when mouse 1 is connected ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 1", OWNER="user" # restore defaults when mouse 1 is disconnected ACTION=="remove", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 0", OWNER="user" /home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper : #!/bin/bash /home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher "$1"& /home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher #!/bin/bash sleep 1 …
12 usb  mouse  udev  xmodmap 

1
เป็นวิธีที่ถูกต้องในการเขียนกฎ udev เพื่อหยุดบริการภายใต้ systemd อะไร
ฉันกำลังเรียกใช้ Arch Linux และฉันมีกฎ udev ซึ่งเริ่มให้บริการเมื่อมีการเสียบอุปกรณ์ ในกรณีนี้มันจะทำการเชื่อมต่อเมื่อทำการต่อโมเด็ม 3G KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="netcfg@wvdial.service" อย่างไรก็ตามหากอุปกรณ์ถูกลบออก systemd จะไม่หยุดให้บริการและด้วยเหตุนี้เมื่อเสียบปลั๊กอีกครั้งอุปกรณ์จะไม่เริ่มบริการเนื่องจากมันกำลังทำงานอยู่ สิ่งที่ฉันต้องการคือกฎ udev ที่ตรงกันซึ่งทำงานเมื่ออุปกรณ์ถูกลบเพื่อหยุดบริการ ปรับปรุง ใช้คำตอบด้านล่างสิ่งที่ฉันมีตอนนี้คือกฎ udev ต่อไปนี้ KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service" ด้วยไฟล์เซอร์วิสต่อไปนี้ (ซึ่งถูกคัดลอกและวางโดยทั่วไปจากไฟล์เซอร์วิส netcfg: [Unit] Description=Netcfg networking service for Vodafone Dongle Before=network.target Wants=network.target BindsTo=dev-gsmmodem.device After=dev-gsmmodem.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/netcfg check-iface wvdial ExecStop=-/usr/bin/netcfg down wvdial KillMode=none …
12 linux  udev  systemd 

3
BunsenLabs (Debian derrivative) จะไม่ปิดลง (ไม่สามารถเริ่ม poweroff.target: การทำธุรกรรมเป็นอันตราย)
ฉันสะดุดพฤติกรรมแปลก ๆ ของ BunsenLabs GNU / Linux ของฉัน (ซึ่งใช้ภาษาเดเบียน) บางครั้งฉันไม่สามารถปิดระบบปฏิบัติการ ฉันไม่สำคัญว่าฉันจะใช้sudo poweroffหรือวิธี GUI นี่คือสิ่งที่ฉันได้รับหลังจากใช้งานsudo poweroff: Failed to start poweroff.target: Transaction is destructive มีวิธีแก้ปัญหาหรือไม่? ทำไมมันเกิดขึ้น นี่คือเนื้อหาของฉัน/lib/udev/rules.d/70-power-switch.rules: ACTION=="remove", GOTO="power_switch_end" SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="acpi", TAG+="power-switch" SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="thinkpad_acpi", TAG+="power-switch" LABEL="power_switch_end"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.