[proofplan]
We construct an explicit embedding $f: E \hookrightarrow X \times \mathbb{R}^N$ using a finite trivializing cover (which exists by compactness), a subordinate partition of unity, and the fiberwise projection maps from each local trivialization. The map $f$ sends $v \in E_x$ to the tuple $(\pi(v), \lambda_1(x) f_1(v), \ldots, \lambda_n(x) f_n(v))$, where the $f_i$ are the local trivializing projections and the $\lambda_i$ are partition of unity functions. We verify that $f$ is a continuous injective bundle map which is a linear injection on each fiber, and that the image is a subbundle.
[/proofplan]
[step:Choose a finite trivializing cover and a subordinate partition of unity]
Let $d$ denote the rank of the vector bundle $\pi: E \to X$. Since $X$ is compact Hausdorff, it is paracompact. Choose a finite open cover $\{U_1, \ldots, U_n\}$ of $X$ such that $E$ trivializes over each $U_i$, with trivializations
\begin{align*}
\varphi_i: E|_{U_i} \xrightarrow{\;\sim\;} U_i \times \mathbb{R}^d.
\end{align*}
For each $i$, let $f_i: E|_{U_i} \to \mathbb{R}^d$ be the composition of $\varphi_i$ with the projection onto the second factor:
\begin{align*}
f_i: E|_{U_i} \xrightarrow{\varphi_i} U_i \times \mathbb{R}^d \xrightarrow{\mathrm{pr}_2} \mathbb{R}^d.
\end{align*}
The map $f_i$ restricts to a linear isomorphism $f_i|_{E_x}: E_x \xrightarrow{\sim} \mathbb{R}^d$ on each fiber $E_x$ with $x \in U_i$.
Let $\{\lambda_1, \ldots, \lambda_n\}$ be a partition of unity subordinate to $\{U_1, \ldots, U_n\}$, so each $\lambda_i: X \to [0, 1]$ is continuous, $\operatorname{supp}(\lambda_i) \subseteq U_i$, and $\sum_{i=1}^n \lambda_i(x) = 1$ for all $x \in X$.
[guided]
Compactness of $X$ is used in two essential ways: first, to extract a finite trivializing cover from the open cover provided by the local triviality of $E$, and second, to guarantee the existence of a partition of unity subordinate to that finite cover. A compact Hausdorff space is paracompact, so partitions of unity exist for any open cover.
The finiteness of the cover is critical because the embedding map we construct will land in $\mathbb{R}^{dn}$. An infinite cover would require an infinite-dimensional target, which would not give an embedding into a trivial bundle of finite rank.
[/guided]
[/step]
[step:Define the embedding map $f: E \to X \times \mathbb{R}^{dn}$]
Set $N := dn$. Define
\begin{align*}
f: E &\to X \times \mathbb{R}^N \\
v &\mapsto \bigl(\pi(v),\; \lambda_1(\pi(v)) f_1(v),\; \lambda_2(\pi(v)) f_2(v),\; \ldots,\; \lambda_n(\pi(v)) f_n(v)\bigr),
\end{align*}
where $\lambda_i(\pi(v)) f_i(v)$ is defined to be $0 \in \mathbb{R}^d$ whenever $\pi(v) \notin U_i$. This extension is continuous because $\lambda_i$ vanishes outside $U_i$, and on $U_i$ the product $\lambda_i \cdot f_i$ is the composition of continuous maps.
The map $f$ is a bundle map covering the identity on $X$: the first component of $f(v)$ is $\pi(v)$, so $f$ maps each fiber $E_x$ into the fiber $\{x\} \times \mathbb{R}^N$ of the trivial bundle.
[guided]
The idea behind the construction is to "spread" each vector $v \in E_x$ across $n$ copies of $\mathbb{R}^d$, weighted by the partition of unity. The weighting by $\lambda_i$ serves two purposes: it makes the map globally well-defined (by extending $f_i$ by zero outside $U_i$), and it ensures injectivity (because at each point $x$, at least one $\lambda_i(x) > 0$, so the corresponding component $\lambda_i(x) f_i(v)$ retains full information about $v$).
Why not simply use a single trivialization? Because no single $U_i$ covers all of $X$, and the trivializations on different patches do not agree on overlaps. The partition of unity blends them into a single global map.
[/guided]
[/step]
[step:Verify that $f$ is a linear injection on each fiber]
Fix $x \in X$ and consider the restriction $f|_{E_x}: E_x \to \{x\} \times \mathbb{R}^N$. For $v \in E_x$:
\begin{align*}
f|_{E_x}(v) = \bigl(x,\; \lambda_1(x) f_1(v),\; \ldots,\; \lambda_n(x) f_n(v)\bigr).
\end{align*}
**Linearity**: Each $f_i|_{E_x}$ is linear (it is the second component of the linear trivialization $\varphi_i$), and multiplication by the scalar $\lambda_i(x)$ preserves linearity. Therefore $f|_{E_x}$ is a linear map from $E_x$ to $\mathbb{R}^N$.
**Injectivity**: Suppose $f|_{E_x}(v) = f|_{E_x}(0)$ for some $v \in E_x$. Then $\lambda_i(x) f_i(v) = 0$ for all $i$. Since $\{\lambda_i\}$ is a partition of unity, there exists some index $j$ with $\lambda_j(x) > 0$. For this $j$, we have $f_j(v) = 0$, and since $f_j|_{E_x}$ is a linear isomorphism (because $x \in U_j$), it follows that $v = 0$. Thus $f|_{E_x}$ is injective.
Since $f|_{E_x}$ is an injective linear map from the $d$-dimensional vector space $E_x$ into $\mathbb{R}^N$, it is a linear embedding of $E_x$ into $\mathbb{R}^N$.
[/step]
[step:Verify that $f$ is a topological embedding and the image is a subbundle]
Since $f$ is a continuous injective map from $E$ to $X \times \mathbb{R}^N$ which is a fiberwise linear injection covering the identity, it remains to show that $f$ is a homeomorphism onto its image and that $f(E)$ is a subbundle of $X \times \mathbb{R}^N$.
**$f$ is a homeomorphism onto its image**: Since $X$ is compact Hausdorff, the total space $E$ is Hausdorff. We claim $f$ is a closed map onto its image. Let $C \subseteq E$ be closed and $K \subseteq X$ compact. The preimage $\pi^{-1}(K)$ is compact (it is a closed subset of $E$ that maps to a compact subset of a Hausdorff space via the proper map $\pi$), so $C \cap \pi^{-1}(K)$ is compact, and its image under $f$ is compact, hence closed in $X \times \mathbb{R}^N$. Since $f$ is fiberwise injective and continuous, it is a homeomorphism onto $f(E)$.
**$f(E)$ is a subbundle**: For each $x \in X$, the image $f(E_x) \subseteq \{x\} \times \mathbb{R}^N$ is a $d$-dimensional linear subspace. To see that these subspaces vary continuously (i.e., form a subbundle), choose $j$ with $\lambda_j(x) > 0$. On the open set $V_j := \{\lambda_j > 0\}$, the map $f|_{E|_{V_j}}$ has $j$-th component $\lambda_j \cdot f_j$, which is a fiberwise isomorphism onto its image. This provides a local trivialization of $f(E)$ over $V_j$, showing that $f(E)$ is locally trivial and hence a vector subbundle of $X \times \mathbb{R}^N$.
[guided]
The properness of $\pi$ deserves comment. For a vector bundle over a compact space, the projection is proper: the preimage of a compact set $K \subseteq X$ is the restriction $E|_K$, which is a vector bundle over a compact space and hence has compact total space (it is a closed subset of $E$ and can be covered by finitely many trivializing charts, each giving a homeomorphism to $U_i \cap K \times \mathbb{R}^d$, which is bounded in each chart after intersecting with a compact set).
The subbundle verification is the key subtlety. We need not just that $f(E)$ is a set-theoretic union of $d$-dimensional subspaces, but that the subspaces fit together continuously. The argument via $V_j = \{\lambda_j > 0\}$ works because on $V_j$, the component $\lambda_j f_j$ is a fiberwise isomorphism (since $\lambda_j(x) > 0$ and $f_j|_{E_x}$ is an isomorphism), so the image is locally a trivial $d$-plane subbundle.
[/guided]
[/step]