 As always, this is part of a series. There should be an annotation on the screen to the full playlist. Be sure to check out the previous videos before continuing with this one. Today, we're going to be looking at booting an operating system, the Linux operating system, over the network. So instead of having it locally installed, you'll have the kernel and file system on a remote machine. The way we're going to be doing this is with GPXC. You also may be familiar with PXC, also known as PXC, which is a pre-boot execution environment, I think is what it stands for. And standard PXC, I believe, is proprietary software. Usually found, I think, a lot of BIOS and other motherboard systems have that built into it. But GPXC, or GPXC, is an open source implementation of that. I think it does give a little more options than the standard PXC does, and is easily installed on a floppy disk, a hard drive, a USB drive, a CD. And you can have a pre-setup. So just like you would have a live CD, you could plug in this USB or USB drive or a CD drive, and it will connect to the internet and grab the files from anywhere you want. In this particular example, I have my Pogo plug running as a web server in the room, in my living room. And I have Apache set up on it. And I took the Slita's ISO that we've been working with in previous tutorials. I mounted the ISO, and I took the initial RAM disk from that, which is the basic file system for that operating system. And the kernel from that, renamed them and put them on that server in a folder called tablet, just because that's a folder I have shared on the web browser or on the web server. So from there, we are going to go ahead and start creating a GPXC image, which is really easy. There is a online generator for it. Real quick, we're in the folder we've been working in. I'll make a directory. I'll call it PXC. We'll move into it, PXC, just to give us some place to work with a nice, clean, empty directory. And if you go to romomatic.net, that's rom-o-matic.net, there is a GPXC generator here. A little old, but I'm sure that there's no need for anything newer at this point, or else there would be a newer version. Go ahead, click on the newest image generator. And you'll see that you have a dropdown for the format of that you want the output of. You have two types of floppy disks here, just a floppy bootable image, one using syslinux, which is what we've been working with with our ISOs. We'll use the ISO Linux as part of the syslinux package. And we'll be creating both of these today. And you can also create an ISO, an ISO with legacy, a floppy, and create one with different bootloaders here, and USB, chain disk image, and a bunch of others. But let's just go ahead, dive in. You can choose what type of network drivers you need if you were going to use this on a particular machine, and only that machine, and you know what drivers it uses. You can go ahead and find those in here. I'm just going to leave it at all. It's still going to be less than a half of a megabyte. It's going to be, I think, like 300-something kilobytes. We're going to skip over option three. Don't really need to worry about that for this tutorial. And at this point, that's it. I'm just basically leaving it at the default settings. I'm going to say generate image. Give it a few seconds, and it will pop up a download screen to generate in the image. So it's going to download this file that I just created. Save. Go back into my terminal here, my shell. And that one's my download directory. So I'm going to move from my download directory GPXC, and I'll just call it gpxc.dksk, really. Again, the extension doesn't really matter. And if we do really quickly look at this file with the command file, as we've done in previous tutorials, you'll see that it is a x86 boot sector. So just like if we had a kernel image, which is a bootable image, that's what this is here. And I'm just going to test this out. Obviously, you can copy this to a floppy if you had a floppy disk and boot it on a machine. I'm just going to use QMU, the virtual machine. I'm going to say dash fda for floppy disk and give it the name of that file. So it's going to see that as basically the only drive, because we're not telling it of any other drives. So here we go. It's booting. And the first thing it's going to do is it's going to try to connect to network. It got one. And then we can press Control B. Oh, see, I was too late. By default, it's going to try to connect to the internet, which it does there. And then it's going to give you a few seconds to choose whether you want to go into the GPXC interface after a few seconds. If you don't hit Control B, it's going to go to the IPXC interface, which I haven't messed with yet. And I don't know if the same commands work here. So I'm going to try in this tutorial. So I'm just going to run this again and be ready to press Control B once we have an internet connection. There we go. And at this point, I am going to tell it where the kernel is, where the initial RAM disk is, and then to boot. So I'm going to say kernel. And this is very similar to what you would have in the Linux ISO Linux.config file when you're setting this up in the other different labels. You say kernel. And then we'll say HTTP. And it does go. You can use HTTP, FTP. There were other options, which we'll get into later. But I'm just doing basic HTTP. So I could have a web server on the other side of the world that has my kernel and file system on it. And I can load it doing this. But I'm doing it from my Pogo plug in the other room, which has the IP address of this. And it is inside a folder called Tablet. And I named the kernel Linux. Give it a second. It downloaded. Got an OK. So it has now downloaded that. Now I can say init RAM disk. And it's on the same server. And I guess technically, they could be on different servers if you wanted them to be, for whatever reason. And I called it init RD. Now to enter. And we got an OK. So it's downloaded the kernel. And it'll download the initial RAM disk, which, once again, I pulled both of those from the slits. And the initial RAM disk is the basic file system. It's not just an initial RAM disk. It's going to load another file system. So at this point, I can just type in boot. And it's going to decompress the kernel it just downloaded. And then it'll start uncompressing the initial RAM disk there and load up the operating system. It's going to take 20 or 30 seconds in this virtual machine for this basic OS to boot. I just want to finish booting so I can prove to you that it does work. Now the operating system is getting an IP address. And Slitaz asks you about your language and keyboard configuration. And there we go. It took 28 seconds for that to boot. I'm going to just log in as root real quick here. And just to show you, I'm going to do TazPKG, which is Slitaz's package manager. I'm going to say Recharge, which will download a charge. A list of the current packages available. You can see that everything's working fine. So we're not running this remotely. We download the images to our local machine, basically to the RAM, and then unpackage them. And so you can see nmaps not installed. I can say TazPKG get-install nmap. And we'll download nmap. And again, don't want to confuse you. We were booting off the network, but we're not running this operating system remotely. So right now, with what we're doing, we're no longer connecting to the server in the other room. So you don't have to worry if your internet went down, your operating system's still going to be working. Now nmap should be downloading the required packages. Here we go, nmap should be the last one. And you can see nmaps installed. So I'm going to just power off the system. So that was creating just a very basic default settings of GPXC. Let's go back to the website here. Let's do this. And I'm going to now, again, you can customize these, put in the network drivers that you want specifically, and other disk images. But there's also this optional customize option. And here it's, again, the top part's the same. But then you have all these checkboxes of things you can add or remove if you want to be able to do regular FTP rather than just TFTP. We already have HTTP, but if you wanted to add support for HTTPS, you can add that in there. I'm not going to uncheck or check anything. You could probably get the size of the file down a little bit if you needed to if you wanted to remove wireless options here. But what we can do here in this embedded script is set it up so it automatically knows what server to go to rather than having to type it each time. So we're going to give it a little shebang line. So pound, exclamation mark, GPXE. And then we're going to say DHCP net zero. And that's just going to say, look at the first network card and retrieve an IP address. Basically connect to the local network. And then we can give it the kernel HTTP. And again, give it the address of where your image, your kernel image is loaded or installed or set up, whatever, which again is on my server in the other room, but could be a server someplace else on the world. Again, make sure you type things properly or else this won't work. Yeah, see I did type this wrong. And again, it's init RD. So basically the same things we typed the command prompt before, except for the network part which it automatically did. And now I can say get image. So it's going to give me another image, basically the same thing. But instead of having to start up that command prompt and type this information in, it's just going to run this script, automatically grab it, both the kernel and the initial RAN disk. And there's other options you could put in there, but these are the basic ones. And now that I have that downloaded, I can copy that, or actually let's move it. From my downloads folder, we'll just call and we'll copy it here. We'll call it GPX E2 so we can see the difference between two. And again, I'll run QMU, which you do have to install. It should be in your package manager for pretty much every disk, so it's fairly common. And now I hit Enter at full screen. And you'll see instead of, yep, see it automatically connects to network, download the images, and it's loading. So there we go. It's doing the same thing as before. I'm not going to have you sit through that boot process again and all that. But real quick, let's list out the files in this directory. You can see both these end up being the same size. I mean, they're probably a little bit different, because one has a script in it, but rounding up, you can see it's 305 kilobytes, way small enough to fit on a floppy. And in actuality, if you go to, again, I'm using Slitaz, because I think it's just out of all tiny distros, it's my favorite. And it has so many options. If you go to their website, they actually have a floppy disk image, which doesn't just do this, but it does a bunch of other stuff. And we might get into that more later on, picking apart what it does. But they have a floppy disk image that has multiple boot options, as well as a web boot option and other stuff. So you can actually use these images in correlation with each other. But let's go back. Let's look at one other option here. Going back here, I'm going to say start over. So we're back at Romomatic.net. And this time instead of just choosing a floppy boot image, I'm going to choose a syslinux-based floppy boot image. I'm going to do customize again. OK, let's save that set. OK, I'm going to scroll down. Again, I don't know. I haven't played around with unchecking all these options. I don't know how much. Definitely I'm sure if you remove some of the drivers, it would bring down the size of the file. But again, we're going to say here in our script, a little shebang line. We're going to say DHCP net zero, net zero, meaning the first network card available. HTTP, going to the server in the other room. Tablet Linux, just to save some time, I'm going to say net RD here. Oops, here. Don't forget boot. Because once we download both the images, we have to say, OK, now boot it. And we'll say, get image. And again, it will take a few seconds for it to generate the file here. OK, and this one's going to be saved instead of DSK. It's called SDSK. Again, the extension doesn't really matter. It's more for your information. And here, we're going to move that new image here. And before we even load it up, let's list out the files. And you'll see that the new using SysLinux is quite a bit bigger. It says 1.5. That's rounding up. It's really 1.44. It's just enough to fit on a floppy disk image, or at least it should be. So it's definitely a larger file and does basically the same thing as we have it set up here. So let's enter. One different thing is it does have a little 30 second timeout there. I hit Enter to go past. That doesn't really say there's a 30 second timeout. But you can see it's already grabbed. Oh, file not found. Oh, I typed that. It should have been Linux. I typed that wrong. Trust me, if you actually put the right information in the script, it does work. So let's see. Kill that. This should have said Linux here and so forth and so on. It was a typo on my behalf. But going back to the disk images, let's file out our gpxc.s disk. You can see instead of saying x86 boot sector by itself, it says it's a DOS floppy. It says the actual size there, which is just the right size. And let me make a directory. I'll call it MNT here. And I'll sudo. And I can mount this image, gpxc.datant type in password and move into that directory. You can see that there's files in here. And you have a syslinux config. You have the gpxc kernel. And then you actually have the, I believe, just the binary executable for the bootloader. And of course, I screwed up my terminal here. Normally, if you screw up your terminal and you get googly gob like this, you can type reset and we'll reset it. But it seems to have locked up my whole terminal. I can't even control C out of that. Let's quickly close that tab. Sorry about that. Did not expect that to happen. I should have expected that to happen, but I didn't. We are in. Let's go into our pxc folder. So here we go. We'll go back into our mount folder, back to where we are. Sorry about that little, we'll cat out our syslinux config in this case. So yes, I'm pretty sure this is a binary for the bootloader. I'm assuming maybe. Has something to do with the syslinux. But we have our config file here, which is very similar to our isolinux config file. And you can see it has a default timeout. And then it says default will be the pxc kernel. And that would be the label here and the kernel. So you could actually come in here. And this option would be a little bit easier, I think, to come in and modify. And you can actually have multiple boot options. You could actually probably, if you have like 10 different distros on different servers in different places, you can make labels for each one and use the gpxc kernel for each one. If we list this out, you can see that this kernel is 307 kilobytes. So you can definitely fit a few of those on this floppy disk image. And we'll probably get more into that in the future. I don't want this to be too long. But that's one of the benefits, as far as using the syslinux, is you could probably have more options as far as welcome screens and having different boot options, where the other way, at least as far as my knowledge goes, you make the one script that boots from the one server and goes. And that's it. I hope you did find this tutorial useful. Interesting, if you did, be sure to like it so that I know that you're finding these tutorials interesting. Be sure to subscribe so you don't miss other tutorials. I put out new videos on Mondays, Wednesdays, and Fridays. Mondays will be on similar topics to this, where Wednesday and Fridays are other topics. So be sure to like, subscribe. Comment below. I love comments. Questions? Comments are not the best place to put the questions. Be sure to visit my IRC channel. If you go to my website, filmsbychris.com, that's chris-the-k. There should be a link in the description. Under social networking, you'll see different ways of keeping track of what I'm doing. And one of them will be the IRC channel, where you come and chat with me and other people. And that's a good place to ask questions, not the comments below. So be sure to do that. And as always, I hope that you have a great day.