实现操作系统(1) Bochs的安装配置&最简单的“操作系统”

动手编写操作系统(1):初识Bochs   下面正式进入实操环节,也就是动手搭建操作系统。看着眼前的Windows/Linux/Mac OS/etc,相信绝大多数同学都会感到兴奋和迷茫:这么大个操作系统,从哪里开始呢?古人有云:“工欲善其事,必先利其器。”我们得以发挥自己聪明才智,进行学习研究创造的前提,是拥有一个好的工具。它能让我们在巨人的肩膀上欣赏与创造。在这里,我想表达对所有在相关领域为后人的方便贡献自己汗水的前辈的衷心的感谢与钦佩。   话不多说,接下来我们正式切入正题:配置调试操作系统所需的环境。 C/C++编译器,这里采用gcc/. 阅读详情
AI摘要

本文介绍如何使用Bochs模拟器从零开始搭建一个简易的操作系统。包括Bochs的安装配置、创建软盘映像、编写及编译简单的汇编语言程序,并将其加载到虚拟机中运行。

Bochs:为多平台设计的x86架构模拟器/虚拟机

材料:
1、Ubuntu16.04LTS
2、Bochs-2.6.8

一、安装步骤:
1、到官网上下载Bochs-2.6.8.tar.gz 下载链接

下载源码而不直接使用sudo apt-get install vgabios bochs bochs-x bximage命令行安装是因为我们还要安装Bochs的调试功能

2、解压下载好源码:

tar zxvf bochs-2.6.8.tar.gz

3、进入解压后的目录,然后执行命令行:

./configure --enable-debugger --enable-disasm
make
sudo make install

注意:
第1条是开启Bochs的调试和反汇编功能;
安装过程中可能出现一些问题,一般都是一些包和引用没有安装,下面是我遇到的几个问题及解决方案:

错误1:fatal error: X11/Xlib.h: No such file or directory
解决方案:sudo apt-get install libx11-dev

错误2:fatal error: X11/extensions/Xrandr.h: No such file or directory
解决方案:sudo apt-get install xorg-dev

安装成功后,在终端输入bochs即可看到bochs的画面了:
Bochs在终端显示的界面

二、配置Bochs
安装好Bochs后,接下来就需要对Bochs进行配置了,如果你不自己写配置文件的话,执行bochs命令时Bochs会自己在当前目录顺序寻找以下文件作为默认配置文件:
.bochsrc
bochsrc
bochsrc.txt
bochsrc.bxrc(仅对Windows有效)

我们可以通过ls -a命令看到Bochs安装目录下的所有文件:
Bochs安装目录下所有文件

然后可以进入到.bochsrc文件里面查看自带的配置信息

在这里我们自己创建一个名叫bochsrc的配置文件,来告诉Bochs我们想要的虚拟机是什么样子的,下面就是我的配置文件:

#################################################################
# Bochs的配置文件
# Configuration file for Bochs
#################################################################

# how much memory the emulated machine will have
megs: 32

# filenameof ROM images
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest

# which disk image will be used 这个是启动软盘,我们虚拟出来的那个a.img
floppya:1_44=a.img, status=inserted

# choose the boot disk 确定启动方式
boot: floppy

# where do we send log messages?
log: bochsout.txt

# disable the mouse
mouse: enabled=0

# enable key mapping ,using US layout as default
keyboard:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map

注意这里要确保romimage和vgaromimage这两项的路径是正确的,不然虚拟机启动时会提示“couldn’t open ROM image file”的错误,还有Bochs的版本不一样的话,键盘设置的方式也不太一样。

三、最简单的操作系统
那么接下来,我们就要开始写一个最简单的操作系统了,这个代码全由汇编完成,而且只有不到20行:

    org    07c00h
    mov    ax, cs
    mov    ds, ax
    mov    es, ax
    call   DispStr
    jmp    $
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

用NASM编译一下这段代码:

nasm boot.asm -o boot.bin

k然后在boot.asm的目录下我们可以看到多了一个512字节的boot.bin文件,这个文件就要被我们写入到软盘里面。这里当然你可以写入到一个真实的空白软盘上,但是现在基本上都已经见不到软盘了吧,所以我们这里就用Bochs来虚拟出所需要的软盘。

四、Bochs的使用
1.创建软盘映像:
输入sudo bximage,然后在问到要创建hd还是fd的时候,输入fd,之后就一直回车默认就行了
bximage过程

2.这下我们通过虚拟,有了计算机,又有了软盘,是时候将我们刚刚编译好的引导扇区写进软盘了,Linux下自带了dd命令可以很方便地进行软盘读写:

sudo dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

软盘写入

一切准备就绪,是时候进行启动Bochs了,进入到你的boot.bin所在目录下,然后在终端输入命令:

sudo bochs -f bochsrc

注意:这里要特别注意bochsrc就是我们第二步写的那个配置文件,因为安装Bochs成功之后可以在任意地方使用bochs命令了,但是要使用我们的配置文件bochsrc的话就需要加上绝对路径,比如非Bochs安装目录下运行bochs的命令如下:

sudo bochs -f /home/bychen/downloads/bochs-2.6.8/bochsrc

输入回车,
(注意:如果这里出现是一个什么都没有的一片黑色的界面的话,那是因为我们这里是带调试模式的Bochs,回车之后还需要一次回车,然后在出现Bochs提示符之后输入“c”,再次回车)
这里写图片描述

看到Bochs界面上出现的“Hello, OS world!”
这就是一个最简单的操作系统了~
最简单的操作系统

BOCHS模拟器配置和使用 BOCHS模拟器配置和使用 BOCHS是一个轻量级小型系统模拟器。它可以用来开发引导模块,测试系统。 BOCHS一开始上手不容易配置。 简单的配置 megs: 32 romimage: file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest vga: extension=vbe, update_freq=15 floppya: 1_44=a.img, status=inserted #ata0-master 阅读详情

相关推荐

操作系统实验1 第1&2章 macOS安装bochs

《ORANGE’S:一个操作系统的实现》 折腾了一下午,尝试brew安装、编译安装,遇见各种配置错误、参数错误、乱七八糟的错误后得出的可行策略 版本: macOS Mojave 10.14.5 bochs2.6.9 安装bochs $ brew install bochs 书中提供的代码 cd到/…/chapter2/linux/文件夹下 编译boot.asm $ nasm boot.as...

CoCoNutNut的博客 963

windows下bochs调试环境的创建

参考dlxlinux的配置文件 和 一个操作系统的实现一书 来配置bochs 配置文件如下:  ############################################################### # bochsrc.txt file for DLX Linux disk image. #######################################

思考的智慧,知识源于思考 2097

【从头开始写操作系统系列】使用 Bochs 调试操作系统

在上一篇文章《环境搭建以及第一个Hello-World》中,笔者讲了如何安装 bochs 以及运行一个 helloworld 操作系统,但是使用上一篇文章中的方法安装的 bochs 是不支持调试的,下面我讲介绍如何使用源码编译的方法来安装 bochs,以及使用 bochs 来调试操作系统。 编译安装 Bochs 下载 bochs 源码 http://sourceforge.net/projects/

远航 | FIBOS.io 8217

在UBUNTU上安装基于bochs的 xv6

第一个步骤——安装bochs: 在安装bochs时需要从官网x下载tar包 解压后, 首先配置configure, ./configure --prefix=/usr/local/bin/bochs –enable-debugger –enable-disasm --enable-x86-debugger --with-x --with-x11 (–enable-debugger和 –enable...

weixin_30565199的博客 502

bochs-2.6.8.tar.gz

bochs-2.6.8.tar.gz 源码包 适用于 linux 操作系统

骁龙X Elite笔记本重装Windows 11 Arm64系统完整指南与避坑手册

UEFI安全启动和Arm64架构是理解现代计算设备系统部署的基础。UEFI取代传统BIOS,提供了更安全的启动环境和模块化固件接口,而Arm64架构则以其高能效特性,在移动和新兴PC领域日益重要。其技术价值在于为设备带来更快的启动速度、更强的安全防护以及更优的功耗表现。在应用场景上,这直接关系到搭载高通骁龙X Elite等Arm处理器的笔记本电脑的系统安装与维护。对于这类设备,重装系统远非插入通用安装盘那么简单,核心挑战在于必须使用专为Arm64编译的Windows镜像,并需提前集成芯片组、网络等硬件的专属

weixin_33428613的博客 479

Windows10下搭建X86汇编语言Bochs工具时的一些问题

Bochs 2.6.0 安装版 //之前下载的解压版不行 一开始按书上配套的教程配置 保存了配置文件打开后却弹出下面的窗口 //配套文件csdn有下载的 教程上也没说这个情况,自己就瞎弄了半天,网上搜也搜不出来,最后用谷歌翻译了一下 原来这是一个错误提示,正常没有这个 我是这样解决的 Bochs文件夹下有这么几个文件,错误的原因在于图片中的配置文件(也就是那个文本文件)里面没有指明上面圈出的两...

风中起雾的人 1363

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 349

《操作系统真象还原》boch环境配置

bochs-2.6.2下载地址: https://sourceforge.net/projects/bochs/files/bochs/2.6.2/bochs-2.6.2.tar.gz/download link下载完成后解压 bochs-2.6.2,进入解压后生成的目录 1、首先是configure ,执行以下命令 遇到报错:ERROR: X windows gui was selected, but X windows libraries were not found. 解决: 2.编译完成,会生成ma

qq_37397331的博客 467

SAP FICO 银企直联实战:从配置到异常处理的全流程解析

本文详细解析了SAP FICO银企直联的实战配置与异常处理全流程,涵盖银行主数据搭建、支付类配置、银行接口适配等关键步骤。通过实际案例分享,帮助用户掌握实时付款、余额监控和自动对账等核心功能,提升企业财务效率与安全性。特别针对常见问题如凭证重复付款、前置机UUID冲突等提供了实用解决方案。

weixin_29215815的博客 663

基于eBPF的零侵入LLM智能体观测:AgentSight架构与实战

在分布式系统和云原生架构中,可观测性是保障应用稳定运行与高效排障的核心能力。其原理在于通过日志、指标和追踪三大支柱,从外部视角持续收集和分析系统状态,而非依赖应用内部埋点。这一技术价值在于能以统一、低开销的方式,理解复杂系统的内部行为,尤其在微服务、容器化及Serverless等动态环境中至关重要。应用场景广泛覆盖了性能监控、安全审计、故障诊断与根因分析。当我们将这一基础理念应用于当下快速发展的AI智能体领域时,便自然引出了对LLM智能体进行无侵入、系统级行为观测的需求。传统的应用层方案需要集成SDK,对闭

weixin_28696185的博客 324

Win10 WSL 2(Windows Subsystem for Linux) 安装 bochs

首先确保已经安装了 WSL,我装的是 ubuntu 20.04 LTS。 先根据这篇文章把源换一下:https://blog.youkuaiyun.com/wangyijieonline/article/details/105360138 1. 安装必要环境 假设 WSL 是全新安装的,里面大部分依赖都没装,因此先装一些必要的库。 必备 g++ sudo apt-get install g++ make 也要装 sudo apt-get install make 还有一些用到的库 sudo apt-get ins

蓝三金的博客 3222

无人机WIFI集群组网技术详解及成本分析

无人机WIFI集群组网技术是指利用无人机作为移动平台,通过集成高性能的WIFI模块,实现多架无人机之间以及无人机与地面控制站之间的无线通信组网。在协议层面,无人机WIFI集群组网需要遵循标准的无线通信协议,如IEEE 802.11系列(即WIFI标准),同时可能还需定制或优化路由协议、媒体访问控制(MAC)协议等,以确保高效、可靠的数据传输。数据安全与隐私保护:无人机集群组网中传输的数据可能涉及敏感信息,需采取加密、认证等安全措施,确保数据传输的安全性和用户隐私的保护。根据性能不同,价格差异较大。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1583

【操作系统】Bochs安装和配置

Bochs是使用C++编写的高度可移植开源IA-32(X86)PC模拟器,能在大多数流行的平台上运行。它包括模拟Intel x86 CPU、常见I/O设备和自定义BIOS。Bochs可以被编译以模拟许多不同的x86 CPU,从386早期到最新的x86-64英特尔和AMD处理器甚至可能还没有进入市场。Bochs能跑仿真中的大多数操作系统(例如DOS),Linux或Windows。

师兄怎么办 4276

基础入门篇 | YOLOv8 项目【训练】【验证】【推理】最简单教程 | YOLOv8必看 | 最新更新,直接打印 FPS,mAP50,75,95

三个文件搞定YOLOv8【训练】【验证】【推理】🚀🚀🚀

Coding... 2万+

【3】 灰度变换(1)

第三章(1)【总三】

课题分离 659

自己动手写简易操作系统之bochs的配置

Bochs(发音:box)是一个以LGPL 许可证发放的开放源代码的 x86、x86-64IBM PC 兼容机模拟器和调试工具。它支持处理器(包括保护模式)、内存、硬盘、显示器、以太网、BIOS、IBM PC 兼容机的常见硬件外设的仿真。许多客户操作系统能通过该仿真器运行,包括 DOS、Microsoft Windows 的一些版本、AmigaOS 4、SD、Linux、MorohOS、Xenix 和 Rhapsody(Mac OSX的前身)。

m0_63686543的博客 1728

点云从入门到精通技术详解100篇-点云的特征检测(续)

对每个维度的序列分别计算 DTW 距离,最后。权重将距离限制在较小的范围内,对于时间跨度大的数据集,过度限制了点对点的路径,同的,因此不能用欧氏距离来计算两个多元时间序列之间的距离,本文选用的是动态时。到的股票数据是未知分类的,因此该数据的相似性分析缺少有效的评价方式,通常需要。时间序列,简而言之,就是与时间相关的数据的集合,应用在生活工作中的方方面。时间序列的分段线性化表示的难点在于如何找出分段点,目前,对于分段点的研究。经过分段线性化之后,每个多元时间序列的维度是相同的,但是每一维的长度是不。

getusushu的博客 334

ubuntu下bochs的安装和配置

《ORANGE’S:一个操作系统的实现》一书中选择使用虚拟计算机Bochs进行仿真。 Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。甚至可以不使用PC硬件来运行Bochs。事实上,它可以在任何编译运行Bochs的平台上模拟x86硬件。通过改变配置,可以指定使用的CPU(386、486或者586),以及内存大小等。根据需要,Bochs还可以模拟多台PC,此外,它甚至还有自己的电源按钮。 以下对bochs的安装及常见错误

weixin_46672140的博客 7278

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

自己动手写操作系统之1:bochs初步使用

0x00 前言自己动手写操作系统,自然需要一个承载程序的运行环境,这一章记录我使用bochs遇到的坑,凌晨十二点半才填完坑。这次记录的是使用bochs完整实现一个最简单的操作系统(其实根本不算操作系统,只是通过硬盘启动个mbr程序)。0x01 bochs1.安装安装比较简单了,我没有使用源码安装,不想再折腾那个了,不然估计我就没戏能开始了。yum install bochs bochs-x -y需要

木东居士 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Ubuntu下安装Bochs2.7

通过自带软件库安装的Bochs运行时不显示任何内容,这里选用源码安装方式。

weixin_43364551的博客 1765

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ubuntu20.04 bochs配置安装《操作系统真象还原》环境

文章目录ubuntu20.04 bochs配置安装操作系统真象还原环境一些前置配置:ubuntu20.04安装和vmtools,vscode安装,配置清华源ubuntu20.04安装[vmtools 和 vs code 一并安装](https://editor.youkuaiyun.com/md?not_checkout=1&articleId=120155847)将linux默认镜像改为清华镜像源配置所需的环境安装bochs1.下载bochs2.执行./configure 配置文件,自动生成Makefile3

林夕丶的博客 4015

操作系统真象还原-bochs安装

敲这几个选项时,顺序错了,iodebug放前面,结果configure不过,提示是否是交叉编译,需要设置host,我搜了半天,以为少了配置项:--build=i386-linux --host=i386-linux 结果不起作用. 最终按书上顺序修改后就好了,看来提示很不靠谱啊。书中使用2.6.2版本,虽然比较老(2024年还在更新,已经是2.8版本了),但是为了和书上完全一致,我也不太熟悉这个系统,就下载了2.6.2(2013年5月的版本,已经11年过去了)

hb_zxl的专栏 1345

实现一个最简单的操作系统

DDDD。

dadoufuk的博客 5523

bochs的安装和配置

参考书记:《操作系统 真象还原》 书上使用的是bochs-2.6.2.tar.gz。是2013的版本,老旧老旧了,我不使用。 我的系统是Ubuntu18.04。 1、bochs的安装 sudo apt-get install bochs 如果,仅仅安装这一个。后面运行的是时候会报错。 错误提示:“*******”。我忘了什么提示了。。。 sudo apt-get install bochs-...

大草的博客 1万+

bochs的安装和配置02

环境:ubuntu18.04 《操作系统 真象还原》:bochs的安装和配置。

大草的博客 3534
上一篇: Ubuntu上安装NASM
ByChen623
博客等级 码龄10年 16粉丝 3原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值