Score:2

เหตุใดเคอร์เนล Linux ของฉันจึงไม่มีไดเร็กทอรี / ไฟล์ที่มีความสำคัญต่อการทำงานของ ip_tables

ธง in

ตามที่กล่าวไว้ในส่วนหัว - เคอร์เนล Linux ของฉันดูเหมือนจะไม่มีไฟล์ / ไดเร็กทอรีที่สำคัญสำหรับ iptables เพื่อให้ทำงานได้อย่างถูกต้องฉันสามารถแก้ไขปัญหานี้ได้ชั่วคราวด้วยการติดตั้งเคอร์เนลใหม่ แต่ไม่ใช่การแก้ไขถาวร เนื่องจากหลังจากรีบูต ฉันจะกลับไปที่จุดเริ่มต้น

เมื่อฉันวิ่ง iptables -L ฉันได้รับข้อผิดพลาดแจ้งว่า "บางที iptables หรือเคอร์เนลของคุณจำเป็นต้องได้รับการอัปเกรด" ฉันพบว่าฉันสามารถแก้ไขข้อผิดพลาดนี้ได้ด้วยการเรียกใช้ sudo apt-get install --reinstall linux-modules-5.8.0-59-generic. ฉันสังเกตว่าหลังจากติดตั้งใหม่ ฉันมีไฟล์และไดเร็กทอรีเพิ่มเติมในไฟล์ /lib/modules/5.8.0-59-generic ไดเรกทอรีซึ่งทำให้ฉันเชื่อว่าโดยค่าเริ่มต้นเคอร์เนลของฉันไม่มีสิ่งเหล่านี้และปิดใช้งาน iptables จากการทำงานอย่างถูกต้อง หลังจากรีบูตเครื่องจะกลับไปหาไฟล์/ไดเร็กทอรีและ iptables ดังกล่าวที่หายไปซึ่งไม่ทำงาน

เป็นไปได้หรือไม่ที่จะติดตั้งโมดูลเคอร์เนลใหม่อย่างถาวร ดังนั้นฉันจึงไม่ต้องติดตั้งใหม่หลังจากรีบูตทุกครั้งเพื่อให้ iptables ทำงานได้

ฉันใช้ Ubuntu 20.04.2 และตามที่กล่าวไว้ข้างต้นเคอร์เนลของฉันคือ 5.8.0-59-generic ฉันขอขอบคุณความช่วยเหลือที่ฉันได้รับ!

แก้ไข:

ผลลัพธ์ที่ฉันได้รับจาก ls /boot/vmlinuz* คือ: [เอาต์พุต vmlinuz]: https://i.stack.imgur.com/dDroe.png หรือเป็นข้อความ:

/boot/vmlinuz /boot/vmlinuz-5.4.0-77-generic /boot/vmlinuz-5.8.0-48-generic /boot/vmlinuz-5.8.0-55-generic /boot/vmlinuz-5.8.0-59 -ทั่วไป /boot/vmlinuz.old

และผลลัพธ์ที่ฉันได้รับจาก นโยบาย apt-cache linux-image-generic คือ: [เอาต์พุต apt-cache]: https://i.stack.imgur.com/OY9Cj.png หรือเป็นข้อความ:

linux-image-generic: ติดตั้งแล้ว: 5.4.0.77.80 ผู้สมัคร: 5.4.0.77.80 ตารางเวอร์ชัน: *** 5.4.0.77.80 500 500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 แพ็คเกจ 500 http://archive.ubuntu.com/ubuntu focal-security/main amd64 แพ็คเกจ 100 /var/lib/dpkg/status 5.4.0.26.32 500 500 http://archive.ubuntu.com/ubuntu focal/main แพ็คเกจ amd64

คอมพิวเตอร์ที่ใช้งานอยู่คือ Dell Optiplex 3020 ที่มีคุณสมบัติดังนี้:

  • ซีพียู: Quad Core Intel(R) Core(TM) i5-4570 CPU @ 3.20 GHz
  • แรม: แรม 8GB

แก้ไข: ฉันไม่แน่ใจว่าผลลัพธ์จากคำสั่งเหล่านี้จะช่วยฉันได้อย่างไร และฉันขอขอบคุณคำแนะนำเพิ่มเติมจริงๆ เพราะฉันยังไม่สามารถแก้ไขได้ใกล้กว่านี้!

vidarlo avatar
ar flag
โปรด [แก้ไข] โพสต์ของคุณเพื่อรวมผลลัพธ์ของ `ls /boot/vmlinuz*` และ `apt-cache policy linux-image-generic`
Michael Hampton avatar
cz flag
โปรดอธิบายคอมพิวเตอร์ที่คุณใช้ Ubuntu
Landon Miller avatar
in flag
ขอบคุณสำหรับการตอบกลับของคุณ @vidarlo และ Michael Hampton! ฉันอัปเดตโพสต์ของฉันแล้ว ดังนั้นหวังว่าพวกคุณจะช่วยเหลือมากกว่านี้ได้!
vidarlo avatar
ar flag
@LandonMiller โปรดอย่าวางข้อความเป็นรูปภาพ ให้วางเป็นข้อความและจัดรูปแบบด้วยปุ่ม `{}`
Landon Miller avatar
in flag
ฉันแก้ไขโพสต์ของฉันเพื่อรวมเอาต์พุตเป็นข้อความ @vidarlo ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ!
mm flag
ฉันมีปัญหาเดียวกันกับ @LandonMiller เมื่อวันที่ 20.04.4 LTS (โฟกัส)
Landon Miller avatar
in flag
@Titou ฉันโพสต์สิ่งที่ฉันต้องทำเพื่อแก้ไขปัญหา อาจจะลองดูว่ามันใช้ได้หรือไม่
Score:1
ธง no

เคอร์เนลที่คุณกำลังบูทไม่ใช่เคอร์เนลที่คุณติดตั้ง กล่าวโดยสรุปคือ โมดูลที่คุณติดตั้งไว้สำหรับเคอร์เนลอื่น - อาจเป็นเคอร์เนลที่เก่ากว่าหรือใหม่กว่า ตามที่เลือกโดย bootloader ซึ่งน่าจะไม่ได้รับการอัปเดต

คุณสามารถตรวจสอบสิ่งนี้ด้วย แมว /proc/version. นี่จะแสดงเคอร์เนลที่กำลังทำงานอยู่ ฉลาดติดตั้ง --reinstall linux-modules-`cut -d\ -f3 /proc/version` ควรติดตั้งเวอร์ชันที่ถูกต้อง

คุณสามารถใช้ได้ dpkg -l|grep ลินุกซ์- เพื่อดูว่ามีการติดตั้งอะไรบ้าง

สำหรับการทำให้ bootloader หยุดการรีบูตเป็นเวอร์ชันเก่าเดียวกัน sudo ปรับปรุงด้วง อาจแก้ไขได้ หรือดูได้ /boot/grub/grub.cfg สำหรับข้อมูลเพิ่มเติมหรือถือ กะ หรือกด เอสซี เมื่อบู๊ตและเลือกเคอร์เนลที่เหมาะสม (ดู https://askubuntu.com/questions/281119/how-do-you-run-update-grub สำหรับการแก้ไขปัญหาเพิ่มเติม)

แม้ว่า Linux จะเป็นไปตามการออกแบบ "เสาหิน" ซึ่งฟังก์ชันส่วนใหญ่สามารถสร้างขึ้นในเคอร์เนลได้เอง แต่ก็มีฟังก์ชันมากมายที่พร้อมใช้งานในปัจจุบัน ซึ่งเหมาะสมกว่าที่จะย้ายฟังก์ชันการทำงานส่วนใหญ่ เช่น iptables ออกไปใน "โมดูลเคอร์เนลที่โหลดได้ ". มันมีคุณสมบัติที่ยอดเยี่ยมที่มัน "โหลดอัตโนมัติ" โมดูลเหล่านี้ตามต้องการ - แต่โมดูลเหล่านี้มักจะเฉพาะเจาะจงมากสำหรับเวอร์ชันเคอร์เนล - และไม่พบสิ่งเหล่านั้น - ดู ls /usr/lib/โมดูล/* - คือสิ่งที่ทำให้คุณได้รับข้อความแสดงข้อผิดพลาด

คุณสามารถดูโมดูลที่กำลังโหลดอยู่ lsmod. คุณยังสามารถโหลดโมดูลด้วย insmod และขนถ่ายด้วย rmmod. (ดู ผู้ชาย insmod และอื่นๆ)

คอมพิวเตอร์มีการเปลี่ยนแปลงอย่างมากในช่วง 30 ปีที่ผ่านมา แทนที่จะเก็บโมดูลไว้บนพาร์ติชันหลัก จำเป็นต้องเก็บไว้ในดิสก์ RAM ชั่วคราว เริ่มต้น เนื่องจากบางครั้งโมดูลเหล่านั้นจำเป็นสำหรับการเข้าถึงฮาร์ดไดรฟ์หรือระบบไฟล์จริง ปรับปรุงด้วง ดูแลการจัดเก็บสำเนาของโมดูลที่จำเป็นในส่วนที่เกี่ยวข้อง เริ่มต้น สำหรับเคอร์เนล Linux ที่เกี่ยวข้อง

โดยทั่วไป ตราบใดที่เคอร์เนลสามารถอ่านระบบไฟล์รูทของคุณได้ คุณก็สามารถบู๊ตระบบไฟล์รูทของ Linux โดยใช้เคอร์เนลใดก็ได้ ดังนั้นคุณจึงสามารถซ่อมแซมหรือสำรองข้อมูลระบบของคุณได้อย่างง่ายดายโดยการบูทจาก Linux ที่สามารถบู๊ตได้แบบสด จากนั้นติดตั้งระบบไฟล์หลักของคุณ (ไปหาดู. lsblk และ ภูเขา) ในการทำงานกับระบบจริงของคุณแม้ว่าคุณจะบูตจากระบบอื่น โปรดดูที่ โครต. ตัวอย่างเช่น หากคุณบูตเครื่องจริง และฮาร์ดไดรฟ์ของคุณแสดงเป็น /dev/sdb1 จากนั้นคุณสามารถ fsck /dev/sdb แล้ว เมานต์ /dev/sdb1 /mntแล้ว sudo mount -t proc - /mnt/sdb1/proc; sudo mount -o ผูก /dev /mnt/sdb1/dev; sudo chroot /mnt/sdb1 จากนั้นคุณสามารถเรียกใช้ เหมาะติดตั้ง หรือ ปรับปรุงด้วง และ ทางออก และ sudo รีบูต.)

ไฟล์อาจเสียหายหรือหายไปได้จากหลายปัจจัย เช่น พื้นที่ดิสก์เหลือน้อย สายเคเบิลหลวม ฮาร์ดแวร์เสียหาย ไฟดับ EMF รังสีคอสมิก ซอฟต์แวร์สมัยใหม่สามารถแก้ไขปัญหานี้ได้ดี สิ่งที่ยอดเยี่ยมเกี่ยวกับ Linux เมื่อเทียบกับระบบอื่นๆ คือมันทำให้คุณมีโอกาสมากขึ้นในการซ่อมแซม แทนที่จะติดตั้งใหม่ และเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานในกระบวนการนี้

mm flag
คำตอบที่ดี ฉันเห็นด้วยกับข้อเท็จจริงที่ว่าการซ่อมแซมควรหาความรู้เพิ่มเติม
Score:0
ธง in

สำหรับ @Titou... ฉันคิดว่าฉันมีข้อผิดพลาดนี้เนื่องจากเคอร์เนลเสียหาย ฉันแก้ไขปัญหาด้วยการสำรองและติดตั้ง Ubuntu OS ใหม่ หลังจากทำสิ่งนี้ ฉันไม่ได้มีปัญหาตั้งแต่นั้นมา

no flag
เสียหาย - หรือหายไป - "โมดูลเคอร์เนล" สำหรับการสำรองข้อมูล คุณควรสำรองข้อมูลเฉพาะเมื่อคุณกำลังฟอร์แมตใหม่ ซึ่งไม่ใช่ความคิดที่ดีหากคุณมีระบบไฟล์เสียหายและ `fsck` ไม่สามารถแก้ไขได้หากคุณสำรองข้อมูล สิ่งที่ดีเกี่ยวกับ Linux ก็คือคุณต้องสำรองข้อมูล `/home` เท่านั้น เว้นแต่คุณจะโฮสต์เว็บไซต์และฐานข้อมูล ในกรณีนี้การกำหนดค่าจะเป็น `/ etc` และข้อมูลเป็น ` / var ' หากคุณมีอิมเมจนักเทียบท่า ให้ส่งออกเป็นดีที่สุดเพราะการสำรอง `/var/lib/docker` จะใช้พื้นที่มากกว่าอิมเมจจริงหลายเท่า เนื่องจากระบบขจัดความซ้ำซ้อนอาจไม่ถูกเก็บไว้
mm flag
ขอบคุณสำหรับการแก้ปัญหา !

โพสต์คำตอบ

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