Re: Help on Modifying a Driver on Native Linux
Julia Lawall <[email protected]> Wed, 2 Apr 2025 07:05:50 +0200
| Newsgroups | dev.linux.lists.outreachy |
|---|---|
| Message-ID | <[email protected]> |
Sent from my iPhone > On 2 Apr 2025, at 00:36, Richard Akintola <[email protected]> wrote: > > I learnt that e1000 didn't work because the driver is included in VM > images and not on Linux native, and a variant of e1000 on Linux native > is the e1000e driver. > > Below are some of the drivers that one could modify on Linux native > in order have the "I can modify Linux kernel\n" effect. > Super. I will update the tutorial accordingly. > Using the e1000e driver > > 1. vim drivers/net/ethernet/intel/e1000e/netdev.c > > 2. Find the probe function > > static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > { > struct net_device *netdev; > struct e1000_adapter *adapter; > struct e1000_hw *hw; > const struct e1000_info *ei = e1000_info_tbl[ent->driver_data]; > resource_size_t mmio_start, mmio_len; > resource_size_t flash_start, flash_len; > static int cards_found; > u16 aspm_disable_flag = 0; > u16 eeprom_data = 0; > u16 eeprom_apme_mask = E1000_EEPROM_APME; > int bars, i, err; > s32 ret_val = 0; > > printk(KERN_DEBUG "I can modify the Linux kernel\n"); > > 3. Save the file and recompile the kernel, you should see the text > printed when you run the "dmesg | less" command after rebooting. > > Or you could use the bluetooth driver > > 1. vim drivers/bluetooth/btusb.c > > 2. Find the probe function > > static int btusb_probe(struct usb_interface *intf, > const struct usb_device_id *id) > { > struct usb_endpoint_descriptor *ep_desc; > struct gpio_desc *reset_gpio; > struct btusb_data *data; > struct hci_dev *hdev; > unsigned ifnum_base; > int i, err, priv_size; > > printk(KERN_DEBUG "I can modify the Linux Kernel\n"); > > > 3. Save the file and recompile the kernel, you should see the text > printed when you run the "dmesg | less" command after rebooting. > > I hope this helps. >