 and software projects there. We are open on Thursday evening. Welcome to join us. We have the address below. It's beside Shenzhen University metro station. So LFS has a lot of variations. The first is LFS itself. It compiles. So it will build a Linux distribution on the 86 architecture to the x86 architecture. So with this variation, you will know there were no chance to have the course compile. And there are other variations. The first is embedded LFS. It means you build a Linux distribution from ARM to ARM, for example. And it will not include the course compile too. But it will be much slower since ARM is not that high performance as Intel CPUs. The other, the third is what I am going to talk about. It's CLFS, which is called Cross Linux from scratch. And we have some websites and URLs listed here. And why I chose this is because I have a high performance laptop. So I can build a kernel and other binaries more quick. So the other question is why I want to have my CLFS project? Since it's, I can build my own distribution. So I can control everything. I can have all of the source code and compiling them into binaries, including the kernel, the kernel drivers and device tree and other executables. And it's pretty small. It's only 65 megabytes. And it can be even smaller. On a CLFS website, it can be as small as eight megabytes. It can use busybox instead of a full functional set of tools. So it can, you can make it customized for your own PCB. And by doing CLFS, you can get an idea of how operating system boots itself. And you can use the, try the CLFS with a full emulated environment without any hardware. So that make it more easy to access instead of buying a lot of hardware, power them up and burn the SD cards, burn the images into SD cards. So that's the reason why I want to build a CLFS myself. I choose Raspberry Pi to build since there are Q emulator system ARM which provided Raspberry Pi and Raspberry Pi 3 for emulation. So the Raspberry Pi 2 itself is a Cortex A7 32-bit ARM. With the, here with the link, you can find more information about the ARM itself. Before, before CLFS, you need to know the architecture of the processor itself. It must be accurate. If you build a MIPS architecture binary for our ARM CPU, it will not run for sure. And after we get the information of the architecture itself, the second is build bin utils. It includes assembler and object copy, object dump and some other executables which we will use them to make other binary files. These, the bin utils are compiled and installed on host PC. And the second is we will build a cross compile to chain which is ARM Linux Moosl EABIGCC. In other variations, you can see that there are ARM Linux none, ARM Linux EABIGCC. These are variations of the, these are variations of the standard C libraries. These two are also compiled and installed on host PC. And the second is to get the Linux headers. You need to download the kernel, the kernel source itself, and then unzip it to a folder and make the default config and then compile the folder using the cross compile to chains which here, here I see that CLFS arch means the ARM Linux Moosl EABIGCC. So with this configured, you can use the cross compile to chains to compile the source files. It means that you will compile the source code on x86 architects and build the banners into ARM architecture. With these steps, you will have the header and the Linux config itself installed. These are some, this is how I built the ARM Linux Moosl EABIGCC. With this architect, with this, with this lines, you can get a executable on, on your host PC. Well, these are export, the default cross compile, cross compile into the variables. So when you log in at the CL, user of CLFS, you will have the environment variables preset. Here is another step. You can create the directory structure. It will create a lot of directories for example, the bean booty device, et cetera. These are the, these are the file folders you see on an Linux file system. And you will set the, set the flags here for the folders for different users to access. And the next step is to create a password for the group and file last log files. The EDC password file has a record for different users. You can see the user names here and it's a group, group number and some other information. And this is the default, default shell. Being false means you cannot log in. So EDC password is an important file which needs kernel usage to manage the different users. And the other file is the EDC group which is similar to EDC password. Sorry, there's a P missing. It has a group names inside and the number is group number. And this step you will build and install the lab GCC into your target system. And this is important for other executable binaries. Other executable binaries will call this dynamic link file to execute. And the next is IANA, et cetera. It will create a, it will download some file from the internet to get the default port and the service name related informations. And with that, you can see the 22 port is for SSH log in default and the 80 is for HTTP service. These are only a list and a part of the file itself. It has a lot of other information and other services inside. And here comes to the very important step, build the kernel itself. You have already downloaded the kernel source file yet. And now it's time to build the kernel itself. The first line is to make the directory clean. And the second and the third here is here make BCMR 2709 is for config, use the default config files for Raspberry Pi 2. You can find this information on the link here. And the second is build the source file with seven threads. And the third is to build the Z image and modules and the device trace. These are, the Z image is a kernel image and modules are for hardware drivers and the DTBS are for device trace which kernel use to configure the different hardware. This will take about half an hour. And then you will have your Z image ready which you will use it later. And the last line is to install the compiled files into the target system. Then your target file system will have the kernel module and the kernel installed. And here are a list of very useful boot loaders. You can choose one of them to boot. And now you already have a kernel and the file system. You can try to run it on Q emulator, which I have the link here. I will try it later. With that you can run ARM operating system on your Intel PC. Here are some of my future plans. Although the talk is about CLFS, but I haven't finished the CLFS yet. The operating, the file system has some error. I will try to figure them out later in several days. And the second is there are, there are no package manager in LFS which is quite important to a distribution. In Derby and variations we use ABT and DBKG. In other variations we use Zfer or Pacman. These are very important to Linux distribution. But we haven't mentioned it here. And here are some of my potential errors. Since I use this cross compile link, cross compile LD to see if the binary compiled is right, but it says cannot find entry symbol start. So I may have got something wrong with the compiling method. And I want to mention that Q emulator is a very good tool for LFS. You can save you a lot of time without dealing with the hardware errors. And okay, I will show something here. You will print all the information out. And here you can see the Raspbian GNU Linux is loaded. It means that the file system goes well. And the green okay shows that the system D is setting up different services. But it's not using my file system. It's using existing file system by using the hardware, but using the kernel and the kernel modules I have built. It will take some minutes. So let's do, welcome to visit Shenzhen DIY. We have open day in every Thursday evening. You can find more information on our website, Shenzhen, at the DIY door or RG. So do you have any questions? Using Linux for me is very important. So I want to know how the operating system works. And there's a friend told me that LFS is a good start to know the detail of Linux kernel and all the process which it will invoke when booting. And it's a challenge to manage the, a lot of source code and banners on your existing file system. And it's quite good. So do you have any questions? Yeah, reduce the size, right? It's not important to this distribution. So the stripe means remove the debug symbols from the banner, so the program size can be much, much smaller. And but the set effect, no, no the effect is that you cannot use GDB to log the debug the program with its symbols. You cannot see the function's name and all the detailed information inside. But in other ways, you can make the debug information into another file and you can load it to your GDB using some other way. So after the strip, the dynamic link file will be pretty much smaller. You can see here that it can log in now. Okay, that's all of it. Thank you.