# Installation Checklist

## Common

* set up SSH key and GitHub authorization (if it's personal computer)
* set up local Git user, email and alias information
* disable daily software upgrade (avoid race condition on apt lock)
* install ROS and create a new ROS workspace `catkin_ws`
* install VS Code IDE
  * x86-64 architecture: install from Ubuntu software center or download from [official website](https://code.visualstudio.com/)
  * arm architecture: download customized deb (latest release) from [this GitHub repository](https://github.com/toolboc/vscode)
  * after installation, add ROS, CMake extensions
* install terminator and set up config (see [this repo](https://github.com/hanzheteng/code_browsing)), set scroll-back lines to 10000 as in Gnome
* install commonly used software as follows

```
sudo apt install vim nmap net-tools exfat-fuse exfat-utils 
sudo apt install openssh-server xrdp hardinfo xdotool tmux tmuxp
sudo apt install git chromium-browser simplescreenrecorder
sudo apt install python3-catkin-tools
```

* set up shell alias (a few examples as follows)

```
alias max="xdotool key ctrl+super+Up"
alias four="max && xdotool key ctrl+shift+e && xdotool key ctrl+shift+o && xdotool key alt+Left && xdotool key ctrl+shift+o && xdotool key alt+Up"
alias jac="ssh -X administrator@jackal"
alias jacw="ssh -X administrator@jackalw"
```

* Install Slack, Zoom, Teamviewer, CloudCompare, SimpleScreenRecorder, etc. (GNOME has a default screenshot software.)
* Set up CloudCompare and Open3D Viewer as the default program to open `.pcd` files.
* Install languages: settings -> manage installed languages -> install new language -> reboot -> add input sources (intelligent pinyin).&#x20;

## Ubuntu 18

* add "new file" option to right click menu
  * by command `touch ~/Templates/"Untitled Document"`
* fix Gazebo ignition bug&#x20;
  * open file `~/.ignition/fuel/config.yaml` and replace the url inside from `https://api.ignitionfuel.org` to `https://api.ignitionrobotics.org`.
* Install Unity desktop ([link](https://askubuntu.com/questions/1124712/can-i-use-ubuntu-18-04-with-unity))
  * `sudo apt install ubuntu-unity-desktop`&#x20;
  * choose `lightdm` display manager
  * use `sudo dpkg-reconfigure lightdm` to reset display manager if needed
  * `sudo shutdown -r now` to restart the computer

## Ubuntu 20

* enable scale factor in display

```shell
sudo apt install python-is-python3  # for python in /usr/bin/env
```

## VS Code

* settings
  * lock to launch bar
  * window zoom level
  * editor font size
  * editor ruler set to 120
  * add folders to workspace
  * enable Wrap Tabs
* extensions
  * Github Co-Pilot
  * ROS (include C/C++ and Python)
  * CMake (for highlight)
  * CMake Tools (for C++ IntelliSense)
    * set "configurationProvider": "ms-vscode.cmake-tools"
    * run command CMake: Configure
    * add folder to .gitignore
  * Markdown Preview GitHub Styling `Ctrl + Shift + V`
  * reStructuredText
  * Remote SSH ([double SSH setup](https://blog.csdn.net/daqianc/article/details/122855698))
  * Doxygen Documentation Generator
  * Better C++ Syntax
* shortcuts
  * open terminal by default set to `` Ctrl + ` ``
  * maximize/minimize terminal window
    * set "View: Toggle Maximized Panel" to `Ctrl + Shift + M`
  * split terminal window
    * set "Terminal: Split Terminal" to `Ctrl + Shift + E`
* comments
  * C++ IntelliSense jump back to function `Ctrl + Alt + -`
  * C++ IntelliSense is not working on arm architecture

## Dual Boot on XPS 13

Tested on Dell XPS Plus 13 (9320) with Windows 11 OS pre-installed, and BIOS version 2.3.0.

Mostly following this article to install: <https://infra.engineer/miscellaneous/3-how-to-dual-boot-windows-10-and-ubuntu-on-dell-xps-13>

Although there are some differences in BIOS interface and Win11/Win10, basic steps are the same.&#x20;

Operations in Windows 11:

* Shrink Windows volume to create unallocated space for Ubuntu, using Disk Management.
* Turn off BitLocker or Drive Encryption.
* Turn off Fastboot (go to control panel, power settings, "choose what the power buttons do", and then uncheck "Turn on fast startup (Recommended)")

Changes in BIOS:

* Press F2 to get into BIOS Setup, or F12 and then select BIOS Setup.
* Disable "Secure Boot" (under "Boot Configuration")
* Change Fastboot behavior to "Thorough" (under "Pre-boot Behavior" tab)
* No BIOS settings found for USB Boot Support, but I guess this has been enabled by default. No influence on the following installation steps.
* Save and Exit.

Change from RAID to AHCI (NVME SSD also needs to do this)

* Get into Windows system, run Command Prompt as Administrator
* Type command `bcdedit /set safeboot minimal` (the {current} variable doesn't work for me, removing it works fine); this will force the next Windows boot into safe mode
* Restart and get into BIOS settings, find SATA/NVME Operation (under "Storage" tab) and change from RAID to AHCI
* Save and reboot and get into Windows, run Command Prompt as Administrator, and type command `bcdedit /deletevalue safeboot` to disable safe mode boot.
* Restart and get into Windows in normal mode, make sure everything is ok here.
* Note: if you don't do these commands for safe mode boot, the system will get into blue screen and never be able to boot up. If you don't change this RAID settings, the USB installation drive won't be able to find unallocated space on the disk to install Ubuntu.

Install Ubuntu

* Prepare a USB drive for Ubuntu installation
* Plug in the USB drive, boot and get into BIOS settings, find "Boot Sequence" under "Boot Configuration", move this USB drive to the first one in boot sequence.
* Restart and the system will boot into this USB drive, and then start installation as normal.
* Better to select "Install third-party software for graphics and Wi-Fi hardware"

Upgrade Linux Kernel on Ubuntu 20 (to use WiFi on XPS 13)

```bash
# install 5.19.13
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline
sudo mainline install 5.19.13
# fix libc6 and libssl3 errors (or ignore them)
sudo apt update
sudo apt upgrade
sudo apt install --reinstall linux-firmware
sudo apt install --install-recommends linux-generic-hwe-20.04
sudo apt install --install-recommends linux-generic-hwe-20.04-edge
# finish installation
sudo update-grub
sudo reboot
uname -a
```

The default kernel version on Ubuntu 20 is 5.15, which does not support this XPS wifi hardware yet. We need to use the default kernel version on Ubuntu 22 (5.19.13) in order to use WiFi on this XPS.&#x20;
