#问题阐述 最近安装了很多的软件,总是为了折腾linux而为的,今天晚上不小心把Bochs安装完毕,在此发文纪念一下了。
由于安装这个这个bochs中间因为网站的问题而搁置了好几天,但在linux系统下安装bochs总不能少了那几个软件包的支持,具体是哪几个我忘了。 #步骤
1.首先到bochs.sourceforge.net下载bochs源代码包并解压缩。
2.然后要安装五个软件,否则make,make install时会失败。
apt-get nstall build-essential xorg-dev bison libgtk2.0-dev libtool libx11-dev xserver-xorg-dev
3.进入所在目录,开始配置
./configure –enable-debugger –enable-disasm
两个enable分别表示启用bochs调试和反汇编。
4.make
5.make install
这只是把软件安装上了,最重要的一步还没做:配置bochs的文件。 由于我把bochs文件解压到用户目录下,所以该配置文件.bochsrc就可以放在用户目录下
##tips 网上有教程说配置liunx0.11内核,关键是我不知道这有什么作用,下面是linux0.11网址 linux 0.11
6.配置bochs启动文件
#how much memory the emulated will have
megs: 32
#filename of ROM images
romimage: file=/home/yubo/bochs/bios/BIOS-bochs-latest
vgaromimage: file=/home/yubo/bochs/bios/VGABIOS-lgpl-latest
#vga: extension=vbe
#what disk image will be used
floppya: 1_44=/home/yubo/a.img,status=inserted #注意路径一定要写全,我这里把镜像文件放在了用户目录下的中,下同
#floppyb: 1_44=/home/yubo/bochs/linux0.11/rootimage-0.11-20040305,status=inserted #注意路径一定要写全
#choose the boot disk
boot: floppy
log: bochsout.txt
#disable mouse
mouse: enabled=0
看到没,我们对Bochs的控制全在这里,包括映像文件的路径和启动顺序,至于a.img是在怎么来的,请看下面的东东,我们将配置文件写好以后,使用命令
bochs
会出来选项,直接回车(就是选择6),然后弹出一个窗口,在原来窗口的提示内键入
c
这时你再看模拟器窗口,啊,整个世界开朗了。 #Bochs的使用 其实在上面的安装过程中,我可能遗漏了很多组建,默认安装Bochs及其组件可以使用以下命令:
sudo apt-get install vgabios bochs bochs-x bximage
当然,首先推荐使用源码安装这样可以设置一些自己想要的功能,比如调试。
“计算机”安装好了,我们接下来应该怎么办呢?对了,安装硬盘或者软盘,你总得让计算机启动吧,就是使用__bximage__命令。
bximage:
出现以下界面,
yubo@debian:~$ bximage
========================================================================
bximage
Disk Image Creation / Conversion / Resize and Commit Tool for Bochs
$Id: bximage.cc 12364 2014-06-07 07:32:06Z vruppert $
========================================================================
1. Create new floppy or hard disk image
2. Convert hard disk image to other format (mode)
3. Resize hard disk image
4. Commit 'undoable' redolog to base image
5. Disk image info
0. Quit
Please choose one [0] 1
Create image
Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd
Choose the size of floppy disk image to create, in megabytes.
Please type 160k, 180k, 320k, 360k, 720k, 1.2M, 1.44M, 1.68M, 1.72M, or 2.88M.
[1.44M]
What should be the name of the image?
[a.img]
Creating floppy image 'a.img' with 2880 sectors
The following line should appear in your bochsrc:
floppya: image="a.img", status=inserted
这时在当前目录下产生了一个 a.img,这就是我们需要的软盘映像(自己想把img文件的格式学习一下,结果网上的资料不是很多),书上说映像文件是按字节复制,记住,a .img只是一个软盘,没有任何东西,我们接下来要把编译的二进制文件(引导扇区)写进软盘里
yubo@debian:~$ dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc 记录了1+0 的读入 记录了1+0 的写出 512字节(512 B)已复制,9.3823e-05 秒,5.5 MB/秒
稍微解释一下这个命令,if是input file的缩写,of是out file的缩写,也就是目标文件,bs是文件的大小,count不是很清楚,conv=notrune是不要截断. 注意路径问题就行
nasm boot.asm -o boot.bin
org 07c00h ;load first instructor notify compile
mov ax,cs
mov ds,ax
mov es,ax
call DispStr ;call char functions
jmp $; loop
DispStr:
mov ax,BootMessage
mov bp,ax
mov cx,16
mov ax,01301h
mov bx,000ch
mov dl,0
int 10h
ret
BootMessage: db "hello,OS world!"
times 510-($-$$) db 0
dw 0xaa55
简单介绍下这个文件的意思,引导扇区,是从0面0磁道1扇区到0xAA55,之间应包含少于512字节的执行码,一旦BIOS发现了引导扇区,就会将这512字节的内容装载到内存地址0000:7c00处,然后跳转到0000:7c00处将控制权交给这段引导代码。
近来在专业课的学习中,时不时碰到周期的字眼,借用这个时间将这几个概念整理一下。
在计算机中为了便于管理,常把一条指令的执行过程划分为若干个阶段,每个阶段完成一项工作。比如,与微机系统有关指令命令,如取指令,读、写存储器等,每一项操作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期,通常一个机器周期由若干S周期(状态周期)组成。
通常用内存中读取一个指令字的最短时间来规定CPU周期。
取出并执行一条指令的时间,一个指令周期由若干CPU周期构成。
又称为振荡周期,是处理操作的最基本的单位。
把振荡脉冲的周期定义为节拍(用p表示),振荡周期经过二分频后定义为状态,一个状态就包含两个节拍。
两个振荡周期(时钟周期)组成一个状态周期。
也就是一次通过总线访问存储器或I/O端口的时间,一般一个总线周期包括4个时钟周期,这4个时钟周期又分别称为T1状态、T2状态、T3状态、T4状态
layout: post category: network title: “虚拟机与主机的连接方式” —
主机与虚拟机的连接方式有 bridged(桥连),NAT(网络地址转换模式)和host-only(主机模式),不同的连接方式对应不同的网卡。
在Linux下面ifconfig显示的eth0是第一个网卡ip(eth就是ethenet以太网,这里指网络接口)
1. 桥连方式(bridged)
在桥连方式下你可以把虚拟出来的操作系统看成一部独立的主机,你需要手工为虚拟系统配合ip地址、子网掩码、而且还要和宿主机器处于同一网段,这样虚拟机才能和宿主机器进行通行。从名字上讲,我们可以把宿主系统看作一座桥,连接的就是虚拟机器,利用这种方式连接的机器,就像连接在同一 hub的两台机器。如果你想利用虚拟机的机器提供网络服务,就应该选择 bridged方式。这种方式最简单,直接将虚拟网卡接到一个物理网卡上,和linux下一个网卡绑定两个不同的地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个ip的能力。
2. 网络地址转换(NAT)
说的简单一点,这种方式就是利用虚拟机给虚拟系统(DHCP服务器)给虚拟系统分配一个可上网的ip,简单明了,还可以实现 Host Os和Guest Os的双向访问(这句话明显有错误),但与Host Os同一网段的其他机器无法像桥连方式那样轻松访问Guest Os。
你可以简单的认为虚拟机中的数据都是由宿主系统提供的,虚拟机可以通过网络访问主机,主机无法通过网络访问虚拟机。
ip:10.0.2.15
网关: 10.0.2.2
DNS: 10.0.2.3
最近在折腾虚拟机,因为两个机器之间的访问而忙的焦头烂额,在弄明白主机与虚拟机之间的联系方式后,有些问题还是让我心存疑惑。其中之一,我就纳闷是不是因为我的虚拟机的防火墙没有关闭,导致主机ping不动主机,于是乎,随手google了一下,将这个问题记录一下。奥,忘了,我的宿主系统及虚拟系统是Debian.所有操作是在root权限执行的。
whereis iptables
sudo iptables -L
如果你第一次安装配置 iptables,会得到如下信息, ` Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination `
最近因为在整U-boot的东西,所以有很多操作需要记录下来。
这篇文章总结性的介绍了u-boot的使用,这里就简单说下tftp的使用.
在linux主机上安装一下软件:
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
此时的默认tftp的路径存在于: /srv/tftp/将文件放置于这个地方接下来可以做一些事情了。
最近又想折腾 LFS,在debian系统上安装了个 VirtualBox,里面也安装了 linxu,突然想到要使用文件传输的功能,最直接的想到了 ftp ,这里简单把安装过程记录一下。 首先,
apt-get install vsftpd
然后配置vsftpd
vi /etc/vsftpd.conf
打开后找到anonymous_enable=YES替换成 anonymous_enable=NO
找到local_enable=YES, 将前面的#去掉,找到 Write_enable=NO,将前面的#去掉,改成 YES
在配置文件的最后一行加上chroot_local_user=YES
接下来创建用户组
groupadd ftp
创建用户
useradd -g ftp -d /xx/xx
后面的目录是指定用户登录到哪个目录,然后输入密码两次
passwd user
重启 vsftpd服务
invoke-rc.d vsftpd restart
只能下载的anonymous用户和能上传、下载的ftpuser用户,登录都是进入/var/ftp目录,且无法离开该目录(被chroot),ftpuser可以在 /var/ftp/pub目录中建立目录和上传文件,匿名用户下载限速50kb/s,ftpuser限速500kb/s。可联接的最多客户数为100,每ip可联接的最多客户数为5
## /etc/vsftpd.conf
<pre>
# 接受匿名用户
anonymous_enable=YES
# 匿名用户login时不询问口令
no_anon_password=YES
# 接受本地用户
local_enable=YES
# 可以上传(全局控制).若想要匿名用户也可上传则需要设置anon_upload_enable=YES,若想要匿名用户可以建立目录则需要设置anon_mkdir_write_enable=YES.这里禁止匿名用户上传,所以不设置这两项.
write_enable=YES
# 本地用户上传文件的umask
local_umask=022
# 使用上传/下载日志,日志文件默认为/var/log/vsftpd.log,可以通过xferlog_file选项修改
xferlog_enable=YES
# 日志使用标准xferlog格式
xferlog_std_format=YES
# login时的欢迎信息
ftpd_banner=Welcome to KingArthur's FTP service.
# 设置的话将覆盖上面的ftpd_banner设置,用户login时将显示/etc/vsftpd/banner中的内容
banner_file=/etc/vsftpd/banner
# 为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容
dirmessage_enable=YES
# 本地用户login后所在目录,若没有设置此项,则本地用户login后将在他的home目录(/etc/passwd的第六个字段)中.匿名用户的对应选项是anon_root
local_root=/var/ftp
# 设置为YES则下面的控制有效
chroot_list_enable=YES
# 若为NO,则记录在chroot_list_file选项所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被chroot在登录后所在目录中,无法离开.如果为YES,则所记录的用户将不被chroot.这里选择YES.
chroot_local_user=YES
# 若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项
userlist_enable=YES
# 若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的请求.
userlist_deny=NO
# 注意!!!vsftpd还要检察/etc/vsftpd.ftpusers文件,记录在这个文件中的用户将无法login!!
# 服务器以standalong模式运行,这样可以进行下面的控制
listen=YES
# 匿名用户的传输比率(b/s)
anon_max_rate=51200
# 本地用户的传输比率(b/s)
local_max_rate=512000
# 可接受的最大client数目
max_clients=100
# 每个ip的最大client数目
max_per_ip=5
connect_from_port_20=YES
tcp_wrappers=YES
pam_service_name=vsftpd
</pre> 下面是我的/etc/vsftpd.user_list
ftpuser
anonymous
/etc/vsftpd.ftpusers可以使用系统自带的文件 /etc/vsftpd.chroot_list内容为空
接着建立系统用户ftpuser,将他加入ftp组并将/etc/passwd中他的记录的最后一个字段改成/sbin/nologin(禁止本地登录). 设置/var/ftp的所有者和所有组为root,权限为755 设置/var/ftp/pub的所有者为root,所有组为ftp,权限为775
如果需要使本地用户ftpput可以login,只需要将他加入/etc/vsftpd.user_list,要使他可以上传,只需将他加入ftp组. 接着我们可以在/var/ftp下的各个目录(包括/var/ftp)下建立.message文件,这样用户进入这个目录时vsftpd将显示. message的内容,你可以在这里面写上欢迎信息或者注意事项等等.另外可以编辑/etc/vsftpd/banner,建立login时的欢迎信息, 让你的ftp更加个性化.
最近在看于渊编写的«自己动手写操作系统»,里面编写基于 IA32的保护模式下 COM文件,于是乎下载FreeDos iso并在 VirtualBox 安装,其详细手册请参阅
使用网络
在活动界面下,键入 auto 打开 AUTOEXEC.BAT 找到REM LH PCNTPK INT=0X60,将REM去掉,只剩下后面的其他
配置 FTP服务
`copy C:\FDOS\DOC\MTCP\SAMPLE.CFG C:\FDOS\MTCP.CFG
edit C:\fdos\mtcp.cfg`
激活以下选项
`MTU 1472
ftpsrv_password_file c:\fdos\ftppass.txt
ftpsrv_log_file c:\fdos\ftpsrv.log
FTPSRV_FILEBUFFER_SIZE 16
FTPSRV_TCPBUFFER_SIZE 16
FTPSRV_PACKETS_PER_POLL 2`
然后创建FTP服务器的密码
edit C:\fdos\ftppass.txt
编写这个文件时应该按照以下格式 user password [none] [any] all 我的就是 xx xx [none] [any] all
顺便提一下; 我的虚拟机里 FreeDos的ftp的端口是 21 这里用的是NAT连接方式real ip is 10.0.2.15, 并且这种方式在后来的 ftpsrv不可用,至于为什么我 也是暂不得知。 后来我改用 桥连 ftpsrv 居然可用,真是不可思议。 后来的ip是 192.168.1.103,我第一次用 桥连 没有成功,当时是在 CMCC-EDU的环境下开启的,后来我在实验室连接路由器可以,是不是和 这个有关呢?
开始DHCP客户端
首先用auto打开
然后去除"DHCP"前的REM。
一般的ip地址就在 C:\fdos\mtcp.cfg中
开始FTP服务
ftpsrv
然后在 宿主机 上就可以使用 ftp软件进行文件传输了。
本着够用即可的原则,就 freedos的文件交换先介绍到这。 至于安装FreeDos,还是到官网上找帮助手册。