[LINUX] Install ubuntu on 32bit UEFI Ultra Notebook

This article is the 15th day article of Nifty Group Advent Calendar 2019. Yesterday was @ spicy_laichi's Static Duck Typing with Protocols in Python. I feel that it is difficult to maintain type safety of python, so I hope I can learn from these articles as well.

This time I will install ubuntu on my ultra notebook. The explanations of the words are very about (studying) and mixed with mistakes, so if you have any questions, please look them up yourself.

PC to use

The PC used this time is ASUS X205TA.

CPU: Intel Atom Z3735F Memory: 2GB Storage: 32GB (eMMC)

It was a good substitute for me, who was a liberal arts college student at the time and was looking for a portable PC to write reports on Google Drive. However, the storage was too small to perform a major update of Windows 10, and it was troublesome to perform a clean installation every time, so I left it. This time, I will change this PC from Windows 10 to a Linux machine, revive it, and switch to a learning PC that can be taken anywhere.

Until Live startup

First, download ubuntu18.04.3 LTS ISO file from the official website. Create a bootable USB for installation with Rufas and try to start Live with the bootable USB. However, no matter how many times I check the BIOS screen, the USB is not recognized as a bootable USB. When I searched, there was precedent for the cause and solution.

A special environment called 32bit UEFI

UEFI is a BIOS that supports 64-bit and GUI using a mouse as a successor to the BIOS. To be precise, it is the definition of the software interface of the OS and BIOS, but if you round it up and define it, it will be.

However, this X205TA runs on a firmware called 32bit UEFI. The basic UEFI specification is that it supports 64bit, but it seems that this is not the case with this PC. Certainly, it is useless to load Atom with 2GB of memory and 32GB of storage to support 64bit. It seems to be a specification that remains in the Ultra Notebook.

However, ubuntu 18.04.3. I prepared does not consider the specification of 32bit UEFI. In other words, the OS specifications required by UEFI did not match the OS specifications in the first place. That's why USB wasn't recognized as bootable.


Prepare a boot module for 32bit UEFI. Already compiled module for 32bit UEFI (bootia32.efi) was released on GitHub .. Download this and copy it to / BOOT / EFI in the USB file you just created. As a result, USB is now recognized as bootable and Live boots.

Reference site: https://qiita.com/rapidliner00/items/1e1868e75b2e5e5ad481 Reference site: https://qiita.com/furipon308/items/ab89d022e35d40284682

grub error occurs

Well, I tried to install it on the PC after starting Live, but it freezes on the way. I tried to forcibly terminate it by pressing and holding the power button once and start ubuntu that was frozen during the installation, but here I get an error with an unfamiliar screen called grub rescue. error: file '/boot/grub/i386-efi/normal.mod' not found

What is GRUB?

GNU GRUB (GRand Unified Bootloader) is a high-performance bootloader developed by the GNU Project. (From Wikipedia)

In a nutshell, it's a system like a BIOS-OS relay that boots after the BIOS boots and is used to boot Linux installed on disk. I was angry that I couldn't start it because it wasn't installed entirely.

Reference site: http://hibitche.hatenablog.jp/entry/2015/07/17/012051


As for the order, when I first installed ubuntu, the GRUB2 installation did not run because it froze before installing the GRUB2 package. However, since the installation of the kernel etc. was completed, the BIOS could recognize ubuntu, and when I tried to boot ubuntu forcibly, an error occurred because GRUB2 did not exist ... It seems that the order is.

Therefore, start ubuntu Live again and perform a clean installation. Since an error occurred, the wireless LAN settings that were originally planned to be rewritten and applied after installation should be rewritten first at the stage of starting Live.

Type the following command to enable the built-in wireless LAN. Replace small numbers by hitting tabs in a timely manner.

sudo cp /sys/firmware/efi/efivars/nvram-74b00bd9-805a-4d61-b51f-43268123d113 /lib/firmware/brcm/brcmfmac43340-sdio.txt
sudo modprobe -v -r brcmfmac
sudo modprobe -v brcmfmac

Add the following settings to the config file for loading the kernel module.


blacklist btsdio

Edit the GRUB configuration file "/ etc / default / grub" and set the GRUB_CMDLINE_LINUX definition as follows.


If you perform a clean installation in this state, it will be completed successfully. I was able to restart successfully. One of the reasons was that the physical part of the USB wasn't working well, so I'm not sure if this rewrite really worked, but I hope it helps.

Reference site: http://whoraibo.hatenablog.com/entry/2018/09/02/130215

in conclusion

I'm touching ubuntu that started, but it's still heavy. I would like to reinstall the lighter package. However, by taking such a challenge, I was able to learn a little knowledge about the OS, UEFI, and kernel, so I think that the purpose of the initial learning could have been achieved a little. After all, I felt once again that there are things that I cannot learn without moving my hands. My seniors asked me, "Why don't you try Gentoo Linux installation battle?", But even ubuntu is a PC that can't be entered obediently, and the specs are too low, so how long does it take to compile? It was. I would like to learn a little more before fighting.

Thank you very much.

Recommended Posts

Install ubuntu on 32bit UEFI Ultra Notebook
Install TensorFlow on Ubuntu
Install PySide2 on Ubuntu
Install JModelica on Ubuntu
Install Python 3.3 on Ubuntu 12.04
Install Theano on Ubuntu 12.04
Install angr on Ubuntu 18.04
Install pip / pip3 on Ubuntu
Install Ubuntu 20.04 LTS (Server) 64bit version on RaspberryPi3B +
Install cvxopt on 64bit Anaconda
How to install Linux on a 32bit UEFI PC
Install GoLand IDE on Ubuntu
Install OpenCV on Ubuntu + python
wsl Install PostgreSQL on Ubuntu 18.04
[ROS] Install ROS (melodic) on Ubuntu (18.04)
Install Caffe on Ubuntu 14.04 (GPU)
Install Docker on WSL Ubuntu 18.04
Install CUDA10.1 + cuDNN7.6.5 + tensorflow-2.3.0 on Ubuntu 18.04
Install Python 3.8 on Ubuntu 18.04 (OS standard)
Install Mecab and mecab-python3 on Ubuntu 14.04
Install and run dropbox on Ubuntu 20.04
Install OpenCV and Chainer on Ubuntu
Install CUDA 8.0 and Chainer on Ubuntu 16.04
Install Python 3.8 on Ubuntu 20.04 (OS standard)
Install python2.7 on windows 32bit environment
Install fabric on Ubuntu and try
Install Python 3.9 on Ubuntu 20.04 (OS standard?)
Install confluent-kafka for Python on Ubuntu
Install Python 2.7 on Ubuntu 20.04 (OS standard?)
How to install Go on Ubuntu
ROS study # 1 Install ros-noetic on ubuntu 20.04
Install Grub on USB memory (UEFI) ~ grub installation ~
Steps to install Python environment on Ubuntu
Install 64-bit OS (bate) on Raspberry Pi
Install docker-compose on 64-bit Raspberry Pi OS
Install Pleasant on Ubuntu 20.04 (.NetCore3.1 / PostgreSQL version)
Install Caffe running 3D-CNN on clean Ubuntu 14.04
Install Puppet Master and Client on Ubuntu 16.04
How to install php7.4 on Linux (Ubuntu)
Install pyenv and Python 3.6.8 on Ubuntu 18.04 LTS
Install Grub on USB memory (UEFI) ~ USB preparation ~
Install matplotlib and display graph on Jupyter Notebook
I can't install Dask with pip on Ubuntu
Install python package in personal environment on Ubuntu
[Procedure memo] Install Python3 + OpenSSL locally on Ubuntu
[Note] Install wxPython 3.x on Linux Mint (Ubuntu)
Install the latest Cuda + CuDNN on Ubuntu 18.04 @ Spring 2020
Install MongoDB on Ubuntu 16.04 and operate via python
Install the latest version of CMake on Ubuntu 18.04.4 LTS
Install Apache Tomcat 9 on Ubuntu 19.10 Eoan Ermine Hello World
Install Grub on USB memory (UEFI) ~ USB preparation and confirmation ~
Install Grub on USB memory (UEFI) ~ Boot Linux from grub on USB memory ~
Install Apache 2.4 on Ubuntu 19.10 Eoan Ermine and run CGI
I got a UnicodeDecodeError when pip install on ubuntu
[Windows] [Python3] Install python3 and Jupyter Notebook (formerly ipython notebook) on Windows
Install Bash on Ubuntu on Windows, Ruby, Python, Jupyter, etc.
Install mecab on Marvericks
Install python on WSL
Install pyenv on mac
Install pip on Mavericks
Install mongodb on termux