<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: balaji s</title>
    <description>The latest articles on DEV Community by balaji s (@rsbalaji).</description>
    <link>https://dev.to/rsbalaji</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4017638%2Fe92be38e-0ada-4b81-89d0-62ea3e272a31.png</url>
      <title>DEV Community: balaji s</title>
      <link>https://dev.to/rsbalaji</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rsbalaji"/>
    <language>en</language>
    <item>
      <title>Comparision Operator in Javascript</title>
      <dc:creator>balaji s</dc:creator>
      <pubDate>Thu, 27 Aug 2026 07:05:41 +0000</pubDate>
      <link>https://dev.to/rsbalaji/comparision-operator-in-javascript-3m2k</link>
      <guid>https://dev.to/rsbalaji/comparision-operator-in-javascript-3m2k</guid>
      <description>&lt;p&gt;Comparison operators compare the values of two operands and evaluate whether the&lt;br&gt;
statement they form is &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;. The following example uses the&lt;br&gt;
&lt;em&gt;strict equality&lt;/em&gt; operator (&lt;code&gt;===&lt;/code&gt;) to compare two operands: the expression&lt;br&gt;
&lt;code&gt;2 + 2&lt;/code&gt; and the value &lt;code&gt;4&lt;/code&gt;. Because the result of the expression and the number&lt;br&gt;
value &lt;code&gt;4&lt;/code&gt; are the same, this expression evaluates to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 + 2 === 4
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Type coercion and equality
&lt;/h2&gt;

&lt;p&gt;Two of the most frequently-used comparison operators are &lt;code&gt;==&lt;/code&gt; for loose equality&lt;br&gt;
and &lt;code&gt;===&lt;/code&gt; for strict equality. &lt;code&gt;==&lt;/code&gt; performs a loose comparison between two&lt;br&gt;
values by coercing the operands to matching data types, if possible. For&lt;br&gt;
example, &lt;code&gt;2 == "2"&lt;/code&gt; returns &lt;code&gt;true&lt;/code&gt;, even though the comparison is being made&lt;br&gt;
between a number value and a string value.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 == 2
&amp;gt; true

2 == "2"
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The same is true of &lt;code&gt;!=&lt;/code&gt;, which returns &lt;code&gt;true&lt;/code&gt; only if the operands being&lt;br&gt;
compared &lt;em&gt;aren't&lt;/em&gt; loosely equal.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 != 3
&amp;gt; true

2 != "2"
&amp;gt; false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Strict comparisons using &lt;code&gt;===&lt;/code&gt; or &lt;code&gt;!==&lt;/code&gt; don't perform type coercion. For a&lt;br&gt;
strict comparison to evaluate to &lt;code&gt;true&lt;/code&gt;, the values being compared must have the&lt;br&gt;
same data type. Because of this, &lt;code&gt;2 == "2"&lt;/code&gt; returns &lt;code&gt;true&lt;/code&gt;, but &lt;code&gt;2 === "2"&lt;/code&gt;&lt;br&gt;
returns &lt;code&gt;false&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 === 3
&amp;gt; false

2 === "2"
&amp;gt; false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;To remove any ambiguity that might result from auto-coercion, use &lt;code&gt;===&lt;/code&gt; whenever&lt;br&gt;
possible.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;Strictly equal&lt;/td&gt;
&lt;td&gt;2 === 2&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;!==&lt;/td&gt;
&lt;td&gt;Not strictly-equal&lt;/td&gt;
&lt;td&gt;2 !== "2"&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;==&lt;/td&gt;
&lt;td&gt;Equal (or "loosely equal")&lt;/td&gt;
&lt;td&gt;2 == "2"&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;!=&lt;/td&gt;
&lt;td&gt;Not equal&lt;/td&gt;
&lt;td&gt;2 != "3"&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;Greater than&lt;/td&gt;
&lt;td&gt;3 &amp;gt; 2&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;=&lt;/td&gt;
&lt;td&gt;Greater than or equal to&lt;/td&gt;
&lt;td&gt;2 &amp;gt;= 2&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&lt;/td&gt;
&lt;td&gt;Less than&lt;/td&gt;
&lt;td&gt;2 &amp;lt; 3&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;=&lt;/td&gt;
&lt;td&gt;Less than or equal to&lt;/td&gt;
&lt;td&gt;2 &amp;lt;= 3&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Truthy and falsy
&lt;/h2&gt;

&lt;p&gt;All values in JavaScript are implicitly &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;, and can be coerced to&lt;br&gt;
the corresponding boolean value---for example, by using the "loosely equal"&lt;br&gt;
comparator. A limited set of values coerce to &lt;code&gt;false&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;null&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;undefined&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NaN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;An empty string (&lt;code&gt;""&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All other values coerce to &lt;code&gt;true&lt;/code&gt;, including any string containing one or more&lt;br&gt;
characters and all nonzero numbers. These are commonly called "truthy" and&lt;br&gt;
"falsy" values.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"My string" == true
&amp;gt; true

100 == true
&amp;gt; true

0 == true
&amp;gt; false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Logical operators
&lt;/h2&gt;

&lt;p&gt;Use the logical AND (&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;), OR (&lt;code&gt;||&lt;/code&gt;), and NOT (&lt;code&gt;!&lt;/code&gt;) operators to control the flow of a script based on the evaluation of two or more conditional statements:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 === 3 || 5 === 5;
&amp;gt; true

2 === 2 &amp;amp;&amp;amp; 2 === "2"
&amp;gt; false

2 === 2 &amp;amp;&amp;amp; !"My string."
&amp;gt; false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A logical NOT (&lt;code&gt;!&lt;/code&gt;) expression negates the truthy or falsy value of an operand, evaluating to &lt;code&gt;true&lt;/code&gt; if the operand evaluates to &lt;code&gt;false&lt;/code&gt;, and &lt;code&gt;false&lt;/code&gt; if the operand evaluates to &lt;code&gt;true&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true
&amp;gt; true

!true
&amp;gt; false

!false
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Using the logical NOT operator (&lt;code&gt;!&lt;/code&gt;) in front of another data type, like a&lt;br&gt;
number or a string, coerces that value to a boolean and reverses the truthy or&lt;br&gt;
falsy value of the result.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"string"
&amp;gt; "string"

!"string"
&amp;gt; false

0
&amp;gt; 0

!0
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;It's common practice to use two NOT operators to quickly coerce data to its&lt;br&gt;
matching boolean value:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!!"string"
&amp;gt; true

!!0
&amp;gt; false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The logical AND and OR operators don't perform any coercion by themselves. They&lt;br&gt;
return the value of one of the two operands being evaluated, with the chosen&lt;br&gt;
operand determined by that evaluation.&lt;/p&gt;

&lt;p&gt;Logical AND (&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;) returns the first of its two operands only if that operand&lt;br&gt;
evaluates to &lt;code&gt;false&lt;/code&gt;, and the second operand otherwise. In comparisons that&lt;br&gt;
evaluate to boolean values, it returns &lt;code&gt;true&lt;/code&gt; only if the operands on both sides&lt;br&gt;
of the logical AND evaluate to &lt;code&gt;true&lt;/code&gt;. If either side evaluates to &lt;code&gt;false&lt;/code&gt;, it&lt;br&gt;
returns &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true &amp;amp;&amp;amp; false
&amp;gt; false

false &amp;amp;&amp;amp; true
&amp;gt; false

false &amp;amp;&amp;amp; false
&amp;gt; false

true &amp;amp;&amp;amp; true
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; is used with two non-boolean operands, the first operand is returned&lt;br&gt;
unchanged if it can be coerced to &lt;code&gt;false&lt;/code&gt;. If the first operand can be coerced&lt;br&gt;
to &lt;code&gt;true&lt;/code&gt;, the second operand is returned unchanged:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;false &amp;amp;&amp;amp; "My string"
&amp;gt; false

null &amp;amp;&amp;amp; "My string"
&amp;gt; null

"My string" &amp;amp;&amp;amp; false
&amp;gt; false

"My string" &amp;amp;&amp;amp; "My second string"
&amp;gt; "My second string"

2 === 2 &amp;amp;&amp;amp; "My string"
&amp;gt; "My string"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Logical OR (&lt;code&gt;||&lt;/code&gt;) returns the first of its two operands only if that operand&lt;br&gt;
evaluates to &lt;code&gt;true&lt;/code&gt;, and the second operand otherwise. In comparisons that&lt;br&gt;
evaluate to boolean values, this means it returns &lt;code&gt;true&lt;/code&gt; if either operand&lt;br&gt;
evaluates to &lt;code&gt;true&lt;/code&gt;, and if neither side evaluates to &lt;code&gt;true&lt;/code&gt;, it returns&lt;br&gt;
&lt;code&gt;false&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true || false
&amp;gt; true

false || true
&amp;gt; true

true || true
&amp;gt; true

false || false
&amp;gt; false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When using &lt;code&gt;||&lt;/code&gt; with two non-boolean operands, it returns the first operand&lt;br&gt;
unchanged if it could be coerced to &lt;code&gt;true&lt;/code&gt;. If the first operand can be coerced&lt;br&gt;
to &lt;code&gt;false&lt;/code&gt;, the second operand is returned unchanged:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;false || "My string"
&amp;gt; "My string"

null || "My string"
&amp;gt; "My string"

"My string" || false
&amp;gt; "My string"

"My string" || "My second string"
&amp;gt; "My string"

2 === 2 || "My string"
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Nullish coalescing operator
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://caniuse.com/mdn-javascript_operators_nullish_coalescing" rel="noopener noreferrer"&gt;Introduced in ES2020&lt;/a&gt;,&lt;br&gt;
the "nullish coalescing operator" (&lt;code&gt;??&lt;/code&gt;) returns the first operand only if that&lt;br&gt;
operand has any value other than &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;undefined&lt;/code&gt;. Otherwise, it returns&lt;br&gt;
the second operand.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;null ?? "My string"
&amp;gt; "My string"

undefined ?? "My string"
&amp;gt; "My string"

true ?? "My string";
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;??&lt;/code&gt; is similar to a logical OR, but stricter in how the first operand is&lt;br&gt;
evaluated. &lt;code&gt;||&lt;/code&gt; returns the second operand for any expression that can be&lt;br&gt;
coerced to &lt;code&gt;false&lt;/code&gt;, including &lt;code&gt;undefined&lt;/code&gt; and &lt;code&gt;null&lt;/code&gt;. &lt;code&gt;??&lt;/code&gt; returns the second&lt;br&gt;
operand only when the first operand is strictly equal to &lt;code&gt;null&lt;/code&gt; or &lt;code&gt;undefined&lt;/code&gt;,&lt;br&gt;
even if it could be coerced to &lt;code&gt;false&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 ?? "My string";
&amp;gt; 0

false ?? "My string";
&amp;gt; false

undefined ?? "My string";
&amp;gt; "My string"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Logical assignment operators
&lt;/h2&gt;

&lt;p&gt;Use assignment operators to assign the value of a second operator to a first&lt;br&gt;
operator. The most common example of this is a single equals sign (&lt;code&gt;=&lt;/code&gt;), used to&lt;br&gt;
assign a &lt;a href="https://web.dev/learn/javascript/data-types/variable#declaration" rel="noopener noreferrer"&gt;value to a declared variable&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Use logical assignment operators to conditionally assign a value to a variable&lt;br&gt;
based on the truthy or falsy value of that variable.&lt;/p&gt;

&lt;p&gt;The logical AND assignment (&lt;code&gt;&amp;amp;&amp;amp;=&lt;/code&gt;) operator evaluates the second operand and&lt;br&gt;
assigns to the first operand if the only if the first operand would evaluate to&lt;br&gt;
&lt;code&gt;true&lt;/code&gt;---effectively, "if the first operand is true, assign it the value of&lt;br&gt;
the second operand instead:"&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let myVariable = false;
myVariable &amp;amp;&amp;amp;= 2 + 2;
&amp;gt; false

myVariable = true;
myVariable &amp;amp;&amp;amp;= 2 + 2;
&amp;gt; 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The truthy or falsy value of the first operand determines whether an assignment&lt;br&gt;
is performed. However, trying to evaluate the first operand using a comparison&lt;br&gt;
operator results in a &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt; boolean, which can't be assigned a&lt;br&gt;
value:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let myVariable = 5;
myVariable &amp;gt; 2 &amp;amp;&amp;amp;= "My string"
&amp;gt; SyntaxError: Invalid left-hand side in assignment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The logical OR assignment (&lt;code&gt;||=&lt;/code&gt;) operator evaluates the second operand and&lt;br&gt;
assign to the first operand if the first operand evaluates to &lt;code&gt;false&lt;/code&gt;---&lt;br&gt;
effectively "if the first operand is false, assign it the value of the second&lt;br&gt;
operand instead:"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let myVariable = false;
myVariable ||= 2 + 2;
&amp;gt; 4

myVariable = true;
myVariable ||= 2 + 2;
&amp;gt; true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>javascript</category>
      <category>comparisionoperator</category>
      <category>operator</category>
    </item>
    <item>
      <title>Solved the Windows Shrink Volume Problem Using AOMEI Partition Assistant to Install Linux Mint</title>
      <dc:creator>balaji s</dc:creator>
      <pubDate>Sun, 12 Jul 2026 17:37:25 +0000</pubDate>
      <link>https://dev.to/rsbalaji/solved-the-windows-shrink-volume-problem-using-aomei-partition-assistant-to-install-linux-mint-4ed6</link>
      <guid>https://dev.to/rsbalaji/solved-the-windows-shrink-volume-problem-using-aomei-partition-assistant-to-install-linux-mint-4ed6</guid>
      <description>&lt;p&gt;Recently, I wanted to install Linux Mint Cinnamon alongside Windows 11 on my Samsung Galaxy Book2 Pro 360. Since my laptop had only a single &lt;strong&gt;C: drive&lt;/strong&gt;, I needed to shrink the Windows partition and create &lt;strong&gt;100 GB of unallocated space&lt;/strong&gt; for &lt;strong&gt;&lt;em&gt;Linux&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At first, I thought Windows Disk Management would be enough. However, I encountered one of the most common Windows partitioning errors:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1oz6ino7pczbmpswog77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1oz6ino7pczbmpswog77.png" alt=" " width="670" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You cannot shrink a volume beyond the point where any unmovable files are located.&lt;br&gt;
Although my C: drive had 147 GB of free space, Windows only allowed me to shrink 653 MB.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Problem Begins
&lt;/h2&gt;

&lt;p&gt;When I opened Disk Management &lt;strong&gt;Right Click C: → Shrink Volume&lt;/strong&gt; Windows calculated the available shrink space as only &lt;strong&gt;653 MB&lt;/strong&gt; instead of the expected 100 GB.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does This Happen?
&lt;/h2&gt;

&lt;p&gt;Windows stores several system files near the end of the partition.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page File (pagefile.sys)&lt;/li&gt;
&lt;li&gt;Hibernation File (hiberfil.sys)&lt;/li&gt;
&lt;li&gt;Master File Table (MFT)&lt;/li&gt;
&lt;li&gt;System Restore data&lt;/li&gt;
&lt;li&gt;NTFS Metadata&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Windows Disk Management cannot move these files.&lt;/p&gt;

&lt;p&gt;Even if available of free space exists, the partition cannot be shrunk beyond the last unmovable file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Tried Before Using AOMEI
&lt;/h2&gt;

&lt;p&gt;Before installing any third-party software, I tried every recommended Windows method.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Disabled Hibernation
&lt;/h3&gt;

&lt;p&gt;Opened Command Prompt as Administrator.&lt;br&gt;
&lt;code&gt;powercfg -h off&lt;/code&gt;&lt;br&gt;
This removed the hibernation file.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Disabled Page File
&lt;/h3&gt;

&lt;p&gt;Open &lt;strong&gt;run&lt;/strong&gt; window  &lt;code&gt;sysdm.cpl&lt;/code&gt; Navigated to&lt;/p&gt;

&lt;p&gt;Advanced&lt;br&gt;
→ Performance&lt;br&gt;
→ Settings&lt;br&gt;
→ Advanced&lt;br&gt;
→ Virtual Memory&lt;/p&gt;

&lt;p&gt;It disabled paging temporarily then Restarted Windows.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Disabled System Protection
&lt;/h3&gt;

&lt;p&gt;Opened &lt;strong&gt;System Protection&lt;/strong&gt; then Turned off Restore Points temporarily.&lt;br&gt;
again Restarted Windows.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Defragmented Free Space
&lt;/h3&gt;

&lt;p&gt;Run &lt;code&gt;defrag C: /X&lt;/code&gt; The result showed:&lt;br&gt;
Largest Free Space = 65.92 GB&lt;br&gt;
Although free space became more contiguous, Windows still could not shrink the partition to the required size.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Tried Safe Mode
&lt;/h3&gt;

&lt;p&gt;Enabled Safe Mode using &lt;code&gt;msconfig&lt;/code&gt;then Restarted Windows.&lt;br&gt;
Unfortunately,&lt;br&gt;
Disk Management still could not shrink the partition because the Master File Table (MFT) remained unmovable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Chose AOMEI Partition Assistant
&lt;/h2&gt;

&lt;p&gt;At this point, it became clear that Windows Disk Management had reached its limitations.&lt;/p&gt;

&lt;p&gt;I researched several partition management tools and selected AOMEI Partition Assistant Standard for the following reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free for personal use&lt;/li&gt;
&lt;li&gt;User-friendly interface&lt;/li&gt;
&lt;li&gt;Supports resizing the Windows system partition&lt;/li&gt;
&lt;li&gt;Can move unmovable system files&lt;/li&gt;
&lt;li&gt;Uses Windows PE mode for safe partition operations&lt;/li&gt;
&lt;li&gt;Excellent success rate reported by users&lt;/li&gt;
&lt;li&gt;Supports GPT/UEFI systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike Windows Disk Management, AOMEI performs partition operations before Windows fully loads, allowing it to relocate files that Windows normally locks.&lt;/p&gt;

&lt;h2&gt;
  
  
  AOMEI Partition Assistant Tool
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Download and install&lt;br&gt;
AOMEI Partition Assistant Standard from following link: &lt;a href="https://www.aomeitech.com/llyy/download/aomei-partition-software.html" rel="noopener noreferrer"&gt;https://www.aomeitech.com/llyy/download/aomei-partition-software.html&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Select shrinking disk from partition list&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvt9ioo3os7mdvzzu1nyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvt9ioo3os7mdvzzu1nyf.png" alt=" " width="799" height="418"&gt;&lt;/a&gt;&lt;br&gt;
Select &lt;strong&gt;Resize/Move Partition&lt;/strong&gt; from properties&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Drag the partition slider.&lt;br&gt;
I reduced the partition size from 457 GB to 357 GB&lt;br&gt;
This creates &lt;strong&gt;100 GB Unallocated Space&lt;/strong&gt; &lt;br&gt;
Finally I review the pending operation then layout should show&lt;br&gt;
C: 357 GB&lt;br&gt;
Unallocated: 100 GB&lt;br&gt;
Nothing is changed yet because my linux installation take to choose format options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fscuzote9xnwh7z7ro5ll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fscuzote9xnwh7z7ro5ll.png" alt=" " width="799" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4
&lt;/h3&gt;

&lt;p&gt;AOMEI detects that the Windows system partition is being modified.&lt;/p&gt;

&lt;p&gt;It displays Restart into Windows PE Mode&lt;br&gt;
so Select that one then Click -&amp;gt; OK&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2d7sxno11e8gv0ibf003.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2d7sxno11e8gv0ibf003.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5
&lt;/h3&gt;

&lt;p&gt;The computer restarts. Instead of loading Windows immediately, AOMEI boots into its own Windows PE environment. It safely moves the unmovable system files. This process took around 10–20 minutes on my SSD.&lt;br&gt;
After restart windows I am opening Disk Management it showed 100GB unallocated exactly as my planned.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Linux Mint
&lt;/h2&gt;

&lt;p&gt;Instead of formatting the new space as NTFS, I left it as Unallocated.&lt;br&gt;
Then I booted using the Linux Mint USB installer.&lt;br&gt;
During installation, I selected &lt;code&gt;Something Else&lt;/code&gt; option&lt;br&gt;
Created an &lt;code&gt;Ext4&lt;/code&gt; partition using the &lt;strong&gt;100 GB unallocated space&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Reused the existing EFI System Partition without formatting it.&lt;/p&gt;

&lt;p&gt;Finally my installation completed successfully.&lt;br&gt;
Now my laptop have dual boots:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Windows 11&lt;/li&gt;
&lt;li&gt;Linux Mint Cinnamon&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>linuxinstallation</category>
      <category>dualboot</category>
      <category>windowspartition</category>
    </item>
  </channel>
</rss>
