In this video I'm going to explain a bit about
hardware virtualization and the various BIOS settings
that can disable it.
Now laptop manufacturers, in particular,
disable hardware virtualization in the machine's BIOS.
So enabling it can really speed up
the emulators, and will allow HAXM to run on Windows.
So why is this important?
Well the Android virtual devices, or emulators,
that you use to test your apps are on virtual machines.
So what that means is, a programme is running on your computer
that behaves just like an Android device.
It's not a real Android device, and it doesn't have
the hardware that an Android device has.
Instead it's all emulated in software.
So virtual machines.
Firstly, the cloud is built on virtualization.
Modern hardware allows virtual machines
to run on PCs and Laptops.
They can run different operating systems
on a single computer, and Virtual Machines
use the Host computer's hardware.
Virtualization technology has really taken off in
the last past few years.
In fact, the Cloud is largely built on it.
One advantage is when you need a new web server
to meet demand, for example.
Using traditional hardware you'd have to install
the operating system and all the software that it needs.
You'd also have to run network cables
to connect it to the network, make sure
there are enough power sockets nearby,
and loads of other stuff.
By running a powerful computer that hosts virtual servers,
you can start a new server up
from an image really quickly.
When demand drops again, you just shut down
and delete the virtual machine.
Now Virtual Machines aren't actually new.
IBM had them in the 1960s,
but now that we have far more powerful hardware,
virtualization has really taken off.
Another advantage of virtualization is that you can run
different operating systems on the same computer
at the same time.
Now this is extremely useful as a developer
because you can make sure your programme behaves correctly on different systems
with having to actually have loads of different computers.
You still do need a licence for each operating system
that you want to run in a VM of course though.
So as well as my Mac I actually have a licence for Windows
and I can start up a Virtual Machine
running Windows operating system right here on my Mac.
So here I am actually running Windows 10 on my Mac.
So you can see in the background that I've got my Mac.
But in the foreground here, in this Window,
I've actually got a Windows Virtual Machine running.
So for me OS X on my machine is the host operating system,
with Windows running as a guest.
So it's important to remember that there's only
a single set of hardware here.
So the Windows guest is using the same processor,
or processes on a multiprocessor machine, as OS X.
So doing this on a desktop computer 10 or 15 years ago
was possible, but was a lot slower
than it is on average desktops these days.
Even so running two operating systems like this one
does slow things down a little bit.
More importantly memory can become an issue.
The machine, the hardware has still only got
the same amount of RAM.
So there has to be enough RAM installed
for both operating systems to have access
to what they need.
The 64 bit version of Windows 8 or 10 requires
two gigabytes of memory to run, minimum, and
that's just the operating system requirements.
So running say, a Windows 10 VM is going
to need at least 2 gigabytes of your computer's memory.
So on a machine with only 4 gigabytes, you can see
that things can and will get a little bit tight.
Just to show that this is working, I can actually
just come up here and open something on
Windows side of things.
So I can open Notepad, which is a Windows desktop app.
This is a test and so it's running quite nicely,
and for all intents and purposes
it actually is a full Windows installation.
It's actually just running the computer.
And I can go down here to About, and you can see
I've got Windows 10 Professional Edition here.
I've got 8 gigabytes of RAM allocated to this Virtual Machine,
and I'm running a 64 bit edition of Windows 10.
The other thing I can do just very quickly,
I won't save that change,
is I can even put this into full screen mode.
So I'm gonna do that briefly
and then we will swap out of it again.
Just so you can see what actually happens.
So I can come up here to the software
that is running this virtualization software
called Parallels on my Mac, and I can change this
to full screen so let's just have a go and look at that.
And you can see it took a moment to adjust but now
I'm actually running it full screen.
And again, I've got the same options I had before.
But I can still bring my mouse up to the top here
and still get access to the Mac menu,
and I can come back here and click on Exit Full screen.
And finally one other thing I can do,
Which is where VMs are starting to blend in
with other operating systems, I can open my notepad again
and I can come up here to Parallels and click on View,
and this time I'm going to go into coherence Mode.
I'll click on yes to that.
Coherence Mode sort of merges the two operating systems
in terms of the interface at least.
What I can then do, is over here
I've got my Windows application, I've got my window.
This is test and I'm actually running it.
It appears that I'm running it on the Mac
and it's not actually in a separate window.
And I can actually come over here get access to
Windows Start menu, like so, and I can run different apps.
Whatever I want to do there, I could run File Explore.
And there's my File Explorer.
And these windows they can be dragged around.
So you're really getting the best of both worlds
with two operating systems.
Even though Windows is running,
as a separate virtual machine.
It enables me to sort of merge them,
I don't have to have one separate window like I did
when I went back to this mode.
So just get out of that mode, just go back
to the original mode I was in before we started.
So that's what it looks like in a window.
All right so that's virtualization running on a Mac.
So when does hardware virtualization come in?
So modern Intel and AMD CPUs have additional support
for virtualization.
Now Virtualization Extensions on Intel CPUs
are called VT-x or VTX.
On AMD CPUs, it's called AMD-V.
Now VT-x may be disabled in the BIOS,
AMD-V is always enabled
Additional virtualization support may be provided
by settings such as VT-d, GVT-d/s and IOMMU.
So enable these settings if you find them in your BIOS,
but make a note of everything you change just in case
you need to put it back.
Hardware virtualization on x86 processors
uses additional instructions,
called virtualization extensions
that are built into the CPU.
CPUs with these extensions can run guest operating systems
much more efficiently because support for the VM is
available in hardware rather than
having to be emulated in software.
And there is a wealth of information available
with these various acronyms.
Things like we talked about on the previous page.
VT-x VT-d et cetera.
Basically though when you're going to look at your BIOS
if it starts with VT- or AMD- in your BIOS
then enable it.
Make a careful note though of everything you change,
and if you get any problems
then you can turn it all off again, and re-enable
one thing at a time, until you identify
the one that caused the problems.
AMD-v can't be disabled in the BIOS, so if you have an
AMD processor that supports virtualization
then it will already be enabled.
Having said that,
there are some other supporting technologies
such as IOMMU or AMD-vi that are worth checking
and enabling if they're disabled, even with an AMD CPU.
So enough of the theory.
The practical applications of this are that you may
have a machine that supports hardware virtualization,
but it may be disabled in your BIOS.
Now if Android Studio successfully installed HAXM
on a Windows or Mac computer, then everything's set up fine
and you don't need to do anything else.
But if you got a error installing HAXM,
then the rest of this video should help you
to get it working.
Provided your computer does support
hardware virtualization of course.
Now we're gonna start with a note here for Mac users,
if you have a Mac then virtualization should be enabled
if the hardware supports it.
All recent Macs, as far as I am aware, do fully support it.
And I've never had a problem getting HAXM to run
on a variety of Macs that I've owned,
over a period of years.
So long as you have a intel CPU, which as of the date of
this recording, all Macs created in probably
the last seven or eight years, are Intel only.
You'll be good to go, and you should find
that you have no problem.
But if for some reason you've got some issue
and you think VT-x should be available but it isn't,
then you might not have possibly uploaded
the latest firmware updates.
Check out this page and the link will be available
in the resources section so you don't need
to sort of write it down.
So have a look on there, on that page.
If there's any information you need to know.
If you're not getting the results you think
you should be getting on a Mac.
But if you're running Windows or Linux,
and VT-x or AMD's equivalent, AMD-v isn't available,
the first thing you should do is check
that your hardware does actually support it.
Searching online for your computer model
and the text, enable hardware virtualization,
should provide the information you need.
Now for nonstandard or self-built computers,
check the manual for your motherboard or search online
for your motherboard.
Possibly including the model number of
the motherboard as well, which would be quite handy,
and help you to find it and also append the words
enable hardware virtualization.
Now if you have a system that should support virtualization,
then reboot the computer and press the relevant key
to get into your BIOS.
On many Windows systems this is the delete button or f2.
But your manual should tell you somewhere how to do this.
If you don't press the appropriate key in time,
the computer will actually boot into your operating system.
So you will have to reboot and try again.
Some systems may require you to power off
rather than restart.
So bear that in mind if you're struggling.
It's not possible to run software to record the screen
when in BIOS settings.
But even if I could, I'd have to swing over
to a Windows machine and show you that machine's BIOS,
which still may be completely different to yours.
So if you have a manual for your motherboard,
then you'll find all the information you need in there.
Otherwise just make a note of your BIOS details
and reboot so you can search online for a manual.
Word of caution here though.
Be very very careful what you change.
If you don't know what something does then leave it alone
as it could actually damage your hardware
if you make changes to clock settings et cetera.
Overclocking for example, requires care
so don't be tempted to play around with those settings
unless you really know what you're doing.
The other thing to keep in mind is
You can always exit from the BIOS settings without saving,
if you inadvertently change something.
Also make a note of every setting that you do change
including what menu it's on, so you can undo the change
if you start getting problems afterwards.
This is one of those times
where there's no digital substitute
for a pen and a piece of paper.
Enabling hardware virtualization
shouldn't cause any problems.
But as there's so many different systems available
I can't really tell you exactly what to change.
So it's really best to play safe
and keep a record of everything.
What I'm going to do is just put a couple of links on
the screen here now.
All these things will be available in the resources section.
This is just giving an idea of what some of
the BIOSes may look like.
You can see there's an option on there.
That's for an Award BIOS.
But for the Lenovo.
You'll be able to check these as I mentioned
at a later time, that looks a little bit different
as you can see that menu.
But this is sort of what the BIOS is looking like
on various computers.
The Phoenix BIOS, they're just created
by different manufacturers but essentially
do the same thing.
BIOS stands for basic input output system
in case you're wondering.
That's the Phoenix, then the AMD version of EUFI BIOS.
that's that one there.
You can see that's the more modern version,
and we got a AMD equivalent as well.
And that in the intel virtualization cell,
we're setting the enabling
the intel virtualization on there
and looking at some of the other options.
You can't probably see that too well but
there's an option there for virtualization technology.
To enable intel Virtual Technology,
so you would enable that.
And Virtualization Technology enabled.
So you're looking for something along those lines.
The last one, VT-d which is actually on an AMD BIOS.
So once you've enable VT-x and other settings
such as AMD-vi, IOMMU et cetera,
you should find after you do that
and reboot back into Windows, that you should
be able to instal HAXM on that machine.
Your Linux machine will also run the emulators much faster.
Keep in mind that HAXM isn't needed on Linux.
Because KVM automatically uses
hardware virtualization if it's available.
And finally if you can't get emulators running or
They're running so slow you're getting frustrated
remember that you can always use a physical Android device
to test your programmes.
Obviously you'll only be able to test on
the version of Android that your device is running
but for doing this course a physical device is fine
and you can manage without running an emulator.
That might actually be a better solution
if your computer has only got about 4 gigabytes of RAM.
Because you have that issue of Android,
the image needing RAM, and by the time you're loading
Android Studio Java et cetera,
you're gonna be running out of memory.
So do consider doing that.
Particularity these days with Android devices
being available so cheaply that it might actually
be a better option to just grab an Android physical device,
rather than messing around with a emulator
if you're having lots of problems with that.
Alright so I'm gonna finish this video here now.
I'll see you in the next video.