Apa cara yang benar untuk memulai kembali udev?

46

Saya telah mengubah nama eth1antarmuka saya menjadi eth0. Bagaimana cara meminta udevsekarang untuk membaca ulang konfigurasi?

service udev restart

dan

udevadm control --reload-rules

tidak membantu. Jadi adakah cara yang valid selain me-reboot? (ya, reboot membantu dengan masalah ini)

  • ya, saya tahu saya harus menambahkan dulu perintah-perintahnya sudo, tetapi salah satu yang saya posting di atas tidak mengubah apa pun dalam ifconfig -aoutput: Saya masih melihat eth1, tidak eth0.

  • Saya baru saja mengubah NAMEproperti baris udev-rule. Tidak tahu alasan mengapa ini tidak efektif.

Tidak ada kesalahan dalam menjalankan kedua perintah yang saya posting di atas, tetapi mereka tidak mengubah nama antarmuka yang sebenarnya dalam ifconfig -aoutput. Jika saya melakukan reboot - maka perubahan nama antarmuka seperti yang diharapkan.

Untuk tujuan pengembangan, saya menulis beberapa skrip yang mengkloning mesin virtual (digerakkan VirtualBox) dan mengaturnya terlebih dahulu.

Jadi saya melakukan perintah untuk mengkloning VM, memulainya dan selama antarmuka jaringan MAC diubah - udevmenambahkan aturan kedua ke aturan persisten jaringan. Tepat setelah mesin di-boot untuk pertama kali ada 2 aturan:

  • eth0, yang tidak ada, asalkan ada di VM image MAC asli
  • eth1, yang ada, tetapi semua konfigurasi dalam semua file merujuk eth0, jadi tidak baik untuk saya

Jadi saya dengan sedmenghapus baris dengan eth0(sudah usang dan tidak berguna dalam gambar kloning) dan ganti eth1dengan eth0. Jadi saat ini saya memiliki aturan persisten yang valid, tetapi masih ada eth1di /dev.

Masalahnya: Saya tidak ingin me-reboot mesin (itu akan membutuhkan waktu lain, yang bukan hal yang baik untuk membangun-VM-stage) dan hanya ingin saya /devmembangun kembali dengan beberapa perintah sehingga saya memiliki VM yang siap digunakan tanpa reboot.

zerkms
sumber
Bagaimana Anda mengubah eth1ke eth0? Apakah Anda baru saja mengganti nama file perangkat? Jika demikian, itu bukan cara yang efektif untuk melakukannya (dan Anda harus mengharapkan perubahan akan dikembalikan oleh restart udevdaemon yang berhasil). Jika Anda menggunakan beberapa metode lain, tolong jelaskan secara rinci, dan berikan juga teks lengkap dan tepat dari pesan kesalahan yang Anda lihat ketika Anda menjalankan perintah yang Anda coba (untuk memulai ulang udevdaemon atau memuat ulang aturannya). Anda dapat mengedit pertanyaan Anda untuk memberikan informasi ini.
Eliah Kagan
@Eliah Kagan: diperbarui. ps: mengapa harus dikembalikan? Seharusnya tidak ;-)
zerkms
udevsecara dinamis menghasilkan perangkat Anda di /dev. Jika Anda me-restart itu, itu akan membuat mereka kembali sesuai dengan aturannya. Perubahan yang dilakukan langsung kepada mereka tidak, secara umum, gigih. Sepertinya memulai ulang udevberfungsi dengan baik, tetapi Anda belum mengubah nama perangkat dengan benar.
Eliah Kagan
@Eliah Kagan: udev hanya menambahkan (tidak memodifikasi) aturan baru jika tidak dapat menemukan aturan untuk perangkat tertentu. Jika ada aturan yang cocok - hanya mengikutinya tanpa modifikasi.
zerkms
@Eliah Kagan: dan saya mengubahnya dengan benar. Hanya percaya saya bisa mengubah satu char dalam satu baris ;-) (juga reboot membantu, dan ini membuktikan bahwa semuanya baik-baik saja dengan aturan)
zerkms

Jawaban:

29

Saya tidak tahu apakah ini membantu memuat ulang konfigurasi jaringan, tetapi ketika saya memodifikasi /etc/udev/rules.d/70-persistent-cd.rulesuntuk memperbaiki tautan perangkat DVD dari /dev/dvd1ke /dev/dvd, saya harus menjalankan

sudo udevadm trigger

untuk mendapatkan tautan baru yang dibuat.

akaihola
sumber
3
Saya percaya sudo udevadm trigger --action=changeini lebih aman, sesuai email ini tentang apa yang aman dan tidak aman untuk dilakukan udev: lists.ubuntu.com/archives/ubuntu-devel/2009-January/027260.html
Ehtesh Choudhury
Memang, dan itu disebut/etc/udev/rules.d/70-persistent-net.rules
msanford
Di bawah Ubuntu 15.04 udevadm triggermengunci sesi X11 saya dan melemparkan saya kembali ke layar login saya.
Ian D. Allen
20

Anda harus menggabungkan semua saran yang diberikan di sini dalam urutan yang benar:

  1. Turunkan jaringan service networking stop
  2. Lepaskan modul driver dari kernel
    1. Temukan nama modul lspci -vdan cari "driver kernel yang digunakan:"
    2. modprobe -r <driver module>
  3. Muat ulang aturan udev udevadm control --reload-rules
  4. Trigger aturan baru udevadm trigger
  5. Memuat driver modprobe <driver module>
  6. Mulai ulang jaringan service networking start
  7. (opsional) Jalankan kembali iptablesskrip yang mereferensikan ethnama antarmuka sebelum dinyalakan.

Saya menduga langkah 4 atau langkah 5 tidak benar-benar diperlukan, tetapi langkah-langkah ini berhasil untuk saya. Anda dapat memeriksa setelah langkah 4 dengan langkah 2.1 untuk melihat apakah perintah pemicu sudah melakukan langkah 5, edit jawaban ini untuk mencerminkan temuan Anda jika Anda melakukannya.

Chris Wesseling
sumber
1
Ubuntu 15.04 dengan semua perangkat terdaftar /etc/network/interfaces(jadi Network Manager membiarkannya sendiri): Yang perlu saya lakukan hanyalah mengedit /etc/udev/rules.d/70-persistent-net.ruleslalu melakukan # 2, # 3, # 5. Tidak perlu menghentikan semua jaringan; tidak perlu untuk hal lain.
Ian D. Allen
5

Saya punya masalah serupa. Karena saya tidak ingin meluangkan waktu untuk reboot, saya menjalankan liner menggunakan saran Chris Wesseling.

/etc/init.d/networking stop && modprobe -r tg3 && kontrol udevadm --muat kembali aturan && pemicu udevadm && modprobe tg3 && /etc/init.d/networking start

Ini bekerja untuk saya menggunakan server Ubuntu 12.04.02. Nics saya menggunakan driver modul kernel tg3, jadi ubah tg3 ke modul yang digunakan antarmuka Anda. Saya menemukan yang saya gunakan di /etc/udev/rules.d/70-persistent-net.rules:

Perangkat PCI 0x14e4: / sys / devices / pci0000: 00/0000: 00: 1c.4 / 0000: 02: 00.1 (tg3) <-modul driver modul untuk

Satu masalah yang saya miliki adalah rute yang buruk yang saya perbaiki dengan perintah add rute sederhana. Terima kasih atas bantuannya Chris!

pengguna197674
sumber
3

sudo /etc/init.d/udev restartharus melakukan trik. Beberapa perintah yang Anda coba, jika dijalankan sudo, mungkin juga efektif.

Eliah Kagan
sumber
Tidak, ifconfig -amasih menunjukkan saya eth1antarmuka lama
zerkms
3

Ini harus dilakukan dengan aman:

sudo reload udev

Karena saya telah menggunakan perintah ini tanpa masalah.

rdh
sumber
Tidak, ifconfig -amasih menunjukkan saya eth1antarmuka lama
zerkms
1

Saya telah meneliti ini untuk sementara waktu dengan tujuan yang hampir sama, dan saya belum dapat menemukan cara untuk mengubah nama antarmuka jaringan dalam sistem live.

Solusi yang saya gunakan adalah menghapus file /etc/udev/rules.d/70-persistent-net.rules dalam template, yang berarti bahwa pada boot berikutnya ia akan melihat kartu jaringan sebagai eth0.

Merlijn
sumber
1

Anda perlu memuat ulang udev untuk memicu perubahan aturan, tetapi perangkat tidak akan diganti namanya kecuali Anda membongkar / memuat kembali modul driver.

Jadi modprobe -r e1000 && modprobe e1000setelah udev ulang, lakukan triknya. Tentu saja, jangan lakukan itu jika Anda membutuhkan jaringan dan hanya memiliki antarmuka e1000.

mengangguk
sumber
0
udevadm trigger 

itu akan berfungsi masukkan deskripsi tautan di sini

zhou yunjian
sumber
1
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Braiam
0

Jadi bagi saya di VirtualBox dengan Ubuntu 12.04, saya sering beralih antara ethernet dan nirkabel.

Jadi ketika koneksi saya berubah, saya harus memilih Bridged Adapter dari Perangkat> Pengaturan Jaringan. Baik 'Intel 82579LM Gigabit Network Connection' atau 'Intel Centrino Ultimate-N 6300 AGN'.

Setelah melakukan ini, saya bisa lari

sudo modprobe -r e1000
sudo service udev restart
sudo modprobe e1000
ping google.com # To test I ran this between each command.

Ini hanya penjelasan hasil saya setelah membaca semua jawaban di atas.

Derek Robati
sumber