ฉันจะลบเคอร์เนลที่คอมไพล์แล้วได้อย่างไร


21

ฉันติดตั้ง 14.10 บนแล็ปท็อป Lenovo E455 ของฉัน

และรวบรวมเคอร์เนล 3.19 ตามลำดับต่อไปนี้

เนื่องจากดูเหมือนว่า 14.10 ไม่ต้องการทำงานกับฉัน (ฉันเห็นการเคลื่อนไหวช้า)

ดาวน์โหลดเคอร์เนลปัจจุบันจากhttp://www.kernel.org/

make oldconfig
make
sudo make install

ในที่สุดไม่สามารถบูตด้วยเคอร์เนลใหม่

ฉันจะลบเคอร์เนลที่คอมไพล์ออกจากด้วงและกู้คืนได้อย่างไร?


คุณพยายามลบอะไรไปแล้วและมันผิดพลาดที่ไหน? มีคำเตือนหรือข้อความแสดงข้อผิดพลาดที่ไหน?
David Foerster

ขอบคุณสำหรับความช่วยเหลือของคุณ ได้รับการกู้คืนและรอ Ubuntu 15.XX
Ohmygirl

คำตอบ:


33

วิธีง่าย ๆ :

หากรวบรวมโดยวิธี debian คุณสามารถดูเคอร์เนลที่ติดตั้งด้วยต่อไปนี้:

dpkg --list | grep kernel-image

จากนั้นถอนการติดตั้งแพ็กเกจเคอร์เนลที่ต้องการด้วยapt-get:

sudo apt-get remove kernel-image-your-kernel-image

วิธีการที่ยาก:

หากรวบรวมและติดตั้งผ่านmake installคุณจะต้องลบรายการต่อไปนี้ด้วยตนเอง:

/boot/vmlinuz*KERNEL-VERSION*
/boot/initrd*KERNEL-VERSION*
/boot/System-map*KERNEL-VERSION*
/boot/config-*KERNEL-VERSION*
/lib/modules/*KERNEL-VERSION*/
/var/lib/initramfs/*KERNEL-VERSION*/

จากนั้นอัพเดตการกำหนดค่าด้วง:

sudo update-grub2

1
ฉันไม่มีไดเร็กทอรี / var / lib / initramfs / แต่เป็นเพราะฉันไม่ได้รวบรวมเมล็ดในระบบของฉัน
jarno

1
/var/lib/initramfs-tools/*KERNEL-VERSION*ใน Debian
Csaba Toth

1
พิจารณาการแก้ไขสำหรับเมล็ดใหม่ (ปี 2018) ที่มี: /boot/abi*KERNEL-VERSION*และ/boot/retpoline*KERNEL-VERSION*
WinEunuuchs2Unix

9

ขอบคุณคำถามของ jarno ที่นี่ฉันหาวิธีใช้คำตอบของ Mudit Kapil ที่ต้องการการพิมพ์เพียงเล็กน้อยและจับบิตพิเศษใด ๆ ที่อยู่รอบ ๆ

เนื่องจากสิ่งที่จำเป็นในการลบเคอร์เนลคือการลบไฟล์และไดเรกทอรีทั้งหมดและไฟล์และไดเรกทอรีเหล่านั้นจะมีสตริงการเปิดตัวเคอร์เนลในเส้นทางของพวกเขาเราสามารถใช้locateเพื่อค้นหาไฟล์ทั้งหมดที่มีสตริงการเปิดตัวเคอร์เนลและลบ เพื่อลบเคอร์เนล

(ตรวจสอบครั้งแรกuname -rเพื่อค้นหาชื่อของเคอร์เนลที่ใช้งานอยู่ในปัจจุบันและอย่าลบมัน)

4.4.6-my-kernelสมมติว่าคุณต้องการที่จะลบเคอร์เนลที่เรียกว่า คุณสามารถค้นหาไฟล์ที่มีอยู่ทั้งหมดและไดเรกทอรี (ไม่มีรายชื่อไฟล์ในไดเรกทอรีทั้งหมดชื่อ) locate -b -e 4.4.6-my-kernelด้วย ผนวกrm -rเข้ากับสิ่งนี้พร้อมxargsให้คุณลบไฟล์ด้วย ฉันเพิ่ม-pเพื่อให้xargsเป้าหมายการแสดงผลและขอการยืนยันก่อนดำเนินการ

locate -b -e 4.4.6-my-kernel | xargs -p sudo rm -r

จากนั้นพิมพ์yเพื่อดำเนินการrm -rตามเป้าหมายที่แสดง มันจะบ่นว่าไฟล์ที่ไม่ใช่ไดเรกทอรีไม่มีอยู่เพราะคุณพยายามที่จะลบมันซ้ำ ( -r) แต่ก็โอเคพวกเขาจะยังคงถูกลบพร้อมกับไดเรกทอรีและเนื้อหาของพวกเขา เมื่อเสร็จแล้วก็วิ่ง

sudo update-grub

และ voila


+1 เพราะสิ่งนี้จะดึงดูดไฟล์มากกว่าคำตอบที่ยอมรับ ยกตัวอย่างเช่นทุกdkmsสิ่ง ฉันจะเรียกใช้ก่อนโดยไม่มีrmตัวเลือกเพียงเพื่อดูทุกสิ่งที่จะถูกลบ
WinEunuuchs2Unix

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

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