|
| 1 | +--- |
| 2 | +title: Arm Linux Migration Tools |
| 3 | + |
| 4 | +draft: true |
| 5 | + |
| 6 | +additional_search_terms: |
| 7 | +- migration |
| 8 | +- porting |
| 9 | +- analysis |
| 10 | +- containers |
| 11 | +- arm64 |
| 12 | +- aarch64 |
| 13 | +- sysreport |
| 14 | +- skopeo |
| 15 | +- llvm-mca |
| 16 | +- topdown-tool |
| 17 | +- kubearchinspect |
| 18 | +- migrate-ease |
| 19 | +- aperf |
| 20 | +- bolt |
| 21 | +- papi |
| 22 | +- perf |
| 23 | +- processwatch |
| 24 | +- check-image |
| 25 | +- porting-advisor |
| 26 | + |
| 27 | +minutes_to_complete: 20 |
| 28 | + |
| 29 | +author: Jason Andrews |
| 30 | + |
| 31 | +official_docs: https://github.com/arm/arm-linux-migration-tools |
| 32 | + |
| 33 | +test_images: |
| 34 | +- ubuntu:latest |
| 35 | +test_maintenance: true |
| 36 | +test_link: null |
| 37 | + |
| 38 | +layout: installtoolsall |
| 39 | +tool_install: true |
| 40 | +multi_install: false |
| 41 | +multitool_install_part: false |
| 42 | +weight: 1 |
| 43 | +--- |
| 44 | + |
| 45 | +[Arm Linux Migration Tools](https://github.com/arm/arm-linux-migration-tools) provides a comprehensive collection of thirteen essential utilities to help you migrate applications from x86 to Arm Linux systems. Instead of installing and managing each tool individually, you get everything you need in a single, streamlined installation. |
| 46 | + |
| 47 | +This package includes code analysis, performance, and migration tools such as Sysreport, Skopeo, LLVM Machine Code Analyzer, Telemetry Solution, KubeArchInspect, Migrate Ease, Aperf, BOLT, PAPI, Perf, Process Watch, Check Image, and Porting Advisor for Graviton. These tools help you assess application compatibility, analyze performance characteristics, optimize code layout, and identify potential issues before and after migration. |
| 48 | + |
| 49 | +Whether you're migrating containerized applications, analyzing system performance, or optimizing binaries for Arm processors, this package simplifies your migration workflow by providing all the necessary tools through a unified installation process, saving you time on setup and configuration. |
| 50 | + |
| 51 | +## What are the tools included in Arm Linux Migration Tools? |
| 52 | + |
| 53 | +The Arm Linux Migration Tools package includes the following utilities: |
| 54 | + |
| 55 | +| Tool | Purpose | Test Command | Documentation | |
| 56 | +|------|---------|--------------|---------------| |
| 57 | +| Sysreport | System analysis and reporting tool for performance and configuration checks | `sysreport --help` | [Get ready for performance analysis with Sysreport](/learning-paths/servers-and-cloud-computing/sysreport/) | |
| 58 | +| Skopeo | Container image inspection and manipulation tool | `skopeo --help` | [Skopeo install guide](/install-guides/skopeo/) | |
| 59 | +| LLVM Machine Code Analyzer | Machine Code Analyzer for performance analysis of compiled code | `llvm-mca --help` | [Learn about LLVM Machine Code Analyzer](/learning-paths/cross-platform/mca-godbolt/) | |
| 60 | +| Telemetry Solution | Performance analysis methodology tool for Linux systems | `topdown-tool --help` | [Telemetry Solution](/install-guides/topdown-tool/) | |
| 61 | +| KubeArchInspect | Kubernetes architecture inspection and reporting tool | `kubearchinspect --help` | [Migrate containers to Arm using KubeArchInspect](/learning-paths/servers-and-cloud-computing/kubearchinspect/) | |
| 62 | +| Migrate Ease | Migration assistance tool for analyzing and porting workloads | `migrate-ease-cpp --help` | [Migrate applications to Arm servers using migrate-ease](/learning-paths/servers-and-cloud-computing/migrate-ease/) | |
| 63 | +| Aperf | Performance monitoring tool for Linux systems | `aperf --help` | [Aperf install guide](/install-guides/aperf/) | |
| 64 | +| BOLT | Binary optimization and layout tool (part of LLVM) | `llvm-bolt --help` | [BOLT install guide](/install-guides/bolt/) | |
| 65 | +| PAPI | Performance API for accessing hardware performance counters | `papi_avail -h` | [PAPI install guide](/install-guides/papi/) | |
| 66 | +| Perf | Linux performance analysis tool for profiling and tracing | `perf --help` | [Perf install guide](/install-guides/perf/) | |
| 67 | +| Process Watch | Process monitoring tool for Linux systems | `processwatch -h` | [Run Process watch on your Arm machine](/learning-paths/servers-and-cloud-computing/processwatch/) | |
| 68 | +| Check Image | Checks a container image for Arm architecture support | `check-image -h` | [Check Image on learn.arm.com](/learning-paths/cross-platform/docker/check-images/) | |
| 69 | +| Porting Advisor for Graviton | Tool to assess portability of software to Arm architecture | `porting-advisor --help` | [Porting Advisor install guide](/install-guides/porting-advisor/) | |
| 70 | + |
| 71 | +Each tool serves a specific purpose in the migration process, from analyzing system configurations and performance characteristics to optimizing binaries and checking container compatibility. |
| 72 | + |
| 73 | +## Prerequisites |
| 74 | + |
| 75 | +Before installing the Arm Linux Migration Tools, verify that your system meets the following requirements: |
| 76 | + |
| 77 | +### Architecture verification |
| 78 | + |
| 79 | +This package is designed for Arm Linux systems. Verify that you're running on the Arm architecture: |
| 80 | + |
| 81 | +```bash |
| 82 | +uname -m |
| 83 | +``` |
| 84 | + |
| 85 | +The output should be `aarch64`. If you see `x86_64` or another architecture, this package isn't compatible with your system. |
| 86 | + |
| 87 | +### Operating system support |
| 88 | + |
| 89 | +The Arm Linux Migration Tools package supports Ubuntu 22.04 and Ubuntu 24.04. |
| 90 | + |
| 91 | +### Required dependencies |
| 92 | + |
| 93 | +Some tools in the package require additional software to function properly: |
| 94 | + |
| 95 | +Docker or Podman is required for Migrate Ease. You can install Docker with the [Docker install guide](/install-guides/docker/docker-engine). |
| 96 | + |
| 97 | +Alternatively, if you prefer Podman over Docker, install it with the Ubuntu package manager: |
| 98 | + |
| 99 | +```bash |
| 100 | +sudo apt install -y podman |
| 101 | +``` |
| 102 | + |
| 103 | +## Installation |
| 104 | + |
| 105 | +The Arm Linux Migration Tools package provides multiple installation methods to suit different preferences and environments. Choose the method that works best for your setup. |
| 106 | + |
| 107 | +### Option 1: Single-line installation |
| 108 | + |
| 109 | +The fastest way to install the Arm Linux Migration Tools is with the automated installation script. This method downloads and installs the latest release automatically: |
| 110 | + |
| 111 | +```bash |
| 112 | +curl -sSL https://github.com/arm/arm-linux-migration-tools/releases/download/v3/install.sh | sudo bash |
| 113 | +``` |
| 114 | + |
| 115 | +The command above performs the following actions: |
| 116 | +- Downloads the installation script `install.sh` from the GitHub repository |
| 117 | +- Automatically detects your system architecture |
| 118 | +- Installs required dependencies using the package manager |
| 119 | +- Downloads the appropriate release package for your system |
| 120 | +- Installs the included tools in `/opt/arm-migration-tools/` |
| 121 | +- Creates wrapper scripts in `/usr/local/bin` for easy access |
| 122 | +- Configures a Python virtual environment with the required dependencies |
| 123 | + |
| 124 | +The installation script prompts for your password when `sudo` access is required for copying files to system directories. |
| 125 | + |
| 126 | +If this is your first install, review the script before running it with `curl | bash`. |
| 127 | + |
| 128 | +```console |
| 129 | +curl -fsSL https://github.com/arm/arm-linux-migration-tools/releases/download/v3/install.sh | more |
| 130 | +``` |
| 131 | + |
| 132 | +This command displays the script so you can verify what it does before executing it. |
| 133 | + |
| 134 | +### Option 2: Download and install |
| 135 | + |
| 136 | +For manual installation, download the release tar file for a specific version from GitHub and install it. |
| 137 | + |
| 138 | +Download the latest release file with `wget`: |
| 139 | + |
| 140 | +```bash |
| 141 | +wget https://github.com/arm/arm-linux-migration-tools/releases/download/v3/arm-migration-tools-v3-arm64.tar.gz |
| 142 | +``` |
| 143 | + |
| 144 | +Extract the downloaded tar file to a temporary directory: |
| 145 | + |
| 146 | +```bash |
| 147 | +tar xvfz arm-migration-tools-v3-arm64.tar.gz |
| 148 | +``` |
| 149 | + |
| 150 | +Navigate to the extracted directory and run the installation script: |
| 151 | + |
| 152 | +```bash |
| 153 | +cd arm-linux-migration-tools |
| 154 | +sudo ./scripts/install.sh |
| 155 | +``` |
| 156 | + |
| 157 | +After successful installation, you can remove the downloaded files: |
| 158 | + |
| 159 | +```bash |
| 160 | +cd .. |
| 161 | +rm -rf arm-linux-migration-tools arm-migration-tools-v3-arm64.tar.gz |
| 162 | +``` |
| 163 | + |
| 164 | +### Option 3: Build from source |
| 165 | + |
| 166 | +To build the Arm Linux Migration Tools from source code, clone the repository and build it locally. This method is useful for developers who want to modify the tools or contribute to the project. |
| 167 | + |
| 168 | +First, clone the GitHub repository to your local system: |
| 169 | + |
| 170 | +```bash |
| 171 | +git clone https://github.com/arm/arm-linux-migration-tools.git |
| 172 | +``` |
| 173 | + |
| 174 | +Change to the cloned repository directory: |
| 175 | + |
| 176 | +```bash |
| 177 | +cd arm-linux-migration-tools |
| 178 | +``` |
| 179 | + |
| 180 | +Run the build script to compile and prepare all tools: |
| 181 | + |
| 182 | +```console |
| 183 | +./scripts/build.sh |
| 184 | +``` |
| 185 | + |
| 186 | +The build script performs the following tasks: |
| 187 | +- Downloads and compiles source code for the tools that have source |
| 188 | +- Resolves dependencies and builds binaries |
| 189 | +- Creates the directory structure for installation |
| 190 | +- Prepares a Python virtual environment and installs required packages |
| 191 | +- Validates that all tools build successfully |
| 192 | + |
| 193 | +After a successful build, install the tools to your system: |
| 194 | + |
| 195 | +```console |
| 196 | +sudo ./scripts/install.sh |
| 197 | +``` |
| 198 | + |
| 199 | +The install script: |
| 200 | +- Installs the locally built tools to `/opt/arm-migration-tools/` |
| 201 | +- Creates wrapper scripts in `/usr/local/bin` for easy access |
| 202 | +- Sets up the Python virtual environment with the built dependencies |
| 203 | +- Configures permissions for all installed components |
| 204 | + |
| 205 | +After successful installation, you can clean up the build directory: |
| 206 | + |
| 207 | +```bash |
| 208 | +cd .. |
| 209 | +rm -rf arm-linux-migration-tools |
| 210 | +``` |
| 211 | + |
| 212 | +## Installation locations |
| 213 | + |
| 214 | +After successful installation, the Arm Linux Migration Tools are organized in a structured directory layout that separates the core tools, dependencies, and user-accessible commands. Understanding this structure helps you troubleshoot issues and manage the installation effectively. |
| 215 | + |
| 216 | +All tools and their dependencies are installed in the `/opt/arm-migration-tools/` directory. Review the details of the software installed there. |
| 217 | + |
| 218 | +For easy access from anywhere in your system, wrapper scripts are also installed in `/usr/local/bin/`, making it easier to invoke each tool. View the available executables there. |
| 219 | + |
| 220 | +### Python virtual environment |
| 221 | + |
| 222 | +A Python virtual environment is located at `/opt/arm-migration-tools/venv/` and contains all Python packages required by the migration tools. |
| 223 | + |
| 224 | +The wrapper scripts in `/usr/local/bin` use this environment automatically, but you can activate it with: |
| 225 | + |
| 226 | +```bash |
| 227 | +source /opt/arm-migration-tools/venv/bin/activate |
| 228 | +``` |
| 229 | + |
| 230 | +You can view the installed Python packages in the virtual environment: |
| 231 | + |
| 232 | +```bash |
| 233 | +/opt/arm-migration-tools/venv/bin/pip list |
| 234 | +``` |
| 235 | + |
| 236 | +The output is similar to: |
| 237 | + |
| 238 | +```output |
| 239 | +Package Version Editable project location |
| 240 | +------------------------- ---------- -------------------------------------------------------------- |
| 241 | +altgraph 0.17.3 |
| 242 | +annotated-types 0.7.0 |
| 243 | +attrs 25.4.0 |
| 244 | +blinker 1.9.0 |
| 245 | +certifi 2025.11.12 |
| 246 | +charset-normalizer 3.4.4 |
| 247 | +click 8.3.1 |
| 248 | +Flask 3.1.2 |
| 249 | +gitdb 4.0.12 |
| 250 | +GitPython 3.1.45 |
| 251 | +idna 3.11 |
| 252 | +itsdangerous 2.2.0 |
| 253 | +Jinja2 3.1.4 |
| 254 | +jsonschema 4.25.1 |
| 255 | +jsonschema-specifications 2025.9.1 |
| 256 | +lxml 5.3.2 |
| 257 | +markdown-it-py 4.0.0 |
| 258 | +MarkupSafe 2.1.3 |
| 259 | +mdurl 0.1.2 |
| 260 | +packaging 23.1 |
| 261 | +pip 25.3 |
| 262 | +progressbar33 2.4 |
| 263 | +pycryptodome 3.19.1 |
| 264 | +pydantic 2.11.7 |
| 265 | +pydantic_core 2.33.2 |
| 266 | +Pygments 2.19.2 |
| 267 | +pyparsing 3.1.1 |
| 268 | +python-magic 0.4.27 |
| 269 | +referencing 0.37.0 |
| 270 | +requests 2.32.5 |
| 271 | +rich 14.1.0 |
| 272 | +rpds-py 0.30.0 |
| 273 | +ruamel.yaml 0.18.16 |
| 274 | +ruamel.yaml.clib 0.2.15 |
| 275 | +smmap 5.0.2 |
| 276 | +topdown-tool 1.0.0 /opt/arm-migration-tools/telemetry-solution/tools/topdown_tool |
| 277 | +typing_extensions 4.15.0 |
| 278 | +typing-inspection 0.4.2 |
| 279 | +urllib3 2.6.2 |
| 280 | +uuid 1.30 |
| 281 | +Werkzeug 3.1.4 |
| 282 | +XlsxWriter 3.1.2 |
| 283 | +``` |
| 284 | + |
| 285 | +## Verify installation |
| 286 | + |
| 287 | +After installing the Arm Linux Migration Tools, verify that all tools are working correctly. The package includes a comprehensive test script to validate your installation. |
| 288 | + |
| 289 | +Execute the included test script to verify all 13 tools are properly installed and functional: |
| 290 | + |
| 291 | +```bash |
| 292 | +/opt/arm-migration-tools/scripts/arm-migration-tools-test.sh |
| 293 | +``` |
| 294 | + |
| 295 | +The script performs a basic invocation of each tool to confirm it runs. |
| 296 | + |
| 297 | +{{% notice Note %}} |
| 298 | +If you get an error on Topdown Tool you need to run the commands below. |
| 299 | +```console |
| 300 | +sudo sh -c "echo -1 > /proc/sys/kernel/perf_event_paranoid" |
| 301 | +sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict" |
| 302 | +``` |
| 303 | +More information about the options is in the [Linux Perf install guide](/install-guides/perf/). |
| 304 | +{{% /notice %}} |
| 305 | + |
| 306 | +### Next steps |
| 307 | + |
| 308 | +Now that you have successfully installed and verified the Arm Linux Migration Tools, you're ready to begin. |
| 309 | + |
| 310 | +You can review the [Arm Migration overview](/migration/) for additional guidance. |
| 311 | + |
| 312 | +## Uninstall |
| 313 | + |
| 314 | +If you need to remove the Arm Linux Migration Tools from your system, use the included uninstall script. This process completely removes all installed components and restores your system to its previous state. |
| 315 | + |
| 316 | +To uninstall the Arm Linux Migration Tools package, run the uninstall script: |
| 317 | + |
| 318 | +```bash |
| 319 | +sudo /opt/arm-migration-tools/scripts/uninstall.sh |
| 320 | +``` |
| 321 | + |
| 322 | +The uninstall script performs the following tasks: |
| 323 | +- Removes all tools from `/opt/arm-migration-tools/` directory |
| 324 | +- Deletes all wrapper scripts from `/usr/local/bin/` |
| 325 | +- Removes the Python virtual environment and all installed dependencies |
0 commit comments