วิธีการคืนค่าระบบหลังจากลบเมล็ดทั้งหมดโดยไม่ตั้งใจ


69

ฉันพยายามลบเมล็ดเก่า แต่ฉันต้องลบเมล็ดทั้งหมดในแล็ปท็อป Ubuntu 11.04 ของฉัน มีวิธีใดในการแก้ไขปัญหานี้ผ่านการบู๊ต USB หรือติดตั้งฮาร์ดไดรฟ์ในระบบอื่นหรือไม่?


คำตอบ:


93

บูตเครื่องเข้าสู่ซีดีสด (หรือ USB สด) ติดตั้งระบบบางส่วนติดเข้าไปในนั้นและติดตั้งเคอร์เนล หลังจากการติดตั้งเคอร์เนลสำเร็จให้ถอนการติดตั้งระบบไฟล์

  1. เปิด Terminal
  2. เมานต์พาร์ติชัน Ubuntu: sudo mount /dev/sdXY /mnt
  3. เมานต์พาร์ติชันพิเศษบางส่วน:

    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  4. (ไม่บังคับ) เมื่อคุณเชื่อมต่อกับเครือข่ายให้ใช้เซิร์ฟเวอร์ DNS จากสภาพแวดล้อมสดของคุณ (มิฉะนั้นชื่อโฮสต์อาจไม่สามารถแก้ไขได้):

    cp /etc/resolv.conf /mnt/etc/resolv.conf
    
  5. Chroot ลงใน/mnt:sudo chroot /mnt
  6. ติดตั้งเคอร์เนล Linux: apt-get install linux-image-generic(ไม่จำเป็นต้องใช้ sudo เนื่องจากคุณเป็น root หลังจาก chroot)
  7. หลังจากการติดตั้งเคอร์เนลสำเร็จให้ออก chroot และ unmount ระบบไฟล์บางส่วน:

    exit
    sudo umount /mnt/sys
    sudo umount /mnt/proc
    sudo umount /mnt/dev
    sudo umount /mnt
    
  8. รีบูตและลบซีดีหรือ USB: sudo reboot

มันเป็นสิ่งที่ฉันอยากจะแนะนำ ฉันไม่เห็นว่าทำไมมันไม่ทำงาน
Oli

โอเคขอบคุณสำหรับการยืนยัน ฉันได้เพิ่มขั้นตอนการสรุปเช่นกันโดย/mntไม่ต้องต่อเชื่อม อูบุนตูมักจะดูแล unmounting / sync filesystems แต่มันดูดีกว่าสำหรับฉัน
Lekensteyn

1
@MaheshKatta คุณจะต้องติดตั้ง RAID ก่อน ดังนั้นแทนที่จะเป็นขั้นตอนที่สอง (ที่คุณติดตั้งไดรฟ์เดียว) คุณจะทำการแมป/dev/mdxxxไดรฟ์โดยสมมติว่าเป็น mdadm
Oli

4
@James Edit /etc/resolv.conf(ลบออกหากเป็น symlink) และใส่สิ่งที่ต้องการnameserver 8.8.8.8(เซิร์ฟเวอร์ DNS สาธารณะของ Google) แทนที่หากจำเป็น
Lekensteyn

3
nvm ดูเหมือนว่าฉันจะต้องแก้ไขไฟล์ด้วยตัวเอง บางทีคุณควรเพิ่มคำตอบcp /etc/resolv.conf /mnt/etc/resolv.confก่อนที่จะเข้าไปใน chroot ที่ทำงานสำหรับฉันต่อไป
Peter Raeves

56

โพรซีเดอร์ที่ถูกขยายนี้ใช้สำหรับปัญหาส่วนใหญ่ที่อาจเกิดขึ้นรวมถึงปัญหาการเชื่อมต่ออินเทอร์เน็ตในchrootไม่ทราบว่าจะติดตั้งแพ็กเกจเคอร์เนลใด (ก่อน Ubuntu 12.10 จะไม่เสมอไปlinux-image-generic) ไม่ทราบว่ามีพาร์ทิชันหรือแม้แต่ ฟิสิคัลไดรฟ์ใดที่มี/ระบบไฟล์และมี/bootพาร์ติชันแยกต่างหาก

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

คุณลบแพ็กเกจเคอร์เนลทั้งหมดและ Ubuntu ไม่สามารถบู๊ตได้หากไม่มีเคอร์เนลติดตั้ง ดังนั้นทางออกคือการบูตจาก CD / DVD / USB สดchrootเข้าสู่ระบบที่ติดตั้งและติดตั้งเคอร์เนลในนั้น

  1. บูตจาก Ubuntu สด CD / DVD หรือ USB แฟลชไดรฟ์สด

  2. เลือกลอง Ubuntu (ไม่ติดตั้ง Ubuntu )

  3. เมื่อเดสก์ท็อปปรากฏขึ้นตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอินเทอร์เน็ต หากคุณไม่ได้เชื่อมต่ออินเทอร์เน็ต วิธีหนึ่งในการดูว่าคุณเชื่อมต่อกับอินเทอร์เน็ตหรือไม่คือการเปิดเว็บเบราว์เซอร์ คุณสามารถทำตามคำแนะนำที่เหลือโดยนำคำตอบถาม Ubuntu นี้ไปใช้ในเว็บเบราว์เซอร์ของคุณในระบบ CD / DVD / USB สด ฉันขอแนะนำให้ทำอย่างนั้น

  4. เปิดหน้าต่างที่ขั้วCtrl+ +AltT

  5. ในหน้าต่าง Terminal ให้รันคำสั่งนี้เพื่อแสดงรายการพาร์ติชันของคุณ:

     sudo parted -l
    

    คุณจะเห็นสิ่งนี้ (แต่จะไม่เป็นอย่างนี้):

    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sda: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    
    Number  Start   End     Size    Type      File system     Flags
     1      1049kB  20.4GB  20.4GB  primary   ext4            boot
     2      20.4GB  21.5GB  1072MB  extended
     5      20.4GB  21.5GB  1072MB  logical   linux-swap(v1)
    
    
    Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0
    has been opened read-only.
    Error: Can't have a partition outside the disk!
    
  6. ตรวจสอบผลลัพธ์ที่คุณได้รับเพื่อกำหนดชื่ออุปกรณ์ของพาร์ติชันที่มี/ระบบไฟล์ของระบบ Ubuntu ที่ติดตั้งบนฮาร์ดไดรฟ์ (ที่คุณกำลังซ่อม)

    • ถ้าคุณมีext4พาร์ติชั่นเดียวนั่นคือพาร์ติชั่นเดียว

    • หากคุณมีext4พาร์ติชันมากกว่าหนึ่งอาจเป็นพาร์ติชันแรก อย่างไรก็ตามถ้าอันแรกมีขนาดเล็กมาก - น้อยกว่ากิกะไบต์ - นั่นอาจเป็น/bootพาร์ติชันแยกต่างหาก(จำไว้ด้วย)

      โปรดทราบว่าbootรายการที่อยู่ภายใต้Flagsมีน้อยมากที่จะทำหรือไม่พาร์ติชันเป็น/bootพาร์ติชันแยกต่างหาก ระบบของฉันซึ่งข้อมูลดังกล่าวข้างต้นไม่ได้มีการแยก/bootพาร์ทิชัน

    • ชื่ออุปกรณ์สำหรับพาร์ติชันเริ่มต้นด้วยชื่ออุปกรณ์สำหรับฟิสิคัลไดรฟ์ที่ระบุโดยทันทีหลังจากDiskในบรรทัดที่สอง จากนั้นเพิ่มหมายเลขพาร์ติชั่นที่ส่วนท้าย ดังนั้นชื่ออุปกรณ์สำหรับพาร์ทิชันที่มีของฉัน ระบบแฟ้มเป็น/ /dev/sda1นี่คือสองบรรทัดที่ฉันพบข้อมูล:

      Disk /dev/sda: 21.5GB
       1      1049kB  20.4GB  20.4GB  primary   ext4            boot
    • หากคุณมีไดรฟ์ทางกายภาพมากกว่าหนึ่งรายการคุณจะได้รับรายชื่อมากกว่าหนึ่งรายการตามที่แสดงด้านบน แต่ถ้าคุณไม่ได้ติดตั้งระบบเหมือน Unix อื่นคุณอาจจะมีเพียงหนึ่งไดรฟ์ที่มีext4พาร์ทิชันอย่างน้อยโดยไม่ต้องสร้างพวกเขาโดยเจตนาในไดรฟ์อื่น หากคุณมีไดรฟ์หลายกับext4พาร์ทิชันแล้วext4พาร์ทิชันที่มีของคุณ/ระบบแฟ้มน่าจะเป็นบนไดรฟ์ที่ยังมีlinux-swapพาร์ทิชัน

    • มันเป็นไปได้ว่าระบบอูบุนตูของระบบแฟ้มอยู่ในพาร์ทิชันประเภทอื่นที่ไม่ใช่/ ext4เมื่อสิ่งนี้เกิดขึ้นมันเกือบจะตลอดเวลาext3และมักจะอยู่ในระบบที่ค่อนข้างเก่า เป็นเรื่องแปลกมากที่เรื่องนี้จะเกิดขึ้นเว้นแต่คุณตั้งใจตั้งสิ่งต่าง ๆ ด้วยตัวเอง

    จำชื่ออุปกรณ์ของพาร์ติชันที่มี/ระบบไฟล์ของคุณ(หรือจดไว้) หากแตกต่างจาก/dev/sda1คุณจะแทนที่/dev/sda1ในขั้นตอนด้านล่าง

    (หากดูเหมือนว่าคุณมี/bootพาร์ติชันแยกต่างหากให้จำชื่ออุปกรณ์นั้นด้วย)

  7. เมาท์/ระบบไฟล์เพื่อ/mntและเมานต์/devระบบไฟล์:

    sudo mount /dev/sda1 /mnt
    sudo mount --bind /dev /mnt/dev
  8. ตรวจสอบว่าระบบอูบุนตูที่ใช้งานไม่ได้ที่คุณกำลังซ่อมแซมมี/bootพาร์ติชั่นแยกต่างหากซึ่งต้องติดตั้งแยกต่างหาก (หากคุณไม่แน่ใจคุณสามารถข้ามไปได้)

    วิธีตรวจสอบรัน:

    ls /mnt/boot
    

    หากมีเอาต์พุต (เหมือนgrub memtest86+.bin memtest86+_multiboot.binแต่ไม่จำเป็นต้องเป็นอย่างนั้น) แสดงว่าระบบที่เสียหาย/bootนั้นอยู่ในพาร์ติชันเดียวกันกับมัน/และคุณไม่จำเป็นต้องติดตั้งอะไรเพื่อเข้าถึง

    แต่ถ้าไม่มีเอาต์พุตคุณจะต้องติดตั้ง/bootระบบไฟล์:

    sudo mount BOOT-PARTITION /mnt/boot

    แทนที่BOOT-PARTITIONด้วยชื่ออุปกรณ์ของ/bootพาร์ติชัน (ดูขั้นตอน 6 ด้านบน)

  9. chroot เข้าสู่ระบบที่เสียหายติดตั้งระบบไฟล์เสมือนที่สำคัญที่เหลืออยู่และตั้งค่าตัวแปรสภาพแวดล้อมที่สำคัญบางอย่าง:

    sudo chroot /mnt
    mount -t proc none /proc
    mount -t sysfs none /sys
    mount -t devpts none /dev/pts
    export HOME=/root
    export LC_ALL=C
    
  10. ตรวจสอบว่าการเข้าถึงอินเทอร์เน็ตทำงานจากภายในchrootโดยใช้pingโฮสต์ที่เชื่อถือได้บางอย่างซึ่งทราบว่าตอบสนองต่อการปิงปกติหรือไม่:

    ping -c 5 www.google.com
    

    คุณควรเห็นสิ่งนี้:

    PING www.l.google.com (74.125.131.147) 56(84) bytes of data.
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms
    64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms
    
    --- www.l.google.com ping statistics ---
    5 packets transmitted, 5 received, 0% packet loss, time 4006ms
    rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
    
    • หากดูเหมือนว่าส่วนใหญ่แล้วจำนวนก่อน% packet lossน้อยกว่า 100 แสดงว่าการเชื่อมต่ออินเทอร์เน็ตในที่chrootทำงาน:

      5 packets transmitted, 5 received, 0% packet loss, time 4006ms

      ก็ทำงานเพื่อให้คุณสามารถข้ามขั้นตอนที่ 11

    • หากเป็นเช่นนั้นส่วนใหญ่แล้วจำนวนก่อนหน้า% packet lossนั้นคือ 100 การเชื่อมต่อจำเป็นต้องมีการแก้ไขปัญหา ตรวจสอบให้แน่ใจว่าการเชื่อมต่อบนระบบซีดีสด (ตัวอย่างเช่นผ่านทางเว็บเบราว์เซอร์หรือโดยการเรียกใช้คำสั่งเดียวกันในchrootแท็บ / หน้าต่างเทอร์มินัลที่แยกต่างหากและไม่ใช่) ตรวจสอบให้แน่ใจว่าคุณพิมพ์คำสั่งถูกต้อง ใช้www.google.comถ้าคุณยังไม่เคย

    • ถ้าผลการดูไม่เหมือนข้างบนเลย แต่แทนที่จะพูดว่าแล้วเครือข่ายไม่ทำงานเลยในping: unknown host www.google.comchroot

  11. chrootตั้งค่าระบบเครือข่ายใน ข้ามขั้นตอนนี้เว้นแต่ว่าคุณมีunknown hostข้อผิดพลาดในขั้นตอนที่ 10 ด้านบน

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

    เปิดแท็บ Terminal ใหม่ ( Ctrl+ Shift+ T) หรือหากคุณต้องการหน้าต่าง Terminal ใหม่ ( Ctrl+ Shift+ Nหรือเพียงแค่Ctrl+ Alt+ T) เรียกใช้คำสั่งเหล่านี้:

    sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
    sudo cp /etc/hosts /mnt/etc/hosts
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
    exit
    

    ( exitคำสั่งในตอนท้ายปิดแท็บ / หน้าต่างใหม่)

    ทำซ้ำขั้นตอนที่ 10 chrootข้างต้นที่จะทำให้อินเทอร์เน็ตแน่ใจว่าการทำงานในขณะนี้จากภายใน มันควรจะ.

  12. คิดออกว่าควรจะติดตั้งแพ็กเกจเคอร์เนลใด linux-image-genericปกตินี้จะ แต่ไม่เสมอไป.

    หากคุณไม่แน่ใจว่าจะติดตั้งตัวใดมันจะขึ้นอยู่กับ Ubuntu ที่คุณได้ติดตั้งไว้แล้วส่วนหนึ่งและข้อมูลอื่น ๆ หากคุณไม่แน่ใจว่า Ubuntu รุ่นใดที่คุณติดตั้งให้ค้นหาโดยใช้คำสั่งนี้ (ในchroot, ไม่ใช่ในหน้าต่าง / แท็บ Terminal แยกต่างหาก):

    lsb_release -r
    
    • บน Ubuntu 12.10 (ปล่อย Ubuntu ต่อไปในปัจจุบันการพัฒนา) ก็มักlinux-image-genericจะเป็น (ดูที่นี้ , นี้และนี้ .)

    • บน Ubuntu 12.04 LTS เป็นไปได้น่าจะเป็นและlinux-image-generic linux-image-generic-pae(ต่างจากเวอร์ชั่นก่อนหน้านี้ 12.04 ไม่มีเซิร์ฟเวอร์และเคอร์เนลเดสก์ทอปแยกต่างหาก)

      • หากติดตั้งระบบอูบุนตู (ที่คุณได้รับการแก้ไข) เป็นรุ่น 64 linux-image-genericบิตใช้ ( linux-image-generic-paeใช้กับระบบ 32 บิตเท่านั้น)

        เป็นไปได้ที่จะติดตั้งระบบ Ubuntu แบบ 32 บิตบนคอมพิวเตอร์ 32 บิตหรือ 64 บิต นอกจากนี้คุณอาจใช้ซีดีสดแบบ 32 บิตหรือ 64 บิตเพื่อแก้ไขระบบที่ติดตั้ง 32 บิต ดังนั้นหากคุณไม่ทราบว่าระบบ Ubuntu ที่ติดตั้งไว้เป็น 32 บิตหรือ 64 บิตให้ตรวจสอบโดยใช้คำสั่งนี้ (ในchroot, ไม่ใช่ในหน้าต่าง / แท็บ Terminal แยกต่างหาก):

        dpkg-architecture -qDEB_HOST_ARCH_BITS
        

        ผลลัพธ์จะเป็นอย่างใดอย่างหนึ่งหรือ3264

        (โปรดทราบว่าuname -mเป็นไม่ได้เป็นวิธีที่ถูกต้องในการค้นหาข้อมูลนี้เพราะแม้ในขณะที่ทำงานในchrootที่จะบอกคุณสถาปัตยกรรมของเคอร์เนลทำงานซึ่งเป็นเคอร์เนลระบบซีดีสดและไม่ได้ติดตั้ง (หัก) เคอร์เนลของระบบ.)

      • หากระบบ Ubuntu ที่ติดตั้ง (ที่คุณกำลังแก้ไข) เป็นรุ่น 32 บิตเคอร์เนลที่ดีที่สุดที่จะใช้จะขึ้นอยู่กับว่าคุณมี RAM เท่าใด ฉันแนะนำ:

        • linux-image-generic ถ้าคุณมี RAM น้อยกว่า 3 GB
        • linux-image-generic-pae ถ้าคุณมี RAM 3 GB ขึ้นไป

        (นี่คือวิธีการติดตั้งของ Ubuntu เลือกที่หนึ่งที่จะตั้งขึ้นมานับตั้งแต่การติดตั้งที่ได้รับความสามารถในการติดตั้งเมล็ด PAE. ดูความละเอียดในการข้อผิดพลาดนี้ . ถ้าคุณต้องการที่จะเรียนรู้สิ่ง PAE คือดูบทความวิกิพีเดียนี้ . หากคุณต้องการ เรียนรู้เกี่ยวกับ PAE ใน Ubuntu ดูหน้า wiki ของ Ubuntu นี้ )

        หากคุณไม่ทราบว่าคุณมี RAM เท่าใดให้รันคำสั่งนี้เพื่อค้นหา:

        grep MemTotal /proc/meminfo
        

        ที่ระบุไว้ในกิโลไบต์ หากต้องการแปลงเป็นกิกะไบต์ให้หารด้วย 1,048,576 (1024 2 )

        • 3 gigs = 3,145,728 kB
    • บน Ubuntu เผยแพร่ก่อน 12.04 เป็นไปได้น่าจะเป็นlinux-image-generic, และlinux-image-generic-paelinux-image-server

      • หากคุณกำลังใช้ระบบเซิร์ฟเวอร์ Ubuntu linux-image-serverใช้
      • มิฉะนั้นทำตามคำแนะนำข้างต้นสำหรับระบบ 12.04
  13. นี่คือช่วงเวลาที่คุณรอคอย! ติดตั้งเคอร์เนลในระบบที่เสียหาย

    (เหมือนเมื่อก่อนยกเว้นที่ระบุไว้อย่างชัดเจนคำสั่งเหล่านี้จะทำงานในchrootไม่ใช่ในหน้าต่าง / แท็บแยกต่างหากของเทอร์มินัล)

    apt-get update
    apt-get -y install linux-image-generic

    แทนที่linux-image-genericด้วยแพ็กเกจเคอร์เนลอื่น ๆ ที่คุณตัดสินใจติดตั้งในขั้นตอนที่ 12 ข้างต้นหากแตกต่างกัน

  14. หากคุณต้องทำตามขั้นตอนที่ 11 เพื่อตั้งค่าเครือข่ายในให้chrootเรียกคืนhostsไฟล์เก่า หากคุณข้ามขั้นตอนที่ 11 ให้ข้ามขั้นตอนนี้ด้วย

    ในการกู้คืนให้รันคำสั่งนี้:

    cp /etc/hosts.old /etc/hosts
    
  15. exitถอนติดตั้งระบบไฟล์ออกจากระบบchroot:

    umount /proc || umount -lf /proc
    umount /sys /dev/pts
    exit
    sudo umount /mnt/dev /mnt
    
  16. ปิดระบบสด CD / DVD / USB ลบซีดี / ดีวีดีสดหรือแฟลชไดรฟ์ USB บูตระบบที่ติดตั้งบนฮาร์ดไดรฟ์ซึ่งคุณเพิ่งซ่อมแซม คุณได้ติดตั้งเคอร์เนลแพ็กเกจไว้แล้ว (และเป็นส่วนหนึ่งของการติดตั้งเคอร์เนลที่ให้ไว้จะถูกเพิ่มกลับไปที่เมนูบูต GRUB2) หากทุกอย่างทำงานอย่างถูกต้องระบบของคุณควรบูตโดยไม่มีปัญหา (ฉันคิดว่าเป็นไปได้ว่าจะใช้เวลาบูตนานกว่าปกติเล็กน้อยในเวลานี้)

การปฏิเสธความรับผิด: ฉันไม่ได้ทดสอบขั้นตอนข้างต้นในทุกระบบ Ubuntu ที่เป็นไปได้ดังนั้นจึงเป็นไปได้ว่ามีข้อผิดพลาดที่ฉันยังไม่ได้ระบุ

ในอนาคตฉันขอแนะนำให้พยายามติดตั้งสองเมล็ดเสมอ เป็นการดีที่จะมีสองกรณีในกรณีที่หนึ่งในนั้นหยุดทำงานไม่ว่าด้วยเหตุผลใด (คุณสามารถเลือกอันอื่นในเมนูการบูต GRUB2) นอกจากนี้หากคุณตั้งใจจะเก็บเมล็ดไว้สองเมล็ดและคุณถอนการติดตั้งโดยไม่ตั้งใจมากกว่าที่คุณต้องการและรีบูตคุณก็ยังเหลืออีกหนึ่งอันที่จะบูตจาก


1
นี่อาจเป็นคำอธิบายที่เป็นลายลักษณ์อักษรที่ดีที่สุดเกี่ยวกับวิธีการทำสิ่งที่ซับซ้อนใน Linux ที่ฉันเคยอ่าน ขอบคุณ
ZincX

ว้าวนี่มันมีประโยชน์มากจริงๆ! ขอบคุณมาก!
RafałCieślak

2
ขอบคุณมาก Eliah - หลังจากลบภาพลินุกซ์ทั้งหมดของฉันอย่างงี่เง่าคุณบันทึกเบคอนของฉันแล้ว อาการสะอึกเดียวที่ฉันมีอยู่ในขั้นตอน: sudo cp /etc/resolv.conf /mnt/etc/resolv.conf ฉันได้รับ "cp: ไม่เขียนผ่าน symlink dangling" / mnt/etc/resolv.conf ข้อผิดพลาด " ฉันพบกระทู้นี้และทำตามคำแนะนำโดยผู้โพสต์หนึ่งคนไปที่: "rm /mnt/etc/resolv.conf" ก่อน "cp /etc/resolv.conf /mnt/etc/resolv.conf" เพื่อแก้ปัญหา symlink ที่ห้อยอยู่

@ xcal400 /etc/resolv.confได้รับการจัดการในปัจจุบันโดยresolvconfมันจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อใช้ NetworkManager และสามารถลบได้อย่างปลอดภัยโดยใช้rm /etc/resolv.confตามที่คุณค้นพบ
Lekensteyn

3
อันนี้ควรเป็นคำตอบที่ได้รับการยอมรับ ขอบคุณ!
Jean-Michel Garcia

0

เมื่อฉันลบเคอร์เนลฉันพบโซลูชันนี้ในฟอรัม Ubuntu ฉันติดตามทุกขั้นตอนและระบบได้รับการกู้คืน หวังว่ามันจะช่วยคุณ

chroot อาจทำงานได้ chroot หมายความว่าเมื่อคุณเริ่มระบบคุณเปลี่ยนระบบไฟล์รูท ตัวอย่างเช่นคุณเริ่มจากไลฟ์ซีดี แต่คุณเปลี่ยนรูท "/" เป็นที่ติดตั้งอูบุนตูของคุณ

ให้บอกว่า Ubuntu ของคุณได้รับการติดตั้งบน / dev / sda2 แล้วคุณสามารถลองใช้คำสั่งต่อไปนี้:

รหัส:

sudo mount /dev/sda2 /mnt
sudo cp /etc/resolv.conf /mnt/etc/
sudo cp /etc/hosts /mnt/etc/
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

ตอนนี้คุณรูท "/" เปิด / dev / sda2 แล้วลองติดตั้งเคอร์เนล

apt-get update
apt-get install linux-image-2.6.32-26-generic
update-initramfs -cv -k all
update-grub

ฉันต้องคาดเดาเล็กน้อยที่นี่เพราะฉันไม่เคยทำแบบนี้มาก่อน แต่มันควรจะเกี่ยวกับเรื่องนี้ ไม่ทราบว่าคุณได้รับคำเตือนเกี่ยวกับข้อผิดพลาด fstab หรือไม่ (เช่นไม่พบรูท)

ตอนนี้คุณต้องล้างบางสิ่งและยกเลิกการต่อเชื่อมพาร์ติชั่น: รหัส:

rm /etc/resolv.conf
rm /etc/hosts
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl
umount /proc # if this doesn't work try umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount /mnt

และคุณสามารถรีบูตเพื่อดูว่ามันใช้งานได้หรือไม่

URL สำหรับชุดข้อความ: http://art.ubuntuforums.org/showthread.php?t=1688928


ทำไมคุณจะเข้ามาแทนที่/etc/hostsและลบ/sbin/initctl? มันมีเหตุผล
Lekensteyn

นี้ดูเหมือนว่าท้ายที่สุดบนพื้นฐานLiveCDCustomization ; บางขั้นตอนไม่จำเป็นสำหรับการซ่อมแซมระบบที่ติดตั้งแล้ว โดยเฉพาะอย่างยิ่งไม่จำเป็นต้องทำอะไรกับ/sbin/initctlหรือหรือdbus-uuidgen dpkg-divertคุณอาจต้องเปลี่ยน/etc/hostsเพื่อเชื่อมต่อกับอินเทอร์เน็ต แต่ไม่ปกติและถ้าคุณทำคุณควรนำต้นฉบับกลับมา บนระบบที่ติดตั้ง (แทนที่จะเป็นซีดีสดที่บู๊ตแล้วเปิดระบบไฟล์สควอช) คุณไม่จำเป็นต้องเรียกใช้update-initramfsหรือแม้แต่update-grubหลังจากติดตั้งเคอร์เนล
Eliah Kagan

นอกจากนี้เนื่องจากขั้นตอนนี้ไม่ได้ติดตั้ง metapackage เคอร์เนลเคอร์เนลอาจไม่ได้รับการปรับปรุงอย่างเหมาะสมในภายหลังเว้นแต่ว่ามีการติดตั้ง metapackage นอกจากนี้linux-image-2.6.32-26-genericจะไม่เป็นเคอร์เนลที่เหมาะสมสำหรับคนส่วนใหญ่ที่จะติดตั้ง
Eliah Kagan

0

หลังจากฉันลบเมล็ดเก่าออกจาก Trusty14.04 เมื่อวานนี้ (FTR: ฉันไม่ได้ลบสองรายการล่าสุด!) ระบบของฉันจะไม่บูตอีกต่อไป ด้วงแสดงให้เห็นว่า

Error: File not found
Error: You need to load the kernel first

ไม่รู้ว่าทำไม

ฉันทำตามคำแนะนำที่ยอดเยี่ยมของ Eliah Kagan ในการติดตั้งlinux-image-genericจากซีดีสด มันติดตั้งเคอร์เนลใหม่ 150 MB แต่น่าเศร้าที่ไม่ได้แก้ปัญหา

โชคดีที่ฉันพบหน้านี้ Boot-Repairเครื่องมือได้อย่างถูกต้องระบบของฉันจะทำงานอีกครั้ง


0

ฉันแค่อยากจะเพิ่มประสบการณ์ที่ผ่านมาในวันนี้เพื่ออัพเกรดเป็นวิลลี่ ฉันทำความสะอาดแล้วฉันพบว่าตัวเองมี memtest เท่านั้น google ทำให้ฉันเข้าใจว่าฉันได้ลบเมล็ดออก ข้อ จำกัด อย่างหนึ่งที่ฉันมีคือเครือข่ายที่ช้าดังนั้นการดาวน์โหลด ISO แบบเต็มจึงไม่ใช่ตัวเลือก ดังนั้นฉันจึงใช้Ubuntu Minimal CD (40MB เท่านั้น) และบูตจากมัน หลังจากตรวจสอบตัวเลือกฮาร์ดแวร์ (ซึ่งช่วยให้ฉันเชื่อมต่อกับไร้สาย) ฉันไปที่ตัวเลือกเชลล์ ฉันทำตามคำแนะนำ @Lekensteyn แล้วฉันก็ทำสำเร็จ บางสิ่งบางอย่าง: คุณต้องคัดลอกresolv.confก่อนที่จะ chroot มิฉะนั้น DNS ของคุณจะถูกเมาและเนื่องจากผู้ใช้ที่เข้าสู่ระบบมีรากไม่จำเป็นต้อง sudo ที่ใดก็ได้

ฉันรู้ว่ามันเก่า แต่ฉันคิดว่าการเพิ่มคำตอบนี้จะเพิ่มคุณค่าให้กับผู้ที่จะพบปัญหา

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