这是我首次安装虚拟机,也是首次接触Linux系统。对于下学期要运用的这个操做系统,以及如何在本身的电脑上安装虚拟机,我仍是有些期待和好奇的。html
我一直跟着娄老师的教程走,整体而言仍是比较顺利的。尽管遇到了很多问题,但经过在网上搜寻解决方法与不断地动手操做实践,全部的困难都得以解决,也收获很多。所以,我很赞同娄老师在教程里说的:linux
在此强烈建议把教程走完,出错了也会有不同的收获。ios
我遇到的第一个问题是新建虚拟电脑,操做系统选择Linux,版本选择Ubuntu。在这里我看到教程里Ubuntu是64位,但我在选择Ubuntu时并无64位,而只有32位。当时我没有太在乎这个问题,进而选择了32位,并继续Next。程序员
一路较为顺利,虚拟机建立完成:正则表达式
接下来要作的是安装Ubuntu系统软件,在官网下载桌面版:Ubuntu 16.04 LTS。在双击启动建立好的虚拟机并选择启动盘以后,却没有出现应有的安装界面,Virtualbox提示“FATAL:No bootable medium found!System halted.”shell
经过在网上查询资料得知:ubuntu
类型 | 缘由 | 解决措施 |
---|---|---|
已安装系统的状况 | 引导设备设置错误致使 | 首先,在出现错误的虚拟机上右键选择“设置”。在设备中点击“系统”,启动顺序只勾选”硬盘“便可。此时再启动系统即可以正常引导。 |
未安装系统的状况 | 没有设置好光盘镜像 | 首先,选中出错的虚拟机,点击“设置”按钮。在“设置”中选择“存储”——“没有盘片”,右侧点击光盘的图标,选择要加载的系统ISO镜像便可。择好镜像后,点击“启动”,此时再看虚拟机可否正常引导。 |
——应用自百度经验《virtualbox提示no bootable medium found怎么办》vim
很明显个人遇到的状况属于第一种类型。可是在根据步骤进行操做后,问题并无获得解决。此时Virtualbox提示“This kernel requires an X86-64 CPU,but only detected an i686 CPU.(当前系统内核须要64位的cpu,但是只检测到32位的) 这我想起了以前遇到的问题:Ubuntu没法选择64位,因而我选择了32位。通过查询资料得知:浏览器
VirtualBox安装64位的系统须要知足如下条件:安全
1. 64位的cpu
2. 安装的系统必须为64位
3. cpu容许硬件虚拟化
个人环境前两项都符合,因此应该是第三个条件没有被知足。
第3项须要在bios中开启这个选项,将Virtualization状态改成enabled。
——应用自《VirtualBox 安装 Linux时 报错This kernel requires an X86-64 CPU,but only detected an i686 CPU错误的解决办法》
1. BIOS中的虚拟化技术
本文介绍了如何在主板BIOS中启用虚拟化技术(VT)。要运行一些操做系统,虚拟化软件和虚拟机,硬件虚拟化就须要启用。大多数状况下,不须要虚拟化技术的操做系统能够正常运行在启用了虚拟化技术的系统,但有些须要这种技术的操做系统,必须启用虚拟化技术才能运行。
全部最新的处理器和主板都支持虚拟化技术,检查一下你的主板厂商是否支持而且要知道如何启用或禁用BIOS中的VT。当在主板上启用虚拟化技术后,操做系统能当即检测到。
2. 在哪里能找到在BIOS中的虚拟化技术(VT)?
首先开机进入BIOS,通常机器是按F2,个人T420是按F1,而后进入Security,Virtualization,选择Enable便可。不一样的主板可能选项会有所不一样,请自行参考主板厂商的帮助。
在你更改设置后,禁用或启用虚拟化,建议关闭计算机最小10秒,而后从新启动机器(冷启动),确保正常开启虚拟化技术。若是你的主板是最新的,它在冷启动后可以检测到配置变化。每当我改变个人主板上的VT设置,它都会自动推迟下次从新启动生效。
通常来讲,用virtualBox安装64bit的虚拟机:
- 64位的cpu(带硬件虚拟化支持)和64位的操做系统
- 必须运行64位的VirtualBox,才能够装32位或64位的虚拟机;32位的VirtualBox只能装32位的虚拟机,而不论硬件是否支持64位
- 你必须容许硬件虚拟化;软件虚拟化是不支持64位虚拟机
——应用自《VirtualBox没有64位选项,没法安装64位的解决方法》
经过查阅资料,我也了解到更多关于BIOS的知识。其中这篇百度经验介绍得较为具体:《如何进入BIOS之联想笔记本BIOS的基本设置图解》。经过查阅资料并动手操做,我进入电脑的BIOS更改了VT设置,成功地解决了问题。
接下来就是按照教程里的步骤安装操做系统,一路都较为顺利,没有遇到多少问题。
操做系统安装成功。接下来是安装加强功能:
好啦,初始工做算是完成咯。
接下来我要面对的是从未接触过的内容:与平时惯用的 Window 风格相差甚大的操做系统、内容冗杂又庞大的 Linux 命令,这些都很令我头疼。想必我从如今的小白一只,到入门学习,再到较为熟练地操做 Linux 系统,还有很长的路要走。路途漫漫,脚踏实地、一点一滴地努力和进步吧。
Linux 主要是系统调用和内核那两层。固然直观地看,咱们使用的操做系统还包含一些在其上运行的应用程序,好比文本编辑器、浏览器、电子邮件等。
这一节介绍了 Linux 的历史,Linux 与 Windows 的区别,以及如何学习 Linux。经过了解到 Linux 的特色:
课程中给出了如何学习 Linux 的建议:首先要摆正学习心态。
其中:
Linux大都在命令行下操做,可否接受不用或少用图形界面。
这句话直截了当地指出了 Linux 的特色: 与咱们平时惯用的 Windnows 有所不一样,用户将不能依赖图形界面,而是在命令行下操做。这种转变对于咱们初学者而言可能较为困难,可是对于程序员来讲在操做上会更加方便。我想这也是 Linux 一样受欢迎并且被普遍使用的缘由之一吧。
课程强调要注重基础,从头开始。提供的学习路径以下:
Linux 自己是没有图形界面的,咱们一般在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件。若是只有服务器也是不能实现一个完整的桌面环境的,固然还须要一个客户端,咱们称为 X Client,几个最流行的实现了客户端功能的桌面环境分别是 KDE,GNOME,XFCE,LXDE 。
实验楼以前使用的桌面环境是 LXDE ,目前使用的是 XFCE 。
终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登录就是经过不一样的 /dev/tty 设备完成的。
比较常见的终端模拟器有: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。实验楼的实验中的终端程序是 xfce 桌面环境自带的 xfce-terminal 。
切换纯命令行界面的“terminal”:[Ctrl]+[Alt]+[F1]~[F6]。
切换到其中一个终端后切换回图形界面:[Ctrl]+[Alt]+[F7]
UNIX/Linux 操做系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。
在 UNIX/Linux 中比较流行的常见的 Shell 有 bash、zsh、ksh、csh 等等。
Ubuntu 终端默认使用的是 bash,默认的桌面环境是 GNOME 或者 Unity(基于 GNOME),实验楼的环境中使用的分别是 zsh 和 xfce。
输入:打开终端,按键盘输入,而后按回车
touch file 建立一个名为file的文件
cd /etc/ 进入一个目录
pwd 查看当前所在目录
输出:输出会返回你想要的结果,好比你要看什么文件,就会返回文件的内容。若是只是执行,执行失败会告诉你哪里错了,若是施行成功那么会没有输出,由于linux的哲学就是:没有结果就是最好的结果。
Tab:使用Tab键来进行命令补全,当你忘记某个命令的全称时能够只输入它的开头的一部分,而后按下Tab键就能够获得提示或者帮助完成。不止补全命令,补全目录、补全命令参数都是没问题的。
Ctrl+c:强行终止当前程序(你能够放心它并不会使终端退出)。
其余一些经常使用快捷键以下:
按键 | 做用 |
---|---|
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a | 将光标移至输入行头,至关于Home键 |
Ctrl+e | 将光标移至输入行末,至关于End键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
Shift+PgDn | 将终端显示向下滚动 |
使用键盘上的方向上键↑,恢复以前输入过的命令。
通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(好比文件名、参数名)。当查找文件夹时,可使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,经常使用通配符代替一个或多个真正字符。
Shell 经常使用通配符:
字符 | 含义 |
---|---|
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[!list] | 匹配 除list 中的任意单一字符之外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} | 匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} | 匹配 c1-c2 中所有字符 如{1..10} |
在 Linux 环境中,若是遇到困难,可使用man命令,它是Manual pages的缩写。用户能够经过执行man命令调用手册页。要查看相应区段的内容,就在 man 后面加上相应区段的数字便可。
$ man <command_name>:得到某个命令的说明和使用方式的详细介绍。
man man:查看 man 命令自己的使用方式。
$ man 1 ls:显示第一区段中的ls命令 man 页面。
$ ls --help:快速查看一些一个命令的某个具体参数的做用。
打开终端,输入命令:
$ who am i 或者 $ who mom likes
使用 whoami(去掉空格)可查看当前登陆用户的用户名, pts/0 中 pts 表示伪终端。所谓伪是相对于 /dev/tty 设备而言的。伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端, pts/0 后面那个数字就表示打开的伪终端序号,后面则表示当前伪终端的启动时间。
who 命令其它经常使用参数:
参数 | 说明 |
---|---|
-a | 打印能打印的所有 |
-d | 打印死掉的进程 |
-m | 同am i,mom likes |
-q | 打印当前登陆用户数及用户名 |
-u | 打印当前登陆用户登陆信息 |
-r | 打印运行等级 |
在 Linux 系统里, root 帐户拥有整个系统至高无上的权利,好比 新建/添加 用户。
建立用户须要 root 权限,要用到 sudo 这个命令。使用这个命令有两个大前提,一是你要知道当前登陆用户的密码,二是当前用户必须在 sudo 用户组。
注意:Linux 下密码输入是不显示任何内容的,能够盲打密码。退出当前用户跟退出终端同样可使用 exit 命令或者使用快捷键 Ctrl+d。
使用groups命令:$ groups 用户名
其中冒号以前表示用户,后面表示该用户所属的用户组。这里能够看到 shiyanlou 用户属于 shiyanlou 用户组,每次新建用户若是不指定用户组的话,默认会自动建立一个与用户名相同的用户组。
默认状况下新建立的用户是不具备 root 权限的,也不在 sudo 用户组。用在sudo用户组的用户执行 sudo 命令能够将用户添加到 sudo 用户组,让它也可使用 sudo 命令得到 root 权限。
$ su 在sudo用户组的用户名 $ groups 须要添加到sudo用户组的用户名 $ sudo usermod -G sudo 须要添加到sudo用户组的用户名 $ groups 须要添加到sudo用户组的用户名
$ sudo deluser 须要删除的用户名 --remove-home
$ ls -l
假设目前是 lilei 用户登陆,新建一个文件,命名为 “ iphone6 ”: $ touch iphone6
可见文件全部者是 lilei。如今,换回到 shiyanlou 用户身份,使用如下命令变动文件全部者为shiyanlou :
$ cd /home/lilei $ ls iphone6 $ sudo chown shiyanlou iphone6
如今查看,发现文件全部者成功修改成 shiyanlou 。
若是你有一个本身的文件不想被其余用户读、写、执行,那么就须要对文件的权限作修改,有两种方式。
每一个文件的三组权限(拥有者,所属用户组,其余用户,记住这个顺序是必定的)就对应这一个 "rwx",也就是一个 '7' ,因此若是我要将文件“iphone6”的权限改成只有我本身能够用那么就这样:
$ chmod 700 iphone6
如今,其余用户已经不能读这个“ iphone6 ”文件了:
完成上述相同的效果,能够经过如下命令:
$ chmod go-rw iphone6
g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增长和去掉相应的权限。
FHS(文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每一个区域的用途、所须要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
FHS 定义了两层规范:
第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
(图片)
使用 cd 命令能够切换目录
使用 . 表示当前目录
.. 表示上一级目录(以 . 开头的文件都是隐藏文件,因此这两个目录必然也是隐藏的,你可使用 ls -a 命令查看隐藏文件)
- 表示上一次所在目录
~ 一般表示当前用户的 home 目录。 使用 pwd 命令能够获取当前所在路径(绝对路径)
以home目录为起点,分别以绝对路径和相对路径的方式进入 /usr/local/bin 目录:
绝对路径:$ cd /usr/local/bin
相对路径:$ cd ../../usr/local/bin
注:在进行目录切换的过程当中请多使用 Tab 键自动补全,可避免输入错误,连续按两次 Tab 能够显示所有候选结果。
建立名为 test 的空白文件,由于在其它目录没有权限,因此须要先 cd ~ 切换回用户的 /home/shiyanlou 目录:
$ cd ~
$ touch test
使用 mkdir(make directories)命令能够建立一个空目录,也可同时指定建立目录的权限属性。
建立名为“ mydir ”的空目录:
$ mkdir mydir
使用 -p 参数,可同时建立一个多级目录:
$ mkdir -p father/son/grandson
使用 cp(copy)命令复制一个文件到指定目录。将以前建立的“ test ”文件复制到“ /home/shiyanlou/father/son/grandson ”目录中:
$ cp test father/son/grandson
若是直接使用 cp 命令复制一个目录的话,会出现错误。要成功复制目录须要加上 -r 或者 -R 参数,表示递归复制:
$ cp -r father family
使用 rm(remove files or directories)命令删除一个文件:
$ rm test
忽略提示,直接删除文件,可使用 -f 参数强制删除:
$ rm -f test
跟复制目录同样,要删除一个目录,也须要加上 -r 或 -R 参数:
$ rm -r family
使用 mv(move or rename files)命令移动文件(剪切)。将文件“ file1 ”移动到 Documents 目录:
$ mkdir Documents
$ mv file1 Documents
将文件“ file1 ”重命名为“ myfile ”:
$ mv file1 myfile
要实现批量重命名可使用一个看起来更专业的命令 rename 来实现。它要用 perl 正则表达式来做为参数。
使用通配符批量建立 5 个文件:$ touch file{1..5}.txt
批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件:$ rename 's/.txt/.c/' *.txt
批量将这 5 个文件,文件名改成大写:$ rename 'y/a-z/A-Z/' *.c
前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。
查看以前从 /etc 目录下拷贝来的 passwd 文件,加上 -n 参数显示行号:
$ cat -n passwd
nl 命令,添加行号并打印,是个比 cat -n 更专业的行号打印命令。
使用 more 命令打开 passwd 文件:
$ more passwd
$ tail /etc/passwd
只看一行, 加上 -n 参数,后面紧跟行数:
$ tail -n 1 /etc/passwd
在 Linux 中文件的类型不是根据文件后缀来判断的,一般使用 file 命令查看文件的类型:
$ file /bin/ls
在 Linux 下面编辑文件一般咱们会直接使用专门的命令行编辑器好比(emacs,vim,nano)
$ vimtutor
召唤一双眼睛
$ xeyes
使用以下命令将它放到后台运行:
$ nohup xeyes &