Score:0

ในช่วงใดที่ dracut hook ไคลเอนต์ PXE สามารถเปลี่ยนชื่ออินเทอร์เฟซที่คาดเดาได้โดยใช้กฎ udev

ธง jp

tl; dr: ระหว่างการโหลด initramfs (การดำเนินการของโมดูล dracut) บนไคลเอนต์ PXE ฉันต้องเปลี่ยนชื่ออินเทอร์เฟซที่กำหนดโดยเคอร์เนล (คาดเดาได้) (ตอนนี้เป็นชื่อ ethX ที่คาดเดาไม่ได้) ด้วยวิธีนี้ ไคลเอนต์ PXE จะบูตจากอินเทอร์เฟซที่มีชื่อที่คาดคะเนได้เสมอ ขณะนี้ฉันกำลังอ่านข้อมูลฮาร์ดแวร์ด้วย dmesg ระหว่างตะขอบรรทัด cmdline dracut ฉันสามารถ แมว กฎ udev เพื่อ /usr/lib/udev/rules.d/ ที่นี่เพื่อให้ระบบสามารถเปลี่ยนชื่ออินเทอร์เฟซเมื่อ dracut ทริกเกอร์ udev ในภายหลัง

โดยทั่วไปฉันมีสิ่งนี้ใน hook ของ dracut cmdline:

# อ่านฮาร์ดแวร์ที่ให้มาก่อน
ถ้า dmesg | grep -q "SOME_BOARD_NAME"; แล้ว
    root=$(echo "$root" | sed -e 's/PLACEHOLDER_FILE/SOME_ROOTFS.sqsh/')
    # นอกจากนี้ จำเป็นต้องมีกฎ udev เฉพาะสำหรับบอร์ดนี้
# mkdir -p /etc/udev/rules.d
# echo "ติดตั้งกฎของบอร์ดเหล่านี้!\n"
# echo << EOF > /etc/udev/rules.d/70-persistent-net.rules
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*1c.0/0000:07:00.0/net/*", NAME="eth0"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*01.1/0000:05:00.0/net/*", NAME="eth1"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*01.1/0000:05:00.1/net/*", NAME="eth2"
#อฟ
elif dmesg | grep -q "SOME_OTHER_BOARD_NAME"; แล้ว
    root=$(echo "$root" | sed -e 's/PLACEHOLDER_FILE/SOME_OTHER_ROOTFS.sqsh/')
    echo "ติดตั้งกฎเฉพาะบอร์ดอื่นๆ!\n"
# mkdir -p /etc/udev/rules.d
# echo << EOF > /etc/udev/rules.d/70-persistent-net.rules
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*1c.5/0000:09:00.0/net/*", NAME="eth0"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*02.2/0000:02:00.0/net/*", NAME="eth1"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*02.2/0000:02:00.1/net/*", NAME="eth2"
#อฟ
อื่น
    เตือน "ตรวจไม่พบบอร์ดใดบอร์ดหนึ่ง - ตั้งค่าเริ่มต้นเป็น SOME_OTHER_ROOTFS.sqsh"
    root=$(echo "$root" | sed -e 's/PLACEHOLDER_FILE/SOME_OTHER_ROOTFS.sqsh/')
ไฟ

ข้อมูลเพิ่มเติม: ทีมของฉันและฉันมีคอมพิวเตอร์บอร์ดเดียวที่บูต PXE จากเซิร์ฟเวอร์ภายนอก ต่อไปนี้เป็นลำดับของ:

  1. SBC ดึง initramfs และโหลดสิ่งนั้น
  2. initramfs ดำเนินการโมดูล dracut ที่อ่านข้อมูลฮาร์ดแวร์ของ SBC (ระหว่างการขอ dracut "cmdline")
  3. SBC ดึงระบบไฟล์รูทเฉพาะขึ้นอยู่กับฮาร์ดแวร์

น่าเสียดายที่บางครั้งชื่ออินเทอร์เฟซ ethX (คาดเดาไม่ได้) แบบเก่าทำให้ SBC ดึงระบบไฟล์รูทลงมาผ่านอินเทอร์เฟซเครือข่ายที่ไม่ถูกต้อง

แผนของฉันคือการเอาออก net.ifnames=0 และ biosdevname=0 จากบรรทัดคำสั่งเคอร์เนลที่ใช้ในการบูต PXE (ขั้นตอนที่ 1) หลังจากที่เคอร์เนลได้กำหนดชื่อที่สามารถคาดเดาได้แล้ว ฉันต้องการขยายโมดูล dracut เพื่อเพิ่มกฎ udev เพื่อเปลี่ยนชื่อเป็นชื่อเก่า ฉันหวังว่าเมื่อ dracut ทริกเกอร์ udev SBC จะดึงระบบไฟล์รูทผ่านอินเทอร์เฟซที่ถูกต้องเสมอ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา