Blog post about making a GRUB tampoline
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -69,7 +69,7 @@ address_format: dk
|
||||
|
||||
# Site features
|
||||
|
||||
highlight: false
|
||||
highlight: true
|
||||
math: false
|
||||
diagram: false
|
||||
privacy_pack: false
|
||||
|
@ -4,6 +4,7 @@ subtitle: "Tips and trick for embedded C/C++"
|
||||
summary: "Tips and trick for embedded C/C++"
|
||||
date: 2020-06-13T19:01:19+02:00
|
||||
lastmod: 2020-06-13T19:01:19+02:00
|
||||
highlight: true
|
||||
---
|
||||
|
||||
# Set a bit
|
||||
@ -24,7 +25,6 @@ output = input & ~(1 << bit);
|
||||
variable &= ~(1 << bit);
|
||||
// Multiple bits
|
||||
variable &= ~(0b101 << bit);
|
||||
|
||||
```
|
||||
|
||||
# Toggle a bit
|
||||
|
86
content/post/grub-trampoline/index.md
Normal file
86
content/post/grub-trampoline/index.md
Normal file
@ -0,0 +1,86 @@
|
||||
---
|
||||
# Documentation: https://wowchemy.com/docs/managing-content/
|
||||
|
||||
title: "GRUB Trampoline"
|
||||
subtitle: "Install GRUB on a spare drive"
|
||||
summary: "Using a spare drive to act as a trampoline during the boot process."
|
||||
date: 2021-05-03T15:28:14+02:00
|
||||
lastmod: 2021-05-03T15:28:14+02:00
|
||||
highlight: true
|
||||
---
|
||||
# Background
|
||||
|
||||
Due to a BIOS bug in my HP MicroServer I have applied this workaround. The MicroServer Gen8 has a bug that prevents the use of the 5th SATA port as the primary boot device. It will automatically attempt to boot from SATA port 1 if a drive is inserted, then port 2 and so forth. By removing all the fixed drives it is possible to make the system boot from port 5.
|
||||
|
||||
It is however possible to boot from the internal USB port or the internal MicroSD slot. So to solve this issue we are going to install GRUB onto a spare MicroSD card or a USB stick. The size or quality of the drive should not matter since we only need it for GRUB to jump to the drive present on the 5th SATA port.
|
||||
|
||||
# Steps
|
||||
## Format the USB/SD Card
|
||||
Find the correct device identifier.
|
||||
|
||||
```shell
|
||||
lsblk
|
||||
```
|
||||
|
||||
Clear the drive by writing all zeros to the drive (for good measure)
|
||||
|
||||
```shell
|
||||
sudo dd if=/dev/zero of=/dev/sdX
|
||||
```
|
||||
|
||||
Format the disk
|
||||
|
||||
```shell
|
||||
sudo fdisk /dev/sdX
|
||||
```
|
||||
|
||||
Fdisk provides a shell where you can enter commands.
|
||||
- Set the type to "o" for MSDOS
|
||||
- Set the disk to be bootable "a"
|
||||
- Make a new primary partition "n" followed by "n" Accept the remaining as default.
|
||||
- Use "w" to commit the changes and exit the tool.
|
||||
|
||||
Now create a filesystem in the newly created partition.
|
||||
|
||||
```shell
|
||||
sudo mkfs -t ext2 /dev/sdX1
|
||||
```
|
||||
|
||||
## Prepare for GRUB install
|
||||
Create a mount point
|
||||
|
||||
```shell
|
||||
mkdir /tmp/mysub
|
||||
```
|
||||
|
||||
Mount the new parition
|
||||
|
||||
```shell
|
||||
sudo mount /dev/sdX1 /tmp/myusb
|
||||
```
|
||||
|
||||
Create a folder named "boot" on the drive
|
||||
|
||||
```shell
|
||||
sudo mkdir /tmp/myusb/boot
|
||||
```
|
||||
|
||||
## Install GRUB
|
||||
Install GRUB by running the grub-install script
|
||||
|
||||
```shell
|
||||
sudo grub-install --boot-directory=/tmp/myusb/boot /dev/sdX
|
||||
```
|
||||
|
||||
Update the GRUB configuration
|
||||
|
||||
```shell
|
||||
sudo update-grub --output=/tmp/myusb/boot/grub/grub.cfg
|
||||
```
|
||||
|
||||
## Test
|
||||
Finally unmount and reboot
|
||||
```shell
|
||||
sudo unmount /tmp/myusb
|
||||
sudo reboot
|
||||
```
|
Reference in New Issue
Block a user