PA0 REPORT

来源:互联网 发布:家具三维设计软件 编辑:程序博客网 时间:2024/05/16 16:18

南京航空航天大学 计算机科学与技术系学院 计算机组成原理 课程实验

1 PA0 - 世界诞生的前夜:开发环境配置

1.1 Installing a GNU/Linux VM

Installing VirtualBox

    1)下载、安装VirtualBoxhttps://www.virtualbox.org/wiki/Downloads):选择VirtualBox 5.0.6 for Windows hosts x86/amd64

 

Installing a GNU/Linux VM

    1)下载Debianhttps://www.debian.org/releases/stable/debian-installer/):选择netinst CD image -> i386

 

Creating a VM

1)启动VirtualBox

2)新建

3)名称(我自定义为HWAK)、类型(Linux)、版本(Debian32 bit))-> 下一步

4内存大小默认1024MB,下一步

5)现在创建虚拟硬盘,创建

6VDIVirtual Box)磁盘镜像,下一步

7)储存在物理硬盘上,动态分配空间,下一步

8)我将虚拟机放在D盘的Virtual Box文件夹中,虚拟硬盘大小默认8GB,创建

 

 

Loading Debian installation image(全部操作在断网状态下进行)

1)启动虚拟机定位到debian-8.2.0-i386-netinst.iso ->启动

   Graphical install

2Select a languageEnglish->Chinese

3)Select a location -> China

4Select the keyboard layout -> American English

5Configure the network :等待

   Hostname->保留默认设置

   Domain name->保留默认设置

6Set up users and passwords :

       Root password

       Full name for the new user->(此处我设置成eagle

       Username for your account->(我也设置为eagle因为在完成PA0之前没有看教学视频,名称会在之后改为自己的拼音yingyizhou

       Choose a password for the new user:

    7Configure the clock,等待

    8Partition disks :

       Partitioning method:选择Guided->use entire disk

       Select disk to partition->create

       Partition scheme->All files in one partition

       Overview->Finish partitioning and write changes to disk->continue

       Write the changes to disk->Yes

9Install the base system:等待

   10Configure the package manager:

   Debian archive mirror country->不需要所以->Go back

   Continue without a network mirror?->Yes

   11Select and install software:等待

       Configuring popularity-contest: 保留默认设置

       Software selection:select Standard system utilities

   12Install the GRUB boot loader on a hard disk

       Install the GRUB boot loader to the master boot record?->Yes

       Device for boot loader installation->/dev/sda

   13Finish the installation->continue

   14)系统重启

1.2 First Exploration with GNU/Linux

Debian Login:

1)登录虚拟机,发现系统又重新进入Debian Install界面,于是又重新安装了一次,之后再去删除镜像文件。但是发现没有镜像文件之后虽然再次进入系统不会进入Install界面,但是1.3Installing More Tools的几项步骤就无法进行。于是我又把镜像文件恢复,在进行完成1.3实验相关步骤之后再将文件删除。

2)第二个神奇的错误是:

                  

选择No,然后将相应的文件删除,再次启动Virtual Box管理器时就不会跳出这个窗口了。

Question:

     1Where is GUI

        Debian是没有用户界面GUI的,这使我很不习惯。但这并不是初次接触,大一的时候在计算机基础实验课上,老师有讲授有关虚拟机Ubuntu的一些相关操作。但是相比于UbuntuDebian更加专业化。的确,Ubuntu的界面与Windows看齐,非常易于使用,但相对于Debian来说可能不太稳定。作为小白我也不太知道根本的区别,各自的优缺点在哪。

        Why use a command line instead of Windows?

        首先去除了用户界面就简洁化了许多。用过阅读理解到,我认为就是命令步骤的简化方便化以及功能的强大化。Linux让我的通过命令控制窗口,一切的背后本质都是代码,我觉得这是更加深层的越过界面本质的东西吧,的确我们并不需要通过界面去编辑一张风景照,这不是我们的工作。

     2Why Windows is quite "fat"?

        安装一个Windows操作系统通常需要更多的磁盘空间以及内存。而且有图形界面,许多软件还会有内存驻留。

        Why Debian so slim?

        Debian 内存驻留程序比windows,同时Linux于硬件要求比较低,可以安装随便。Linux对于系统内存控制比较好,磁盘要求要低,而对于服务器要求要高,而且可以动态分配空间。

     3Why executing the "poweroff" command requires superuser privilege?

       强行关闭可能会导致虚拟机出现各种问题,保险起见还是用poweroff命令正常关闭比较好,比较保险。

1.3 Installing More Tools

 

Installing tools from the Debian image

1就是之前将镜像文件先恢复,然后在VM界面上方菜单->设备->分配光驱->选择虚拟盘->在文件目录下找到debian-8.2.0-i386-netinst.iso 单击。

2)在VM界面输入命令:apt-cdrom add

3)当看到Please insert a Disc in the drive and enter时按回车键,等待...

Sudo:

1apt-get install sudo

2addgroup eagle sudo

3exit

4sudo poweroff检验成功

Questions:

1)由于没有删除镜像文件,在关闭虚拟机再次开启的时候系统又进入了Install界面,于是一切有重新开始...

 

Vim:

1)su进入root界面

2)apt-get install vim

 

Ssh

    1su输入密码进入root界面

2apt-get install openssh-server,等待

   成功截图:

 

 

Installing tools from the network mirrors:

1)设备->分配光驱->移除虚拟盘

2)删除镜像文件

 

Checking network state:

1)ping www.baidu.com -c 4

                             

  

 

Learning vim:

1)Vimtutor

 

2)vim test 创建文件test,按i并可以进行编辑,Esc然后:加wq!回车保存退出等等。

 

 

Some games operated with vim

一些游戏截图:

 

 

 

The power of vim:

1)按顺序按下:i1<ESC>q1yyp<C-a>q98@1

   创建文件截图:

   

2)按顺序按下:<C-v>24l4jd$p以及<C-v>24l99jd$p

   操作解释:

   <C-v>进入拷贝可视模式

   24l是选择从第一个字母开始的24个字母,根据需要在选择之后还可以通过上下左右方

   向键或者ijkl键来调整。4j就是光标继续向下选择4行。

   d是删除的意思

   d$是删除当前字符之后的所有字符

   P是在当前光标后粘贴

   修改文件截图:

   修改前:

 

 

修改后:

 

 

 

 

Adding APT sources:

1)sudo vim /etc/apt/sources.list

2)修改文件保存

3)Sudo apt-get update

但是出现如下错误:

 

于是我把ftp行注释掉就正常了,应该是网络的原因:

   

 

 

Installing tools for PAs:

1apt-get install build-essential    # build-essential packages, include binary utilities,gcc, make,and so on

2apt-get install gcc-doc        # GCC document

3apt-get install gdb            # GNU debugger

4apt-get install git            # reversion control system

5apt-get install time       # we use the GNU time program instead of the build-in one in bash

 

1.4 More Exploration

Configure vim:

1)sudo vim /etc/vim/vimrc

2)输入个性化设置代码并保存

 

Write a "Hello World" program under GNU/Linux:

1)vim hello.c

2)输入C语言程序代码并保存退出

3)Gcc hello.c -o hello并回车

4)输入./hello运行:

       

       (注这事之后的截图,用户名已经是yingyizhou了)

5)编写c++程序:.c改为.cppgcc改为g++

 

Learn to use GDB

GDB是一个由GNU开源组织发布的、UNIX/Linux操作系统下的、基于命令行的、功能强大的程序调试工具,下面是网页上找到的一些简单教程:

 命令

 解释

 示例

file <文件名>

加载被调试的可执行程序文件。
因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。

(gdb) file gdb-sample

r

Run的简写,运行被调试的程序。
如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。

(gdb) r

c

Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。

(gdb) c

b <行号>
b <函数名称>
b *<函数名称>
b *<代码地址>

d [编号]

b: Breakpoint的简写,设置断点。两可以使用行号”“函数名称”“执行地址等方式指定断点位置。
其中在函数名称前面加“*”符号表示将断点设置在由编译器生成的prolog代码处。如果不了解汇编,可以不予理会此用法。

d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。

(gdb) b 8
(gdb) b main
(gdb) b *main
(gdb) b *0x804835c

(gdb) d

s, n

s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
n: 执行一行源程序代码,此行代码中的函数调用也一并执行。

s 相当于其它调试器中的“Step Into (单步跟踪进入)”
n 相当于其它调试器中的“Step Over (单步跟踪)”

这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。

(gdb) s
(gdb) n

si, ni

si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。

(gdb) si
(gdb) ni

p <变量名称>

Print的简写,显示指定变量(临时变量或全局变量)的值。

(gdb) p i
(gdb) p nGlobalVar

display ...

undisplay <编号>

display,设置程序中断后欲显示的数据及其格式。
例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令
“display /i $pc”
其中 $pc 代表当前汇编指令,/i表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。

undispaly,取消先前的display设置,编号从1开始递增。

(gdb) display /i $pc

(gdb) undisplay 1

i

Info的简写,用于显示各类信息,详情请查阅“help i”

(gdb) i r

q

Quit的简写,退出GDB调试环境。

(gdb) q

help [命令名称]

GDB帮助命令,提供对GDB名种命令的解释说明。
如果指定了命令名称参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。

(gdb) help display

 

 

RTFM:嗯...要学会自己查阅学习手册,锻炼自己的学习能力...

 

 

1.5 Logging in via SSH

Creating a Host-only Network:

    1)关闭VM

2)找到菜单下的设置标志,单击打开设置界面

3)选择左边菜单中的网络

4)选择网卡2

   连接方式:仅主机(Host-Only)网络

   界面名称:VirtualBox Host-Only Ethernet Adapter

5OK

6)在Virtual Box管理器界面找到菜单->管理->全局设定

7)选择->网络->仅主机(Host-Only)网络

8)在窗口右端有一个编辑仅主机(Host-Only)网络的标志,单击

9)主机虚拟网络界面设置:

   IPv4 地址:192.168.56.1

       IPv4 网络掩码:255.255.255.0

   10DHCP服务器:

   服务器地址:192.168.56.100

   服务器网络掩码:255.255.255.0

   最小地址:192.168.56.101

   最大地址:192.168.56.245

   11OK

   12)打开虚拟机,运行:sudo ifconfig eth1但是出现错误信息

   13sudo vim /etc/network/interfaces

        在文件末尾输入:

        auto eth1

        iface eth1 inet dhcp

14sudo /etc/init.d/networking restart

    Sudo ifconfig eth1:

      

 

Host Configuration:

1)sudo vim /etc/ssh/sshd_config

       确保Port 22.ListenAdress 0.0.0.0以及Protocol 2之前的#去掉,修改并保存。

       

2)查看虚拟机中的IP

       sudo ifconfig

 

3)win7 cmd中查看本地连接ipv4地址:

      

4)然后互相通过ping指令看看是否能够连通:

   

   

 

For GNU/Linux and MAC users->For Windows users:

1)下载putty.exe

2)登录

 

 

 

Installing tmux:

1)sudo apt-get install tmux

2)Cd~

3)Vim .tmux.conf并加上教程中的代码

4)运行结果如下:

   <C+b>”水平分割一个窗口

       <C+b>%竖直分割一个窗口

       <C+b>+方向键切换窗口等等

               

 

 

Tings behind scrolling:

Question:

why the original terminal can not be scrolled?

1)我认为命令是无止尽的,不像网页等有尽头可以通过滚动条来实现。可以通过上下方向键来访问曾经输入了什么命令。不然的话容易出错吧。而且Linux了来就是键盘控制为主,可以通过一些快捷键以及与方向键的配合实现滚动。

 

 

How doestmux make the terminals scrollable? And last, do you know how to implement a scroll bar?

1)滚屏要进入copy-mode,即前缀+[,然后就可以用上下键来滚动屏幕,配置了vi快捷键模式,就可以像操作vi一样来滚动屏幕,非常的方便。退出直接按‘q’键即可。(目前没有实现)

2)目前是快捷键Shift+PgUpShift+PgDn实现上下的滚屏

1.6 Transferring Files Between host and VM

Host Configuration->For Windows users:

1)下载psftp.exe

2)打开并输入:open 192.168.56.101

Have a try:

1)New a text file with casual contents in the host and transfer the text file to the VM:

   在自定的路径下创建一个txt文档:自定义为名为psftp.txt的文档,然后输入:

   put + 相应路径及文件   

 

 

2)Modify the content of the text file in the VM:

   ls -a查看所有文件然后

   Vim psftp.txt 编辑文件保存并退出:

   

 3Transfer the modified file back to the host.

   Get + 相应文件在虚拟机中的目录

   

 4)文件传输成功:

   

 

 

1.7 Acquiring Source Code for PAs

Getting Source Code

1)cd~

2)git clone https://github.com/NUAA-ICS/ICS

      

 

Compiling and Running NEMU

1)sudo apt-get install libreadline-dev

2)输入相应的命令:

       git config --global user.name "141220000-Zhang San"    # your student ID and name

   git config --global user.email "zhangsan@nuaa.edu.cn"    # your email

   git config --global core.editor vim            # your favorite editor

   git config --global color.ui true

 

Development Tracing

1)git init

2)查看git入门教程:

3)Git add hello.c

4)git log

5)Git status

6)Git commit

   

 

 

修改用户名:

由于之前做PA0的时候没有下载视频观看,导致之后不得不修改用户名。步骤如下:

1)首先登陆VM

2)su 并输入相应的根密码进入根界面

3)vim /etc/sudoers.tmp

   将语句root ALL=(ALL:ALL) ALL下的用户名改为yingyizhou:

   yingyizhou ALL=(ALL:ALL) ALL

   保存退出

   

4)重新用新的用户名登录即可:

  

0 0
原创粉丝点击