ubuntu console(ubuntu emergency mode)
终端, Shell,“ tty”和控制台( console)有什么区别
在Linux下,终端、Shell、tty和控制台(console)是相关但不完全相同的概念:
终端(Terminal):
在图形用户界面(GUI)下,终端是一个模拟文本界面的程序,用户可以在其中输入命令并查看命令的输出。
例如,在Ubuntu中,你可以打开GNOME终端或者其他终端仿真器。
终端提供了一个与Shell交互的界面。
Shell:
Shell是一个命令解释器,负责解释用户输入的命令并执行相应的操作。
在Linux中,常见的Shell有Bash、Zsh、Ksh等。
当你在终端中键入命令时,实际上是在与Shell进行交互。
tty:
tty是“teletypewriter”的缩写,它最初是指早期的终端设备,如电传打字机。
在现代Linux系统中,tty代表终端设备,每个终端或终端仿真器都与一个tty设备相关联。
当你在系统中打开一个终端时,会分配一个tty设备用于该终端的输入和输出。
控制台(Console):
控制台是指物理或虚拟的文本界面,通常用于系统引导和紧急维护。
在Linux系统中,你可以通过按下Ctrl+Alt+F1到F6切换到不同的控制台。
控制台通常与tty设备相关联,但是它们不同于终端仿真器,因为它们不依赖于图形用户界面。简而言之,终端提供了一个用户与Shell交互的界面,而tty代表终端设备,控制台则是物理或虚拟的文本界面。在终端中,你通过Shell与系统进行交互,而tty则是实际处理输入输出的设备,控制台则是提供文本界面的地方。
UBuntu系统安装KVM创建虚拟机遭遇故障
现象:
ping不通虚拟机,ssh登录不上,console方式登录不上,虚拟机无法shutdown,貌似电源管理也没有安装成功。
先来解决网络问题:
还好可以通过virt-cat来检查虚拟机内部的文件。
先关闭虚拟机
virsh destroy vm1
然后检查网卡设置文件:
root@dbkvm:~# virt-cat-d vm1/etc/network/interfaces# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet staticaddress 192.168.1.51netmask 255.255.255.0network 192.168.1.0broadcast 192.168.1.255gateway 192.168.1.1# dns-* options are implemented by the resolvconf package, if installeddns-nameservers 8.8.8.8dns-search localdomain
这个dns-search localdomain看上去很奇怪。一般是defaultdomain。
localdomain是因为host机器的/etc/hosts中配置成了:
127.0.0.1 localhost.localdomain dbkvm
将其换成这种配置:
127.0.0.1 localhost127.0.1.1 dbkvm
再创建虚拟机,网络正常了。可以ping通,可以ssh登录。 console问题还有。
虚拟机里面的网络设置dns-search被设置成了defaultdomain。
因此推测是hosts文件的配置错误,导致虚拟机中网卡设置的dns-search错误,导致无法连接网络,因此不能在创建过程中从网络下载安装openssh-server.
来看一下电源管理
如果不安装电源管理,就不能在host主机通过shutdown关闭虚拟机。
在创建vm的选项中需要补上:
--addpkg=acpid
事后弥补就要登录到虚拟机中,然后运行命令:
apt-get install acpid
再来处理console不能登录的问题。
先停止虚拟机。
virsh stop vm1
准备一个文件ttyS0.conf,内容如下:
# ttyS0.conf- getty# This service maintains a getty on ttyS0 from the point the system is# started until it is shut down again.start on stopped rc RUNLEVEL=[2345]stop on runlevel [!2345]respawn
安装guestfish程序:
apt-get install guestfish
现在用virt-copy-in将文件复制到vm的/etc/init目录中:
virt-copy-in-d vm1 ttyS0.conf/etc/init
然后调用virsh edit vm1来编辑vm1的配置文件,添加下面的内容:
devices...serial type='pty'source path='/dev/pts/2'/target port='0'//serialconsole type='pty' tty='/dev/pts/2'source path='/dev/pts/2'/target port='0'//console/devices
最后试用一下:
virsh start vm1Domain vm1 startedroot@dbkvm:~/kvm_scripts# virsh console vm1Connected to domain vm1Escape character is ^]Ubuntu 12.04.2 LTS vm1 ttyS0vm1 login: rootPassword:Last login: Thu May 2 09:21:03 UTC 2013 from 192.168.1.4 on pts/1Welcome to Ubuntu 12.04.2 LTS(GNU/Linux 3.2.0-41-virtual x86_64)
可以了。所有问题的根源都出在那个不正确的host机器上的/etc/hosts配置。
如何设置ubuntu系统的串口输出
1.平台:intel X86 baytrail平台
2.由于开发模式需要查看内核串口输出,所以需要将linux系统从开机到系统引导起来的部分都定向到串口,那么如何设置呢?
安装ubuntu系统后(这里装的是14.10版本的ubuntu系统)
(1)首先设置grub参数:
修改/etc/default/grub文件:
修改如下内容为:
GRUB_CMDLINE_LINUX_DEFAULT="text console=tty0 console=ttyS0,115200n8"
然后增加一行:
GRUB_SERIAL_COMMAND="serial--unit=0--speed=115200--word=8--parity=no--stop=1"
然后执行update-grub,使配置生效
(2)然后在/etc/init/目录中创建ttyS0.conf,内容如下:
#ttyS0- getty
start on rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec/sbin/getty-L 115200 ttyS0 vt100
遗留问题:
系统起来后,在串口部分只显示到:
* Starting regular background program processing daemon[ OK ]
* Starting Signal sysvinit that alsa-utils tasks are complete[ OK ]
* Starting CPU interrupts balancing daemon[ OK ]
* Stopping save kernel messages[ OK ]
* Stopping Restore Sound Card State[ OK ]
* Starting cups-browsed- Bonjour remote printer browsing daemon[ OK ]
* Starting automatic crash report generation[ OK ]
* Starting configure virtual network devices[ OK ]
[ OK ]toring resolver state...
[ OK ]rting uuid generator uuidd
* speech-dispatcher disabled; edit/etc/default/speech-dispatcher
saned disabled; edit/etc/default/saned
* Stopping System V runlevel compatibility[ OK ]
* Stopping cold plug devices[ OK ]
* Stopping log initial device creation[ OK ]
* Starting save udev log and update rules[ OK ]
[ 150.593006] systemd-logind[947]: Failed to start unit user@1000.service: Unknown unit: user@1000.service
[ 150.602779] systemd-logind[947]: Failed to start user service: Unknown unit: user@1000.service
然后在VGA上有显示登录,但是串口上没有显示
这里需要进一步研究
不过总算将这一步做出来了,后面的问题就是开机脚本配置的问题了