【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题

前言:搞环境搞了三个晚上,解决了llvm的问题,成功下载“一生一芯”框架代码即南大计算机PA,成功编译运行。

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

PA0的讲解实验讲义

0. 什么是PA?

  PA:(Programming Assignment)。是一个小型项目,来自于南京大学计算机科学与技术系《计算机系统基础课程》,指导学生实现一个经过简化但功能完备的x86/mips32/riscv32(64)模拟器NEMU(NJU EMUlator), 最终在NEMU上运行游戏"仙剑奇侠传", 来让学生探究"程序在计算机上运行"的基本原理。
  PA包括一个准备实验(配置实验环境)以及5部分连贯的实验内容:

  • 图灵机与简易调试器
  • 冯诺依曼计算机系统
  • 批处理系统
  • 分时多任务
  • 程序性能优化
    做PA的终极目标是通过构建一个简单完整的计算机系统, 来深入理解程序如何在计算机上运行。只有去尝试理解并掌握计算机系统的每一处细节, 才能一步步完成PA。

1. 安装VMware+Ubuntu 20.04

1.1 ubuntu版本选择20.04

官方教程中说推荐Ubuntu 21.04,实际上并不适合我,我最终选择了Ubuntu 20.04,并有如下几点原因:
在这里插入图片描述

  1. 由于Ubuntu的21.04版本是去年的版本,由于它并非一个长期支持版本(LTS),自 2021 年 4 月 22 日正式发布,其支持周期仅有 9 个月时间,其支持周期也在今年正式结束。一般而言,选择LTSC版,这是长期服务版,会注重稳定性和修复错误。Ubuntu 20.04 正式版本已经发布,这是一款LTS版本,也就是长期支持版本,Ubuntu 长期支持版本官方一般支持为5年,而20.04版本会支持到2032年。
    在这里插入图片描述
  2. 更新版本的操作系统更“吃”电脑硬件性能,而我的笔记本比较旧了我怕会卡,所以不打算选择今年出来的22.04。
  3. 根据我玩树莓派的经验,一般高版本可以支持低版本的东西,而低版本不太支持高版本的东西。不过这个应该在学习初期没什么太大影响。
  4. 我的电脑上已经有了14.04(三年前跑TX2刷机用过)、16.04(TX2、jetson NANO刷机用过)、18.04(本科毕设部署了蜂鸟E203的相关工具)、还有一个CentOS7(芯王国大佬的IC_EDA环境)。打算把这个20.04可以作为我专门学习“一生一芯”的平台。
    在这里插入图片描述
  5. 助教曾推荐Ubuntu20.04

在这里插入图片描述

记录下安装成功这一美好的时刻-

参考链接:

1.2 安装VMtools——实现复制粘贴

安装步骤:VMware安装VMware Tools(ubuntu 20.04)
  系统安装完成之后,可以看到Ubuntu 20.04系统界面没有全屏展示,虚拟机和物理机之间也不能相互拖拽、粘贴、复制内容,下面就需要安装VMware工具,来实现上述功能。

  目前VMware工具存在两种:传统的VMware Tools和开源的open-vm-tools。VMware Tools经常会出现兼容性不好,系统之间复制文件失灵,并且安装时提示建议使用open-vm-tools,于是放弃vmware-tools的安装,尝试使用open-vm-tools
  open-vm-tools 是 VMware Tools 的开源实施,由一套虚拟化实用程序组成,这些程序可增强虚拟机在 VMware 环境中的功能,使管理更加有效。open-vm-tools 的主要目的是使操作系统供应商及/或社区以及虚拟设备供应商将 VMware Tools 绑定到其产品发布中。从Ubuntu14.04开始open-vm-tools 代替了官方 VMware Tools。

  需要注意的是

  1. 复制VMwareTools-10.3.22-15902021.tar.gz出来需要sudo权限
  2. 解压是-zxvf不是-zcvf
tar -zxvf  VMwareTools-10.3.22-15902021.tar.gz 

在这里插入图片描述

然后就可以复制粘贴啦

1.2 启动共享文件夹

u20.04如何与windows10设置共享文件夹
Windows与Ubuntu主机与虚拟设备直接复制粘贴得先开启VMwareTools。

这里有个坑爹的问题,就是我想复制粘贴,得安装VMware工具,但是因为没有换源所以无法下载,换源需要打很多字,所以需要复制粘贴。我的解决办法是,写好这些东西,直接通过共享文件夹在虚拟机里面打开

1.3 换源

  Ubuntu默认使用的是Ubuntu官方的软件源,远在国外,速度很慢,可以换成国内源。
参考链接:ubuntu20.04 国内软件源更新

2. 安装PA项目中所需的软件

2.1 安装Vim

Ubuntu 20.04 配置vim编辑器

sudo apt install vim

然后再配置一下

2.2 安装Git

教程:Ubuntu20.04安装Git

2.3 安装4.210版本Verilator

# Prerequisites:
sudo apt-get install git perl python3 make autoconf g++ flex bison ccache
sudo apt-get install libgoogle-perftools-dev numactl perl-doc
sudo apt-get install libfl2  # Ubuntu only (ignore if gives error)
sudo apt-get install libfl-dev  # Ubuntu only (ignore if gives error)
sudo apt-get install zlibc zlib1g zlib1g-dev  # Ubuntu only (ignore if gives error)
 
git clone https://github.com/verilator/verilator   # Only first time
 
# Every time you need to build:
unsetenv VERILATOR_ROOT  # For csh; ignore error if on bash
unset VERILATOR_ROOT  # For bash
cd verilator
git pull         # Make sure git repository is up-to-date
git tag          # See what versions exist
#git checkout master      # Use development branch (e.g. recent bug fixes)
#git checkout stable      # Use most recent stable release
git checkout v4.210  # Switch to specified release version
 
autoconf         # Create ./configure script
./configure      # Configure and create Makefile
make -j `nproc`  # Build Verilator itself (if error, try just 'make')
sudo make install

参考链接:Unbuntu21.04安装Verilator --4.210EDA开源仿真工具verilator入门1:安装和测试
在这里插入图片描述
成功!

2.4 安装实验 PAs所需工具

cd ~
sudo su
apt-get install build-essential    # build-essential packages, include binary utilities, gcc, make, and so on
apt-get install man                # on-line reference manual
apt-get install gcc-doc            # on-line reference manual for gcc
apt-get install gdb                # GNU debugger
apt-get install git                # revision control system
apt-get install libreadline-dev    # a library used later
apt-get install libsdl2-dev        # a library used later
####### apt-get install llvm
apt-get install llvm-11               # llvm project, which contains libraries used later

这里有个坑,官方讲解文档里,如果直接apt-get install llvm 会下载成10.0.0而本实验需要llvm-11。官方给的方法是,还是建议直接下成llvm-11。请见下节讲解。
在这里插入图片描述

3. 下载"一生一芯"框架代码

在这里插入图片描述

3.1 首先需要注册一个github账号

3.2 在github上添加SSH key

参考链接:在github上添加SSH key Github配置ssh key的步骤(大白话+包含原理解释)
在这里插入图片描述

3.3 获取一生一芯工程项目

可以先浏览一下子源工程:
  配置好SSHkey后,就可以git clone了。
  为了方便,我选择在根目录新建一个ysyx的文件夹用于存放一生一芯相关的东西。
在这里插入图片描述
操作:

mkdir ysyx
cd ysyx
git clone -b ysyx2204 git@github.com:OSCPU/ysyx-workbench.git

3.4 发出以下命令来执行git配置:

cd ysyx-workbench
git config --global user.name "22050047-Ren Jianjie" # your student ID and name
git config --global user.email "jiemsd@outlook.com"   # your email
git config --global core.editor vim                 # your favorite editor
git config --global color.ui true

3.5 修改README添加学号信息

  • 将PA讲义中的ics2022看成是ysyx-workbench
  • 修改ysyx-workbench/Makefile中的学号和姓名时, 请使用"一生一芯"的学号和真实姓名

3.6 激活实验环境

git branch -m master
bash init.sh nemu
bash init.sh abstract-machine
source ~/.bashrc

3.7 编译 NEMU

cd ~/ysyx/ysyx-workbench/nemu
make menuconfig

在这里插入图片描述

点击“右”键,选择EXIT然后YES

然后编译

make

这里会出现 #error Please use LLVM with major version >= 11
在这里插入图片描述

3.8 解决llvm版本的报错

解决问题参考链接:

  1. 官方文档,在使用git那里
  2. Linux相关总结-BUG及解决方案:3-llvm报错,no such file or dictionary
  3. sashimi-yzh的解答

在这里插入图片描述
  这个文档相当有迷惑性,我一度以为是要把这些全部都复制粘贴到/nemu/src/utils/filelist.mk里面。ps,请原谅我linux并不熟练的操作。

nano ~/ysyx/ysyx-workbench/nemu/src/utils/filelist.mk
# 这里是编写filelist.mk
# 首先得安装高版本的:sudo apt-get install llvm-11-dev

直接把文档里的llvm-config全部换成llvm-config-11

编写前
在这里插入图片描述
编写后

在这里插入图片描述

然后直接make,编译成功啦!!没有llvm报错

在这里插入图片描述

3.9 运行NEMU、gdb调试NEMU

cd ~/ysyx/ysyx-workbench/nemu
make run

在这里插入图片描述

#这里是gdb调试
make gdb
#如果想退出,就输入q再回车

在这里插入图片描述

3.10 编译成功后,发展追踪

编译成功后,源代码的变化将通过git. 类型

git log

在这里插入图片描述

后记

至此,利用了VMware安装了Ubuntu20.04成功;完成了 “一生一芯”实验环境配置;获得了PA的源代码;解决llvm版本问题!

  • 14
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
首先,确保你的服务器已经安装了所需软件包。可以使用以下命令检查软件包是否已安装: ``` dpkg -l pppoe kvm isc-dhcp-server ``` 如果软件包未安装,可以使用以下命令安装: ``` sudo apt-get update sudo apt-get install pppoe kvm isc-dhcp-server ``` 接下来,配置PPPoE: 1. 编辑 `/etc/ppp/pppoe-server-options` 文件,添加以下配置: ``` auth mtu 1492 mru 1492 require-chap require-mschap-v2 require-pap refuse-pap refuse-chap refuse-mschap lcp-echo-interval 30 lcp-echo-failure 4 ``` 2. 编辑 `/etc/ppp/chap-secrets` 文件,添加用户名和密码: ``` username * password * ``` 3. 编辑 `/etc/ppp/pap-secrets` 文件,添加用户名和密码: ``` username * password * ``` 4. 编辑 `/etc/ppp/pppoe-server` 文件,添加以下配置: ``` pty "/usr/sbin/pppoe -I eth0 -N 100 -e 1:1 -S /etc/ppp/pppoe-server-options" interface eth1 usergroup pppoe auth ``` 其中,`eth0` 是连接到Internet的接口,`eth1` 是连接到客户端的接口。 5. 启动PPPoE服务: ``` sudo /etc/init.d/pppoe-server start ``` 接下来,配置KVM虚拟机: 1. 安装KVM: ``` sudo apt-get update sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils ``` 2. 创建一个虚拟网络: ``` sudo virsh net-define /usr/share/doc/libvirt-bin/default.xml sudo virsh net-autostart default sudo virsh net-start default ``` 3. 创建一个虚拟机: ``` sudo virt-install --name demo --ram 1024 --disk path=/var/lib/libvirt/images/demo.img,size=10 --vcpus 1 --os-type linux --os-variant ubuntu16.04 --network bridge=virbr0 --graphics vnc,listen=0.0.0.0 --noautoconsole --import ``` 其中,`demo` 是虚拟机名称,`1024` 是虚拟机内存大小,`/var/lib/libvirt/images/demo.img` 是虚拟机磁盘路径,`10` 是虚拟机磁盘大小,`ubuntu16.04` 是操作系统版本,`virbr0` 是虚拟网络接口。 接下来,配置ISC DHCP服务器: 1. 编辑 `/etc/dhcp/dhcpd.conf` 文件,添加以下配置: ``` subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8, 8.8.4.4; } ``` 其中,`192.168.1.0` 是网络地址,`255.255.255.0` 是子网掩码,`192.168.1.100` 和 `192.168.1.200` 是IP地址范围,`192.168.1.1` 是默认网关,`8.8.8.8` 和 `8.8.4.4` 是DNS服务器。 2. 启动ISC DHCP服务器: ``` sudo /etc/init.d/isc-dhcp-server start ``` 现在,你已经成功配置了PPPoE、KVM虚拟机和ISC DHCP服务器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值