[proofplan]
We construct a continuous family of inner products on $E$ by patching together local inner products from trivializations using a partition of unity. Each trivialization $\varphi_\alpha: E|_{U_\alpha} \to U_\alpha \times \mathbb{R}^d$ transports the standard inner product on $\mathbb{R}^d$ to a local inner product on $E|_{U_\alpha}$. We then average these local inner products with a partition of unity subordinate to the trivializing cover. The result is a positive-definite symmetric bilinear form on each fiber because a convex combination of inner products (with at least one positive coefficient) is again an inner product.
[/proofplan]
[step:Transport the standard inner product via local trivializations]
Since $X$ is compact Hausdorff and $E \to X$ is a vector bundle, there exists a finite trivializing cover $\{U_\alpha\}_{\alpha=1}^m$ with trivializations
\begin{align*}
\varphi_\alpha: E|_{U_\alpha} \xrightarrow{\sim} U_\alpha \times \mathbb{R}^d.
\end{align*}
For each $\alpha$, define a local inner product on $E|_{U_\alpha}$ by pulling back the standard inner product on $\mathbb{R}^d$: for $x \in U_\alpha$ and $u, v \in E_x$, set
\begin{align*}
\langle u, v \rangle_\alpha := \pi_2(\varphi_\alpha(u)) \cdot \pi_2(\varphi_\alpha(v)),
\end{align*}
where $\pi_2: U_\alpha \times \mathbb{R}^d \to \mathbb{R}^d$ is the projection onto the second factor and $\cdot$ denotes the standard Euclidean inner product on $\mathbb{R}^d$. Since $\varphi_\alpha$ restricts to a linear isomorphism $E_x \xrightarrow{\sim} \mathbb{R}^d$ on each fiber, $\langle \cdot, \cdot \rangle_\alpha$ is a positive-definite symmetric bilinear form on $E_x$ for each $x \in U_\alpha$. The map $(u, v) \mapsto \langle u, v \rangle_\alpha$ is continuous on $E|_{U_\alpha} \otimes E|_{U_\alpha}$ because it is the composition of continuous maps ($\varphi_\alpha$, $\pi_2$, and the Euclidean inner product).
[guided]
Every trivialization identifies each fiber with $\mathbb{R}^d$, and $\mathbb{R}^d$ carries the standard inner product. Transporting this inner product back to $E_x$ via $\varphi_\alpha$ gives a legitimate inner product on the fiber. The problem is that different trivializations give different inner products (they are related by the transition functions, which are arbitrary invertible linear maps). We cannot simply use one trivialization because $E$ may not be globally trivial. The solution is to use a partition of unity to average the local inner products, which is the next step.
[/guided]
[/step]
[step:Average the local inner products using a partition of unity]
Since $X$ is compact Hausdorff, it is paracompact, so there exists a partition of unity $\{\lambda_\alpha\}_{\alpha=1}^m$ subordinate to $\{U_\alpha\}_{\alpha=1}^m$: each $\lambda_\alpha: X \to [0, 1]$ is continuous, $\operatorname{supp}(\lambda_\alpha) \subset U_\alpha$, and $\sum_{\alpha=1}^m \lambda_\alpha(x) = 1$ for all $x \in X$.
Define the global inner product: for $x \in X$ and $u, v \in E_x$,
\begin{align*}
\langle u, v \rangle_x := \sum_{\alpha=1}^m \lambda_\alpha(x) \langle u, v \rangle_\alpha,
\end{align*}
where we set $\lambda_\alpha(x) \langle u, v \rangle_\alpha := 0$ when $x \notin U_\alpha$ (which is consistent since $\lambda_\alpha(x) = 0$ outside $U_\alpha$).
[guided]
Why does it make sense to set $\lambda_\alpha(x) \langle u, v \rangle_\alpha = 0$ when $x \notin U_\alpha$? The inner product $\langle u, v \rangle_\alpha$ is only defined for $x \in U_\alpha$, but $\lambda_\alpha(x) = 0$ for $x \notin \operatorname{supp}(\lambda_\alpha) \subset U_\alpha$, so the product $\lambda_\alpha(x) \langle u, v \rangle_\alpha$ is zero wherever the inner product is undefined. More precisely, on the open set $U_\alpha$ the function $x \mapsto \lambda_\alpha(x) \langle u, v \rangle_\alpha$ is continuous, and on the open set $X \setminus \operatorname{supp}(\lambda_\alpha)$ it is identically zero. These two open sets cover $X$, and the function agrees on the overlap (it is zero there), so by the gluing lemma the extension is continuous.
[/guided]
[/step]
[step:Verify that $\langle \cdot, \cdot \rangle$ is a continuous family of inner products]
We verify three properties for each fiber $E_x$.
**Bilinearity and symmetry.** For each $x \in X$, the map $(u, v) \mapsto \langle u, v \rangle_x$ is a finite sum of scalar multiples of bilinear symmetric forms, hence bilinear and symmetric.
**Positive definiteness.** Let $u \in E_x$ with $u \neq 0$. Since $\sum_\alpha \lambda_\alpha(x) = 1$, at least one $\alpha_0$ satisfies $\lambda_{\alpha_0}(x) > 0$, and for this $\alpha_0$ we have $x \in U_{\alpha_0}$ and $\langle u, u \rangle_{\alpha_0} > 0$ (since $\langle \cdot, \cdot \rangle_{\alpha_0}$ is positive definite on $E_x$). All other terms in the sum are non-negative (each $\lambda_\alpha(x) \geq 0$ and each $\langle u, u \rangle_\alpha \geq 0$). Therefore
\begin{align*}
\langle u, u \rangle_x = \sum_{\alpha=1}^m \lambda_\alpha(x) \langle u, u \rangle_\alpha \geq \lambda_{\alpha_0}(x) \langle u, u \rangle_{\alpha_0} > 0.
\end{align*}
**Continuity.** The map $E \otimes E \to \mathbb{R}$ defined by $(u, v) \mapsto \langle u, v \rangle_{\pi(u)}$ is a finite sum of products of continuous functions: $\lambda_\alpha \circ \pi$ is continuous and each $(u, v) \mapsto \langle u, v \rangle_\alpha$ is continuous on $E|_{U_\alpha} \otimes E|_{U_\alpha}$. Since the sum is locally finite (in fact globally finite), the total map is continuous.
[guided]
The crucial point for positive definiteness is that a convex combination of positive semidefinite forms, with at least one strictly positive coefficient multiplying a positive definite form, is positive definite. This is the standard argument for constructing global objects (metrics, connections, etc.) from local ones on paracompact spaces. Over $\mathbb{R}$, the space of inner products on a vector space is a convex cone, so convex combinations stay in the cone.
Note that this argument would fail for, say, symplectic forms: the space of non-degenerate skew-symmetric forms is not convex, so one cannot average local symplectic forms to obtain a global one. The convexity of the space of inner products is what makes the partition-of-unity argument work.
[/guided]
[/step]