답변:
라이브 CD (또는 라이브 USB)로 부팅하고, 일부 시스템을 마운트하고, chroot로 커널을 설치하십시오. 커널을 성공적으로 설치 한 후 파일 시스템을 마운트 해제하십시오.
sudo mount /dev/sdXY /mnt
특별한 파티션을 마운트하십시오 :
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
(선택 사항) 네트워크에 연결되어 있으면 라이브 환경에서 DNS 서버를 사용하십시오 (그렇지 않으면 호스트 이름을 확인할 수 없음).
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(chroot 이후에 루트이므로 sudo가 필요하지 않습니다).커널을 성공적으로 설치 한 후 chroot를 꺼내고 일부 파일 시스템을 마운트 해제하십시오.
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
. 우분투는 일반적으로 파일 시스템 마운트 해제 / 동기화를 처리하지만 이것은 나에게 더 깨끗해 보입니다.
/dev/mdxxx
mdadm이라고 가정하면 드라이브를 매핑하게 됩니다.
/etc/resolv.conf
(심볼릭 링크 인 경우 제거) 및 이와 유사한 것을 입력 nameserver 8.8.8.8
합니다 (Google 공개 DNS 서버). 필요한 경우 교체하십시오.
cp /etc/resolv.conf /mnt/etc/resolv.conf
chroot로 들어가기 전에 답변에 추가해야 할 수도 있습니다 . 그것은 어쨌든 나를 위해 일했다
이 확장 절차는 에서 인터넷 연결에 문제가 포함 발생할 수있는 합병증의 대부분을 차지하고 chroot
, 설치 (우분투 12.10 전에, 그것은하지 않습니다 어떤 커널 패키지 모르고 항상 일 linux-image-generic
처음 파티션 또는 심지어 모르고) /
파일 시스템을 포함하고 별도의 /boot
파티션이 있는 실제 드라이브
나는 여기의 다른 절차를 참조하여 이것을 작성하지는 않았지만 약간의 유사점을 알 수 있습니다. 나는 여기의 절차를 느슨하게 기초로했습니다 (그 지시는 상당히 다른 것에 대한 것이지만, 나는 광범위하게 조정했으며, 명령이 아닌 일부 명령 만 복사되었습니다).
모든 커널 패키지를 제거했으며 커널을 설치하지 않으면 Ubuntu를 부팅 할 수 없습니다. 따라서 해결책은 라이브 CD / DVD / USB chroot
에서 설치된 시스템 으로 부팅 하고 커널을 설치하는 것입니다.
Ubuntu 라이브 CD / DVD 또는 라이브 USB 플래시 드라이브에서 부팅하십시오.
우분투 설치 (우분투 설치 아님)를 선택 하십시오 .
데스크탑이 나타나면 인터넷에 연결되어 있는지 확인하십시오. 그렇지 않은 경우 인터넷에 연결하십시오. 인터넷에 연결되어 있는지 확인하는 한 가지 방법은 웹 브라우저를 여는 것입니다. 라이브 CD / DVD / USB 시스템의 웹 브라우저에서이 Ask Ubuntu 응답을 표시하여 나머지 지침을 따를 수도 있습니다. 그렇게하는 것이 좋습니다.
Ctrl+ Alt+ 로 터미널 창을 엽니 다 T.
터미널 창에서이 명령을 실행하여 파티션을 나열하십시오.
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!
하드 드라이브에 설치되어있는 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
실제 드라이브가 두 개 이상인 경우 위에 표시된 것과 같은 목록이 두 개 이상 표시됩니다. 그러나 다른 유닉스 계열 시스템이 설치되어 있지 않으면 ext4
적어도 다른 드라이브에서 의도적으로 파티션을 만들지 않고 파티션 이 포함 된 드라이브가 하나만있을 것입니다 . 당신은 여러 드라이브이있는 경우 ext4
파티션을, 다음, ext4
당신이 들어 파티션의 /
파일 시스템은 드라이브에 아마 또한 포함 linux-swap
파티션을.
그것은이다 가능한 우분투 시스템의 것을 /
파일 시스템이 아닌 다른 유형의 파티션에 ext4
. 이런 일이 발생하면 ext3
거의 항상 오래된 시스템 일 것입니다. 의도적으로 이러한 방식으로 설정하지 않는 한,이 경우가 매우 드 un니다.
/
파일 시스템 이 포함 된 파티션의 장치 이름을 기억하십시오 (또는 적어 두십시오). 와 (과) 다른 경우 아래 단계에서 /dev/sda1
대체 /dev/sda1
합니다.
별도의 /boot
파티션 이있는 것처럼 보이면 해당 장치 이름도 기억하십시오.
산 /
에 파일 시스템을 /mnt
, 그 마운트 /dev
파일 시스템 :
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
복구중인 Ubuntu 시스템이 손상되어 별도의 /boot
파티션 이 있는지 확인하십시오 . (당신이 있다면 반드시 그것을, 당신은이를 건너 뛸 수 없습니다.)
확인하려면 다음을 실행하십시오.
ls /mnt/boot
출력이있는 경우 ( grub memtest86+.bin memtest86+_multiboot.bin
정확히 반드시 그런 것은 아님), 손상된 시스템 /boot
과 동일한 파티션에 있으므로 /
액세스하기 위해 마운트 할 필요가 없습니다.
그러나 출력이 없으면 /boot
파일 시스템 을 마운트해야합니다 .
sudo mount BOOT-PARTITION /mnt/boot
파티션 BOOT-PARTITION
의 장치 이름으로 교체하십시오 /boot
(위의 6 단계 참조).
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
인터넷 접속이 내에서 작동하는지 결정 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이면 연결 문제를 해결해야합니다. 라이브 CD 시스템 (예 : 웹 브라우저 또는 별도의 별도의 chroot
터미널 탭 / 창 에서 동일한 명령을 실행 )에서 연결이 작동하는지 확인하십시오. 명령을 올바르게 입력했는지 확인하십시오. www.google.com
그렇지 않은 경우 사용하십시오 .
출력이 위와 같지 않고 대신이라고 표시 ping: unknown host www.google.com
되면 네트워킹이 아직 작동하지 않습니다 chroot
.
에서 네트워킹을 설정하십시오 chroot
. 위의 10 단계 에서 unknown host
오류 가 없으면이 단계를 건너 뛰십시오 .
네트워킹을 설정하려면 손상된 시스템 hosts
파일을 백업 하고 라이브 CD 시스템 hosts
및 resolv.conf
파일을 복사 하십시오. (해당 시스템 resolv.conf
은 자동으로 재생성 되므로 깨진 시스템 버전을 백업 할 필요가 없습니다 .)
새 터미널 탭 ( Ctrl+ Shift+ T)을 열거 나 원하는 경우 새 터미널 창 ( 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
. 그렇습니다.
어떤 커널 패키지를 설치해야하는지 파악하십시오. 일반적으로 이것은입니다 linux-image-generic
. 그러나 항상 그런 것은 아닙니다.
어떤 버전을 설치해야할지 확실하지 않은 경우, 설치 한 Ubuntu 릴리스와 다른 정보에 부분적으로 의존합니다. 당신은 당신이 설치 한 우분투 버전이 확실하지 않은 경우,합니다 (이 명령을 실행하여 알아 chroot
, 하지 별도의 터미널 창 / 탭) :
lsb_release -r
Ubuntu 12.10 (현재 개발중인 다음 Ubuntu 릴리스)에서는 항상 입니다 linux-image-generic
. ( 이것 , 이것 , 그리고 이것 참조 )
Ubuntu 12.04 LTS에서 가능성은 linux-image-generic
및 linux-image-generic-pae
입니다. (이전 버전과 달리 12.04에는 더 이상 별도의 서버 및 데스크탑 커널이 없습니다.)
설치된 Ubuntu 시스템 (고정)이 64 비트 버전 인 경우을 사용하십시오 linux-image-generic
. ( linux-image-generic-pae
32 비트 시스템에만 적용됩니다.)
32 비트 또는 64 비트 컴퓨터에 32 비트 Ubuntu 시스템을 설치할 수 있습니다. 또한 32 비트 또는 64 비트 라이브 CD를 사용하여 32 비트 설치 시스템을 수정했을 수 있습니다. 당신이 있는지 모르는 경우에 따라서 설치된 우분투 시스템이 32 비트 또는 64 비트입니다합니다 (이 명령을 실행하여 확인 chroot
, 없는 별도의 터미널 창 / 탭) :
dpkg-architecture -qDEB_HOST_ARCH_BITS
출력은 32
또는 64
입니다.
( 이 정보를 찾는 올바른 방법 uname -m
은 아닙니다 .에서 실행될 때조차도 실행중인 커널chroot
의 아키텍처를 알려줍니다 . 이는 설치된 CD 시스템의 커널이 아닌 라이브 CD 시스템의 커널입니다.)
설치된 Ubuntu 시스템 (고정중인)이 32 비트 버전 인 경우 사용하는 가장 좋은 커널은 RAM 용량에 따라 다릅니다. 나는 추천한다 :
linux-image-generic
RAM이 3GB 미만인 경우linux-image-generic-pae
RAM이 3GB 이상인 경우(이것은 설치 프로그램이 PAE 커널을 설치하는 기능을 얻은 이후로 Ubuntu의 설치 프로그램이 설정할 것을 선택하는 방법입니다. 이 버그 의 해결 방법 을 참조하십시오 . PAE가 무엇인지 배우려면 이 Wikipedia 기사를 참조하십시오 . 우분투에서 PAE에 대해 배우려면 이 우분투 위키 페이지를 참조하십시오 .)
RAM 용량을 모르는 경우이 명령을 실행하여 다음을 찾으십시오.
grep MemTotal /proc/meminfo
이는 킬로바이트 단위 로 표시됩니다 . 기가 바이트 로 변환하려면 1,048,576 (1024 2 )로 나눕니다 .
12.04 이전의 Ubuntu 릴리스 linux-image-generic
에서는 linux-image-generic-pae
, 및 가능성이 linux-image-server
있습니다.
linux-image-server
.당신이 기다리고있는 순간입니다! 손상된 시스템에 커널을 설치하십시오.
(앞서 언급 한 경우를 제외하고 이러한 명령은 chroot
별도의 터미널 창 / 탭이 아닌)에서 실행됩니다 .
apt-get update
apt-get -y install linux-image-generic
linux-image-generic
위의 12 단계에서 설치하기로 결정한 다른 커널 패키지로 다른 것으로 교체하십시오 .
에서 11 단계를 수행하여 네트워킹을 설정 chroot
해야하는 경우 이전 hosts
파일을 복원 하십시오. 11 단계를 건너 뛴 경우이 단계도 건너 뜁니다.
복원하려면 다음 명령을 실행하십시오.
cp /etc/hosts.old /etc/hosts
파일 시스템을 마운트 해제 exit
하십시오 chroot
.
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
라이브 CD / DVD 또는 USB 플래시 드라이브를 제거하여 라이브 CD / DVD / USB 시스템을 종료하십시오. 방금 수리 한 하드 드라이브에 설치된 시스템으로 부팅하십시오. 커널 패키지를 설치했습니다. 설치 과정에서 커널 패키지가 GRUB2 부팅 메뉴에 다시 추가됩니다. 모든 것이 올바르게 작동하면 문제없이 시스템을 부팅해야합니다. (이번에는 평소보다 부팅하는 데 시간이 조금 더 걸릴 수 있다고 생각합니다.)
면책 조항 : 가능한 모든 우분투 시스템 에서 위의 절차를 테스트하지 않았 으므로 식별하지 않은 실수가있을 수 있습니다.
앞으로는 항상 두 개의 커널을 설치 하는 것이 좋습니다 . 그중 하나가 어떤 이유로 든 작동을 멈출 경우를 대비하여 두 개를 사용하는 것이 좋습니다 (GRUB2 부팅 메뉴에서 다른 하나를 선택할 수 있음). 또한 두 개의 커널 을 유지하려는 경우 실수로 하나 이상의 커널을 제거하고 재부팅해도 여전히 부팅 할 부팅이 남아 있습니다.
/etc/resolv.conf
은 현재에 의해 관리되며 resolvconf
NetworkManager를 사용할 때 자동으로 생성 rm /etc/resolv.conf
되며 발견 한대로 안전하게 제거 할 수 있습니다 .
커널을 제거했을 때 우분투 포럼에서이 솔루션을 찾았습니다. 나는 모든 단계를 밟았고 시스템이 복구되었습니다. 그것이 도움이되기를 바랍니다.
chroot가 작동 할 수 있습니다. chroot는 시스템을 시작할 때 루트 파일 시스템을 변경 함을 의미합니다. 예를 들어 라이브 CD에서 시작했지만 루트 "/"를 우분투가 설치된 위치로 변경합니다.
우분투가 / 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
하시겠습니까? 이유가 있습니다.
/sbin/initctl
또는 dbus-uuidgen
나 dpkg-divert
. 당신은 수도 교체 할 필요가 /etc/hosts
인터넷에 연결,하지만 일반적으로, 당신이 할 경우, 당신은 원래 다시 넣어해야합니다. 설치된 시스템 (Squashfs 파일 시스템을 부팅하고 압축 해제하는 라이브 CD 대신) 에서 커널을 설치 update-initramfs
하거나 실행 update-grub
한 후에도 실행할 필요가 없습니다 .
linux-image-2.6.32-26-generic
대부분의 사람들이 설치하기에 적합한 커널은 아닙니다.
어제 Trusty14.04에서 오래된 커널을 제거한 후 (FTR : 가장 최근의 두 커널을 제거 하지 않았습니다 !) 시스템이 더 이상 부팅되지 않습니다. GRUB 보여
Error: File not found
Error: You need to load the kernel first
왜 그런지 모르겠다.
그런 다음 라이브 CD에서 설치 하는 Eliah Kagan의 훌륭한 지침 을 따랐습니다 linux-image-generic
. 150MB의 새로운 커널을 설치했지만 슬프게도 문제를 해결하지 못했습니다.
다행히도이 페이지를 찾았습니다 . Boot-Repair
도구는 바로, 내 시스템이 다시 실행되고 있어요.
방금 오늘 Willy로 업그레이드하면서 겪은 경험을 추가하고 싶었습니다. 나는 약간 청소하고 memtest와 함께 자신을 발견했다. 구글은 내가 커널을 제거했다는 것을 이해하게했다. 내가 가진 제약 중 하나는 네트워크 속도가 느리기 때문에 전체 ISO를 다운로드하는 것은 옵션이 아닙니다. 그래서 Ubuntu Minimal CD (40MB 만 해당)를 사용하여 부팅했습니다. 하드웨어 옵션 (무선 연결에 도움이 됨)을 감지 한 후 쉘 옵션에 들어갔습니다. 나는 @Lekensteyn 지침을 따르고 성공했습니다. 그러나 몇 가지 사항 : resolv.conf
chroot로 가기 전에 복사 해야합니다. 그렇지 않으면 DNS가 망가져 로그인 한 사용자이므로 root가 필요하지 않습니다.
나는 오래된 것을 알고 있지만이 답변을 추가하면 문제가 발생하는 사람들에게 가치가 추가 될 것이라고 생각했습니다.