diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index 704f4cc709ee19751aab7f26909f86ec47090025..720fac9109557a204de5b6ce5e96f5afc185bc13 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -389,7 +389,6 @@ stages:
             --no-build-nodejs
             --no-build-java
             -p:OnlyPackPlatformSpecificPackages=true
-            -p:AssetManifestFileName=aspnetcore-Linux_x64.xml
             $(_BuildArgs)
             $(_InternalRuntimeDownloadArgs)
         displayName: Run build.sh
@@ -458,17 +457,26 @@ stages:
       jobName: Linux_arm64_build
       jobDisplayName: "Build: Linux ARM64"
       agentOs: Linux
-      buildArgs:
-        --arch arm64
-        --all
-        --pack
-        --no-build-nodejs
-        --no-build-java
-        -p:OnlyPackPlatformSpecificPackages=true
-        -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml
-        $(_BuildArgs)
-        $(_PublishArgs)
-        $(_InternalRuntimeDownloadArgs)
+      steps:
+      - script: ./eng/build.sh
+            --ci
+            --arch arm64
+            --pack
+            --all
+            --no-build-nodejs
+            --no-build-java
+            -p:OnlyPackPlatformSpecificPackages=true
+            $(_BuildArgs)
+            $(_InternalRuntimeDownloadArgs)
+        displayName: Run build.sh
+      - script: git clean -xfd src/**/obj/;
+          ./dockerbuild.sh rhel --ci --nobl --arch arm64 --build-installers --no-build-deps --no-build-nodejs
+          -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=rpm
+          -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml
+          $(_BuildArgs)
+          $(_PublishArgs)
+          $(_InternalRuntimeDownloadArgs)
+        displayName: Build RPM installers
       installNodeJs: false
       artifacts:
       - name: Linux_arm64_Logs
diff --git a/eng/Build.props b/eng/Build.props
index d8e8b0bc82407787a0214f589c02fb7dae84b26f..4b25c964ecee401ef3b196f4a286a72a109e465a 100644
--- a/eng/Build.props
+++ b/eng/Build.props
@@ -103,7 +103,7 @@
         <ProjectToBuild Include="$(RepoRoot)src\Installers\Windows\SharedFrameworkLib\SharedFrameworkLib.wixproj" AdditionalProperties="Platform=arm64" />
       </ItemGroup>
 
-      <ItemGroup Condition="'$(BuildInstallers)' == 'true' AND '$(TargetRuntimeIdentifier)' == 'linux-x64'">
+      <ItemGroup Condition="'$(BuildInstallers)' == 'true' AND ('$(TargetRuntimeIdentifier)' == 'linux-x64' OR '$(TargetRuntimeIdentifier)' == 'linux-arm64')">
         <ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'deb' "
                         Include="$(RepoRoot)src\Installers\Debian\**\*.*proj" />
         <ProjectToBuild Condition=" '$(LinuxInstallerType)' == 'rpm' "
diff --git a/src/Installers/Rpm/Directory.Build.props b/src/Installers/Rpm/Directory.Build.props
index 17abde691b66278282b8caf6425c414cf23c2d48..b436fc469b10fb94daf0fa4ba17e21e4f8e9193b 100644
--- a/src/Installers/Rpm/Directory.Build.props
+++ b/src/Installers/Rpm/Directory.Build.props
@@ -9,9 +9,15 @@
     <IntermediateOutputPath>$(IntermediateOutputPath)$(TargetRuntimeIdentifier)\</IntermediateOutputPath>
     <OutputPath>$(InstallersOutputPath)</OutputPath>
 
+    <CblMariner1VersionSuffix>-cm.1</CblMariner1VersionSuffix>
+    <CblMariner2VersionSuffix>-cm.2</CblMariner2VersionSuffix>
+
     <!-- All installers are shipping assets. -->
     <IsShipping>true</IsShipping>
     <IsPackable>true</IsPackable>
-  </PropertyGroup>
 
+    <!-- RPM files are platform-specific and should be named appropriately. -->
+    <RpmArch Condition=" '$(TargetArchitecture)' == 'x64' ">x64</RpmArch>
+    <RpmArch Condition=" '$(TargetArchitecture)' == 'arm64' ">aarch64</RpmArch>
+  </PropertyGroup>
 </Project>
diff --git a/src/Installers/Rpm/Directory.Build.targets b/src/Installers/Rpm/Directory.Build.targets
index ebbdb0babab8469f5ace78c534ae51b9d5614e62..44b87eea5ac589f6887f4e1253173797696a0172 100644
--- a/src/Installers/Rpm/Directory.Build.targets
+++ b/src/Installers/Rpm/Directory.Build.targets
@@ -18,7 +18,7 @@
   <Target Name="PrepareForBuild">
     <MakeDir Directories="$(IntermediateOutputPath)" />
 
-    <Error Text="Currently only linux-x64 is supported by Rpm installers." Condition=" '$(TargetRuntimeIdentifier)' != 'linux-x64' " />
+    <Error Text="Currently only linux-x64 and linux-arm64 are supported by Rpm installers." Condition=" '$(TargetRuntimeIdentifier)' != 'linux-x64' AND '$(TargetRuntimeIdentifier)' != 'linux-arm64'" />
 
     <Error Text="Missing required property: RpmPackageInstallRoot" Condition=" '$(RpmPackageInstallRoot)' == '' " />
     <Error Text="Missing required property: PackageContentRoot" Condition=" '$(PackageContentRoot)' == '' " />
@@ -37,6 +37,11 @@
   <Target Name="Pack" />
 
   <Target Name="RpmBuild" DependsOnTargets="$(RpmBuildDependsOn)">
+    <PropertyGroup>
+      <CblMariner1TargetPath>$(InstallersOutputPath)$(CblMarinerBaseName)$(CblMariner1VersionSuffix)$(CblMarinerExtension)</CblMariner1TargetPath>
+      <CblMariner2TargetPath>$(InstallersOutputPath)$(CblMarinerBaseName)$(CblMariner2VersionSuffix)$(CblMarinerExtension)</CblMariner2TargetPath>
+    </PropertyGroup>
+
     <!-- Create layout: Create changelog -->
     <PropertyGroup>
       <ChangeLogProps>DATE=$([System.DateTime]::UtcNow.ToString(ddd MMM dd yyyy))</ChangeLogProps>
@@ -51,10 +56,6 @@
     <GenerateFileFromTemplate TemplateFile="$(MSBuildThisFileDirectory)changelog.in" OutputPath="$(GeneratedChangeLog)" Properties="$(ChangeLogProps)" />
 
     <!-- Run fpm -->
-    <PropertyGroup>
-      <RpmArch Condition=" '$(TargetArchitecture)' == 'x64' ">amd64</RpmArch>
-    </PropertyGroup>
-
     <ItemGroup>
       <FpmArgs Include="--verbose" />
       <FpmArgs Include="--input-type=dir" />
@@ -79,12 +80,12 @@
     <Exec Command="scl enable rh-ruby25 'fpm @(FpmArgs,' ')'" />
 
     <Copy SourceFiles="$(TargetPath)"
-          DestinationFiles="$(CblMarinerTargetPath)"
+          DestinationFiles="$(CblMariner1TargetPath)"
           OverwriteReadOnlyFiles="True"
           SkipUnchangedFiles="False"
           UseHardlinksIfPossible="False" />
 
-    <Message Text="$(TargetPath) -> $(CblMarinerTargetPath)" Importance="high" />
+    <Message Text="$(TargetPath) -> $(CblMariner1TargetPath)" Importance="high" />
 
     <Copy SourceFiles="$(TargetPath)"
           DestinationFiles="$(CblMariner2TargetPath)"
diff --git a/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj b/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj
index e24ebf037af145813b856413479bd6ad245f1430..5e0427aea7f8beaa35061fba0579f362d83b5c3c 100644
--- a/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj
+++ b/src/Installers/Rpm/Runtime/Rpm.Runtime.rpmproj
@@ -1,5 +1,5 @@
 <!--
-  This project produces a generic RPM installer for Linux x64 platforms only.
+  This project produces a generic RPM installer for Linux x64/arm64 platforms only.
 -->
 <Project DefaultTargets="Build">
   <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
@@ -12,11 +12,9 @@
   <Import Project="..\Rpm.Runtime.Common.targets" />
 
   <PropertyGroup>
-    <TargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-x64.rpm</TargetFileName>
-    <CblMarinerTargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-cm.1-x64.rpm</CblMarinerTargetFileName>
-    <CblMariner2TargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-cm.2-x64.rpm</CblMariner2TargetFileName>
+    <TargetFileName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)-$(RpmArch).rpm</TargetFileName>
     <TargetPath>$(InstallersOutputPath)$(TargetFileName)</TargetPath>
-    <CblMarinerTargetPath>$(InstallersOutputPath)$(CblMarinerTargetFileName)</CblMarinerTargetPath>
-    <CblMariner2TargetPath>$(InstallersOutputPath)$(CblMariner2TargetFileName)</CblMariner2TargetPath>
+    <CblMarinerBaseName>$(RuntimeInstallerBaseName)-$(SharedFxVersion)</CblMarinerBaseName>
+    <CblMarinerExtension>-$(RpmArch).rpm</CblMarinerExtension>
   </PropertyGroup>
 </Project>
diff --git a/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj b/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj
index 76ef621aa84dc781da454033adf28455e98d2f9f..a29db936bd7946dac58b94c596e30747f6c8a548 100644
--- a/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj
+++ b/src/Installers/Rpm/TargetingPack/Rpm.TargetingPack.rpmproj
@@ -29,12 +29,10 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
 
   <PropertyGroup>
-    <TargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion).rpm</TargetFileName>
-    <CblMarinerTargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)-cm.1.rpm</CblMarinerTargetFileName>
-    <CblMariner2TargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)-cm.2.rpm</CblMariner2TargetFileName>
+    <TargetFileName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)-$(RpmArch).rpm</TargetFileName>
     <TargetPath>$(InstallersOutputPath)$(TargetFileName)</TargetPath>
-    <CblMarinerTargetPath>$(InstallersOutputPath)$(CblMarinerTargetFileName)</CblMarinerTargetPath>
-    <CblMariner2TargetPath>$(InstallersOutputPath)$(CblMariner2TargetFileName)</CblMariner2TargetPath>
+    <CblMarinerBaseName>$(TargetingPackInstallerBaseName)-$(TargetingPackVersion)</CblMarinerBaseName>
+    <CblMarinerExtension>-$(RpmArch).rpm</CblMarinerExtension>
 
     <PackageVersion>$(TargetingPackVersionPrefix)</PackageVersion>