Giriş yapmadan .bashrc nasıl düzenlenir


17

Bu muhtemelen yinelenen bir sorudur, ancak ne arayacağınızı bilmek için CentOS'un (özellikle bir VM'de) giriş / önyükleme işlemine yeterince aşina değilim.

VirtualBox CentOS 7 çalıştırıyorum. Yanlışlıkla dosyamın gnome-terminalsonuna ekledim ~/.bashrc. Böylece şimdi giriş yaptığımda bir terminal penceresi açılır. Bu terminal oturumu yürütülür .bashrc, başka bir pencere vb. Açar ve bir ton gnome-terminalterminal penceresiyle doluyum .

GUI giriş olmadan bir terminal oturumuna giriş yapmaya çalışıyorum (bu yüzden gnome-terminalbaşarısız), ama GUI olmadan önyükleme yapamıyorum. Bu sorunun cevaplarını başarılı bir şekilde kullanmaya çalıştım. Ben her zaman bir GUI giriş olsun: CLI CentOS Boot nasıl? . Önyükleme sırasında grub yapılandırmasını düzenlemenin başka bir yolu var mı yoksa Ubuntu'daki Ctrl + Alt + F1 gibi GUI girişinden yeni bir terminal örneğine ulaşmanın bir yolu var mı? (Evet, denedim. CentOS 7'de çalışmıyor veya VirtualBox VM'de çalışmıyor.) Veya GUI olmadan bir terminal oturumu almanın başka bir yolu var, bu yüzden düzenleyebilirim .bashrcve bu karmaşa düzeltmek?


4
sshdo VY'de kadar? Çok şekilde. 1) Tek kullanıcı modu olarak başlayın (örn. Önyükleme zamanında girin, çekirdeği seçin, a tuşuna basın, tek ekleyin , girin ...) 2) VM sisteminizde sshd çalıştırırsanız .bashrcdeğişikliğinizi kopyalamaya çalışabilir ve geri kopyalayabilirsiniz ( scp, sftp rsync ...). 3) Eğer başka bir kullanıcı olarak giriş yapabilir ve yapabilir su -başka makineye (hatta sanal) Eğer yapabilirim dan ... 4) ssh user@host mv .bashrc bashrcToModifyhepsini yapıyor Öncesi sonra değiştirmek ... 0, log) CTRL ALT F1VM çalışması?
Hastur

2
"Yanlışlıkla eklenen gnome-terminali" dediğinizde, bu nasıl oldu?
mcfedr

@mcfedr Birinden XD istemesini bekliyordum. Bunun ne .bashrciçin olduğunu yanlış anladım . Girişte bir kez çalıştırıldığını düşündüm, ancak her kabuk oturumu başlatıldığında çalıştırıldı. Her giriş yaptığımda bir terminal penceresi açılmasını istedim, bu yüzden yaptım echo 'gnome-terminal' >> ~/.bashrc. Kötü bir fikir. Ben koymalıyız sanırım gnome-terminaliçinde /etc/init.dya da bir yerde? Hala önyükleme işlemini anlamaya çalışıyorum.
Michael Hoffmann

Yanıtlar:


13

CtrlAltF1ana makine tarafından yakalanıyor olabilir veya VirtualBox doğru şekilde geçirmiyor olabilir. Birkaç hızlı test bana VirtualBox'da tanımlanan Host anahtarını CtrlAlt( Mac'te sol Ctrlveya sol olabilir) kullanabileceğinizi söylüyor . Bu nedenle, tuşuna basmak F1benim için VirtualBox'da TTY1'e geçti (ve benzer F7şekilde GUI'ye geri döndü).


1
Evet. İşe yaradı. Ctrl + F2 benim için hile yaptı. Ctrl + F1, CentOS'taki GUI oturumu gibi görünüyor, ancak aynı prensip. IMO bu en basit çözümdür - fazladan medyaya veya önyükleme yapılandırmasını düzenlemeye gerek yoktur. Bunu cevap olarak işaretliyorum.
Michael Hoffmann

2
@MichaelHoffmann evet, bu benden daha yeni bir CentOS etkisi olacak. GDM davranışı, TTY 7 yerine ilk kullanılabilir
TTY'yi

2
Gelecek sürümlerde daha da değişiyor: Giriş ekranı vconsole 1'de olacak ve giriş yapan her grafik kullanıcı sonraki her vconsole'u işgal edecek (oturum açtığınızda oturumunuz vconsole 2'de olacak, bir sonraki kullanıcıyı değiştirirseniz vconsole 3, vb.).
Michael Hampton

24

Canlı bir Linux CD'si ile önyükleme yapabilir, ardından CentOS dosya sistemini bağlayabilir ve .bashrc dosyasını oradan düzenleyebilirsiniz.


2
En basit çözüm. Ayrıca, oturum açmayı veya hatta tamamen önyüklemeyi önleyen yanlış yapılandırmalar için de çalışır (neyin yanlış olduğunu ve nasıl tersine
çevrildiğini

Bu, özellikle bir VirtualBox kullanıcısının, konuk işletim sisteminin bir ISO'sunun oturmasını garanti ettiği durumlarda son derece basittir. Ama korkarım muru'nun cevabını seçmek zorundayım çünkü daha da basit. Katkınız için teşekkürler.
Michael Hoffmann

15

Grub yapılandırmasından init / bin / sh

GUI'ye gitmek yerine bir kök kabuk yüklemek için grub yapılandırmanızı düzenleyebilirsiniz.

  1. VM'nizi yeniden başlatın
  2. Grub menüsü göründüğünde, ilk girişi seçin ve edüzenlemek için tuşuna basın . Görünmüyorsa, önyükleme sırasında Shift tuşunu yeniden başlatın ve basılı tutun
  3. linux16Veya ile başlayan satırı bulun linux. Benimki böyle. Seninki biraz farklı olabilir

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8
  4. Değişim roiçin rw( salt okunur için bayrak readwrite ekleme ve değişiklikleri yazabilmek için) init=/bin/shhattına. Bu çalıştırmak için Linux söyler /bin/shyerine initbaşlangıçta. Girişime örnek

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root rw crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8 init=/bin/sh
  5. Yapılandırmayı çalıştırmak için Ctrl-X tuşlarına basın. Kaydedilmeyecek.

  6. Bir kök kabuk görünecektir. .bashrcSorunlu çizginizi düzenlemek ve kaldırmak için kullanın .

    Kabuk normalde initişlem için ayrılmış olan PID 1 olarak çalışacağı için işletim sistemini bu durumda kullanmaya devam etmemeniz gerektiğini unutmayın . El ile başlatmaya devam edebilirsiniz, exec /sbin/initancak yalnızca yeniden başlatmayı öneriyorum

  7. Normal şekilde yeniden başlatın. Önceki değişiklikleriniz unutulacak.

Biz aslında okuma-yazma kök dosya sistemini mount ve başlatmak için Linux anlatmak GRUB gelen Linux geçirilen önyükleme seçenekleri, düzenlerken /bin/shinit süreci için

Bu benim için Centos 7 ve VirtualBox 4.3.12 kullanıyor


Hm ... bu mükemmel çalıştı (ve biraz rahatsız edici - birisi kimlik bilgileri olmadan bir kök kabuk almak için benim laptop bunu yapabilir?). Ama kabuktan çıktığımda çekirdek paniğine neden oldu, bu yüzden bunu cevap olarak işaretleyip işaretleyemeyeceğimi bilmiyorum ... Bunun neden çalıştığını açıklayabilir misiniz ? ne rove rw? Ya da daha iyisi, linux16 için bir manpage var mı? Burada ne yapıyorum?
Michael Hoffmann

5
@MichaelHoffmann Bu kök almak için standart, iyi bilinen bir yoldur - bunu engellemek için önyükleyiciyi parola ile korumanız gerekir. Bir çekirdek paniğine neden olur, çünkü initin asla çıkması beklenmez, ancak panik aksi takdirde zararsızdır. exec /sbin/initGerçek ya da ne olursa olsun önyüklemeye devam edebilirsiniz init. roVe rwseçenekler kök salt okunur veya okuma-yazma montaj. Temel olarak GRUB menüsünü, Linux'a kök dosya sistemi okuma-yazma ve init için sh başlatmasını söyleyen bu seçeneklerle önyükleme yapmasını söyleyecek şekilde düzenliyorsunuz.
muru

1
@muru Bazı şeyleri daha net hale getirmeye yardımcı olmak için cevaba birkaç yorum ekledim.
lex

6

onarılan bir kopyasını .bashrcyerine scp

Çalışmak için başka bir makineniz varsa, kırık dosyayı kopyalayın ve sorunu giderin, sonra geldiği yere geri koyun. Bu, oturum açma ve giriş komutlarından herhangi birini çağırmayı önler.

user@backup ~ $ scp user@homehost:~/.bashrc busted.bashrc
user@backup ~ $ vim busted.bashrc # fix, fix
user@backup ~ $ scp busted.bashrc user@homehost:~/.bashrc
user@backup ~ $ rm busted.bashrc

Zeyilname: OP aşağıda belirtildiği gibi, SSH erişimi gerekmektedir homehost. Bu bir seçenek değilse, bunun yerine FTP / SFTP mevcutsa, herhangi bir dosya aktarma yöntemi ihtiyacınız olanı yapar, bu da düzeltilmiş giriş dosyasını yüklemektir.


1
Bu, ancak VM üzerinde sshdçalışıyorsa (CentOS'un varsayılan olarak yaptığından emin değilim) ve ağ VirtualBox ile ve ana bilgisayarda ve VM'de doğru yapılandırılmışsa çalışır.
Michael Hoffmann
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.