回答:
ライブ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
(オプション)ネットワークに接続している場合、Live環境のDNSサーバーを使用します(そうでない場合、ホスト名を解決できない可能性があります)。
cp /etc/resolv.conf /mnt/etc/resolv.conf
/mnt
:sudo chroot /mnt
apt-get install linux-image-generic
(chrootの後にrootであるため、sudoは不要です)カーネルのインストールが成功したら、chrootを取得していくつかのファイルシステムをアンマウントします。
exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt
sudo reboot
/mnt
ます。Ubuntuは通常、ファイルシステムのアンマウント/同期を処理しますが、これは私にはきれいに見えます。
/dev/mdxxx
ドライブをマッピングします-mdadmであると仮定します。
/etc/resolv.conf
(シンボリックリンクの場合は削除)とそのようなnameserver 8.8.8.8
もの(GoogleパブリックDNSサーバー)を配置します。必要に応じて交換してください。
cp /etc/resolv.conf /mnt/etc/resolv.conf
chrootに入る前に答えに追加する必要があります。とにかくそれは私のために働いた
この拡張された手順はchroot
、インストールするカーネルパッケージがわからない(Ubuntu 12.10以前では常にそうとは限らないlinux-image-generic
)、最初にどのパーティション、またはどの物理ドライブに/
ファイルシステムが含まれ、個別の/boot
パーティションがあります。
いくつかの類似点に気づくでしょうが、ここでは他の手順を参照してこれを書いていません。私はここの手順に大まかに基づいてそれを行いました(これらの手順はまったく異なるものを対象としていますが、広範囲に適応しており、散文ではなく一部のコマンドのみがコピーされています)。
すべてのカーネルパッケージを削除したため、カーネルがインストールされていないとUbuntuは起動できません。したがって、解決策は、ライブCD / DVD / USB chroot
からインストールされたシステムにブートし、そこにカーネルをインストールすることです。
UbuntuライブCD / DVDまたはライブUSBフラッシュドライブから起動します。
Ubuntuを試す(Ubuntu をインストールしない)を選択します。
デスクトップが表示されたら、インターネットに接続していることを確認してください。そうでない場合は、インターネットに接続します。インターネットに接続しているかどうかを確認する1つの方法は、Webブラウザーを開くことです。ライブのCD / DVD / USBシステムのWebブラウザーでこの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
パーティションが1つしかない場合は、それが1つです。
複数のext4
パーティションがある場合は、おそらく最初のパーティションです。ただし、最初の/boot
パーティションが非常に小さい(ギガバイト未満)場合は、別のパーティションになる可能性があります(そのパーティションも覚えておいてください)。
boot
下Flags
にリストされているかどうかは、パーティションが別の/boot
パーティションであるかどうかとはほとんど関係がないことに注意してください。上記の情報がリストされている私のシステムには、別個のパーティションがありません/boot
。
パーティションのデバイス名は、物理ドライブのデバイス名で始まり、直後Disk
の2行目に記載されています。次に、パーティション番号を末尾に追加します。したがって、私の /
ファイルシステムを含むパーティションのデバイス名は/dev/sda1
です。その情報を見つけた2行を次に示します。
Disk /dev/sda: 21.5GB
1 1049kB 20.4GB 20.4GB primary ext4 boot
複数の物理ドライブがある場合、上記のようなリストが複数表示されます。しかし、別のUnixライクなシステムがインストールされていない限りext4
、少なくとも別のドライブに意図的にパーティションを作成していなければ、おそらくパーティションを含むドライブは1つしかありません。ext4
パーティションのある複数のドライブがある場合、ファイルシステムext4
を含むパーティション/
はおそらくパーティションを含むドライブにありますlinux-swap
。
それはだ可能あなたのUbuntuシステムのことを/
、ファイルシステム以外のタイプのパーティション上にありますext4
。これが発生した場合、ほぼ常にext3
であり、ほぼ常に非常に古いシステムです。自分で意図的にこのように設定しない限り、これが当てはまることは非常にまれです。
/
ファイルシステムを含むパーティションのデバイス名を覚えておいてください(または書き留めてください)。と異なる場合は、以下の手順で/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に正常に応答することが知られているいくつかの信頼できるホストをする。
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システム上の接続が(たとえば、Webブラウザーを介して、または別の、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リリースに一部依存し、その他の情報に一部依存します。インストールした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ビットシステムを修正している場合があります。したがって、インストールされているUbuntuシステムが32ビットか64ビットかわからない場合は、このコマンドを実行して確認します(別のターミナルウィンドウ/タブchroot
ではなく、で):
dpkg-architecture -qDEB_HOST_ARCH_BITS
出力はまたはのいずれ32
かになります64
。
(この情報を見つける正しい方法でuname -m
はないことに注意してください。なぜなら、で実行されても、実行中のカーネルのchroot
アーキテクチャを教えてくれます。これは、インストールされた(壊れた)システムのカーネルではなく、ライブCDシステムのカーネルです)
インストールしているUbuntuシステム(修正対象)が32ビットバージョンである場合、使用する最適なカーネルは、搭載しているRAMの量によって異なります。私はお勧め:
linux-image-generic
RAMが3 GB未満の場合linux-image-generic-pae
3 GB以上のRAMがある場合。(これはUbuntuのインストーラはインストーラがPAEカーネルをインストールする機能を獲得して以来、設定するかを選択する方法である。参照の解像度にこのバグを。あなたはPAEが何であるかを知りたい場合は、参照このWikipediaの記事を。あなたがしたい場合はUbuntuのPAEについては、このUbuntu wikiページを参照してください。
RAMの容量がわからない場合は、次のコマンドを実行して確認してください。
grep MemTotal /proc/meminfo
それはキロバイトでリストされています。ギガバイトに変換するには、1,048,576(1024 2)で除算します。
Ubuntuのリリースでは前に 12.04、おそらく可能性がある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
のうち、INGのchroot
:
umount /proc || umount -lf /proc
umount /sys /dev/pts
exit
sudo umount /mnt/dev /mnt
ライブCD / DVD / USBシステムをシャットダウンし、ライブCD / DVDまたはUSBフラッシュドライブを取り外します。修復したばかりのハードドライブにインストールされたシステムを起動します。カーネルパッケージをインストールしました(インストールの一部として、カーネルパッケージが提供するカーネルがGRUB2ブートメニューに追加されます)。すべてが正常に機能した場合、システムは問題なく起動するはずです。(今回は、通常よりも起動に少し時間がかかる可能性があると思います。)
免責事項:上記の手順をすべての可能な Ubuntuシステムでテストしたわけではないため、特定していない間違いがある可能性があります。
将来的には、常に2つのカーネルをインストールしたままにしておくことをお勧めします。何らかの理由でそのうちの1つが機能しなくなった場合に備えて、2つにすることをお勧めします(GRUB2ブートメニューでもう1つを選択できます)。さらに、2つのカーネルを保持する予定で、意図したよりも1つ多くのカーネルを誤ってアンインストールして再起動した場合、ブートするためのカーネルが残っています。
/etc/resolv.conf
現在、@ xcal400 はによって管理されてresolvconf
おり、NetworkManagerを使用すると自動的に生成され、見つけたとおりに安全に削除できrm /etc/resolv.conf
ます。
カーネルを削除したとき、Ubuntuフォーラムでこのソリューションを見つけました。すべての手順を実行し、システムが回復しました。それがあなたを助けることを願っています。
chrootは機能する場合があります。chrootは、システムを起動するときにルートファイルシステムを変更することを意味します。たとえば、ライブCDから開始したが、ルート「/」をubuntuがインストールされている場所に変更します。
あなたの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
ますか?それには理由があります。
/sbin/initctl
か、dbus-uuidgen
またはdpkg-divert
。あなたは可能性が交換する必要があり/etc/hosts
、通常はインターネットに接続するためではなく、あなたがしなければ、あなたは元を戻す必要があります。インストールされたシステムでは(起動してsquashfsファイルシステムをアンパックするライブCDではなく)、カーネルをインストールした後update-initramfs
でも実行する必要はありませんupdate-grub
。
linux-image-2.6.32-26-generic
ほとんどの人がインストールするのに適切なカーネルではありません。
昨日Trusty14.04から古いカーネルを削除した後(FTR:最新の2つを削除しませんでした!)、システムはもう起動しませんでした。GRUBショー
Error: File not found
Error: You need to load the kernel first
理由はわかりません。
その後、Eliah Kaganの優れた指示に従ってlinux-image-generic
、ライブCDからインストールしました。150 MBの新しいカーネルをインストールしましたが、残念ながら問題は解決しませんでした。
幸いなことに、私はこのページを見つけました。Boot-Repair
このツールは、右、私のシステムは再びそれを実行してしまいました。
今日、ウィリーへのアップグレードで経験したことを加えたかっただけです。私は少し掃除をしましたが、memtestしかありませんでした。googleを使用して、カーネルを削除したことを理解しました。私が抱えていた制約の1つは低速ネットワークであったため、完全なISOをダウンロードすることはオプションではありませんでした。そのため、Ubuntu Minimal CD(40MBのみ)を使用して起動しました。ハードウェアオプション(ワイヤレスへの接続に役立ちました)を検出した後、シェルオプションに入りました。@Lekensteynの指示に従い、成功しました。ただし、resolv.conf
chrootを実行する前にコピーする必要があります。そうしないと、DNSがねじ込まれ、ログインしているユーザーがsudoを必要としないため、どこにもルートがありません。
私はその古いことを知っていますが、この答えを追加すると、問題が発生する場合に価値が追加されると考えました。