From 08809fb0c7adf6b2ffd1a44228d0111c808b4b9f Mon Sep 17 00:00:00 2001 From: Minfei Huang Date: Fri, 5 Dec 2014 14:46:15 +0800 Subject: [PATCH] module-setup: Use proper ethernet device name in 2nd kernel For ethX, it may fail to setup the network in the 2nd kernel due to the mapping of ethernet device name and MAC changes. The commit(ba7660f37e792be082b7e0c9e73b76647db5e902) has fixed this issue by add the prefix "kdump-" before ethX. But the network will fail to work in the static route mode because of this commit. Here is the config which is used to setup the static route: rd.route=192.168.201.215:192.168.200.137:eth1 Obviously, the static route config comtains the ethX. But the network device names kdump-ethX in the 2nd kernel, so the static route config will fail to execute. To fix it, we should identify the network device. Add the prefix "kdump-" before the ethX in the static route config to setup it successfully in the 2nd kernel. Signed-off-by: Minfei Huang Acked-by: WANG Chao Acked-by: Baoquan He --- dracut-module-setup.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh index 9299b5d..f0d3311 100755 --- a/dracut-module-setup.sh +++ b/dracut-module-setup.sh @@ -209,20 +209,25 @@ kdump_setup_znet() { get_routes() { local _netdev="$1" _target="$2" - local _route + local _route _nexthop _route=`/sbin/ip route get to $_target 2>&1` - if /sbin/ip route get to $_target | grep -q "via"; - then +# +# in the same subnet region, following is the route format +# _route='192.168.200.137 dev eth1 src 192.168.200.129 +# cache ' +# +# in the different subnet region, following is the route format +# _route='192.168.201.215 via 192.168.200.137 dev eth1 src 192.168.200.129 +# cache ' +# + if `echo $_route | grep -q "via"`; then # route going to a different subnet via a router - echo $_route | awk '{printf("rd.route=%s:%s:%s\n", $1, $3, $5)}' \ - >> ${initdir}/etc/cmdline.d/45route-static.conf - else - # route going to a different subnet though directly connected - echo $_route | awk '{printf("rd.route=%s::%s\n", $1, $3)}' \ - >> ${initdir}/etc/cmdline.d/45route-static.conf + _nexthop=`echo $_route | awk '{print $3}'` fi + _netdev=$(kdump_setup_ifname $_netdev) + echo "rd.route=$_target:$_nexthop:$_netdev" >> ${initdir}/etc/cmdline.d/45route-static.conf } # Setup dracut to bringup a given network interface